• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 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 module
    0.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). — Режим доступа: для авториз. пользователей.

Авторы

  • Федотов Станислав Николаевич
  • Фисенко Анна Сергеевна