Цели и задачи дисциплины
Преподаваемая дисциплина посвящена изучению современного языка и технологий программирования. Преподавание и изучение дисциплины следует рассматривать как полезную составляющую профессиональной подготовки.
Целью преподавания и изучения дисциплины является обучение студентов языку Java и разработке платформонезависимых программ для анализа данных.
Задачами дисциплины является приобретение знаний и умений по:
- основам объектно-ориентированного программирования на языке Java
- работе с библиотекой коллекций Java
- потоковой обработке данных (Stream API), чтение и запись данных из внешних файлов
- основам многопоточного и распределенного программирования
- разработке модульных (Unit) тестов
- основам работы с базами данных из Java
- работе с данными в распределенных отказоустойчивых системах на примере дистрибутива Cloudera Hadoop
- трансформации и анализу данных с помощью SQL-интерфейса Apache Hive
- визуализации данных с помощью библиотеки JFreeChart;
- обзору фреймворков MapReduce, Apache Spark – популярных компонентов современных архитектур для работы с большими данными
Краткое содержание дисциплины
Идеология и области применения языка Java. Среда разработки. Структура Java-приложения. Синтаксис языка Java. Типы данных, управляющие конструкции. Объекты и классы. Принципы разработки классов ООП. Инкапсуляция, наследование, полиморфизм, абстрактные классы. Интерфейсы. Обработка исключений. Стандартная библиотека классов java.lang, классы Object, Class, Syctem, Math, классы-оболочки, автоупаковка и автораспаковка, классы String, StringBuffer, StringBuilder, классы Exception, Error. Использование легковесных потоков. Обобщенное программирование. Шаблоны. Коллекции. Функциональные интерфейсы. Потоки ввода-вывода., сериализация объектов. Основы сетевого взаимодействия, интернационализация и локализация. Рефлексия. Взаимодействие с базами данных. Библиотека JFreeChart визуализации графиков. Проект Apache Hadoop для распределенных вычислений, платформа MapReduce. Применение фреймворка Apache Spark для анализа больших данных и машинного обучения.