Бакалавриат
2024/2025




Промышленное программирование на языке Java
Статус:
Курс по выбору (Экономика и анализ данных)
Направление:
01.03.02. Прикладная математика и информатика
Кто читает:
Базовая кафедра Яндекс
Где читается:
Факультет экономических наук
Когда читается:
3-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Литвиненко Егор Викторович
Язык:
русский
Кредиты:
6
Программа дисциплины
Аннотация
Курс знакомит слушателей с языком программирования Java на базовом уровне, как в теории, так и на практике. Большое внимание уделяется изучению особенностей языка Java по сравнению с другими объектно-ориентированными языками, основных принципов многопоточного программирования на языке Java. Будут затронуты фрагменты стандартной библиотеки включая коллекции, Stream API, ввод-вывод, средства для параллельного программирования.
Цель освоения дисциплины
- Цель курса - ознакомление студентов с основами языка Java, ключевыми подходами при его использовании в промышленной разработке программного обеспечения.
Планируемые результаты обучения
- "Знать о классе Object, его месте в иерарихии классов, знание о методах equals() hashCode() Знать 4 типа методов, знать отличие интерфейса от класса и абстрактного класса."
- "Знать о функциях и использовании Optional. Знать о функциях и использовании Streams в джава. Знать несколько вариантов коллекторов. "
- "Знать об основных интерфейсах и реализациях из джава коллекций. Уметь корректно использовать их в программах."
- "Знать об основных способах использования Enum-ов. Знать основные методы работы со строками и символами. Знать концепцию работы со временем и датой в Java"
- "Знать отличия разных реализаций списков, множеств, словарей. Знать как написать свою немодифицируемую версию существующей коллекции. Знать про контракт между hashmap и hashcode+equals"
- "Знать про ошибки конкурентной работы с итераторами Знать про механизм и алгоритмическую сложность реализации разных стандартных коллекций."
- "Знать схему неблокирующих локов, знать отношение happens-before Уметь рассказать принцип работы wait() notify()"
- "Знать что такое атомарная операция, какие операции атомарны, а какие нет. Знать о работе volatile модификатора. "
- "Уметь привести примеры из библиотеки джава интерфейсов и их реализаций, примеры использования методов класса Object и варианты их переопределения. Уметь привести пример использования приватного конструктора, утилитного класса."
- "Уметь рассказать о практиках применения Enum. Уметь рассказать об альтернативных способах конкатенации строки и их особенностей. Уметь рассказать как получить текущее время в любом часовом поясе."
- Знание основных объектов и их назначения в библиотеке джава IO
- Знание хороших практик работы с ресурсами, try with resources, особенности работы с файлами и сокетами.
- Знать о FunctionalInterface, об особенностях использования переменных вне контекста лямбда функции - effectively final, о полном (блочном) и упрощённом формате синтаксиса и ссылке на метод. Уметь привести пример использования функций.
- Знать о parallelStream и особенностях его работы, области применения
- знать о существований версий, отличий от С++, назвать 1 среду разработки
- Знать основную иерархию исключений, уметь объяснить их предназначение
- знать типы данных, синтаксис языка
- Умеет выбрать наиболее оптимальные типы данных, управляющие конструкции, циклы
- Уметь грамотно использовать типы, конструкции языка при решении простых задач
- уметь запускать простое приложение на java, владеть информацией о версиях языка, способах компиляции и управления памятью
- Уметь рассказать как используются методы класса Object, про отличия и сферы применения типов методов, про отличия и сферы применения интерфейсов, абстрактных классов и обычных классов.
- уметь рассказать про компиляцию приложений или модель памяти
- уметь рассказать про типы, синтаксис, основные конструкции
- Уметь создавать собственные исключения, уметь рассказать про философию исключений в Java
- Уметь эффективно использовать функциональное программирование при написании кода
Содержание учебной дисциплины
- Введение в Java
- Основы языка
- Объекты и импорты
- Строки, перечислимые типы, даты
- Исключения, иерархия, философия
- Коллекции
- Функциональное программирование
- Java Streams
- Ввод-вывод
- Многопоточность
- Аннотации
Промежуточная аттестация
- 2024/2025 4th module0.2 * Домашнее задание + 0.2 * Домашнее задание + 0.2 * Проект индивидуальный + 0.4 * Проект командный
Список литературы
Рекомендуемая основная литература
- Sharan, K. (2017). Beginning Java 9 Fundamentals : Arrays, Objects, Modules, JShell, and Regular Expressions (Vol. Second edition). [Berkeley, CA]: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1632186
Рекомендуемая дополнительная литература
- Вязовик, Н. А. Программирование на Java : учебное пособие / Н. А. Вязовик. — 2-е изд. — Москва : ИНТУИТ, 2016. — 603 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100405 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.