2020/2021
Разработка приложений на платформе Java
Статус:
Общеуниверситетский факультатив
Когда читается:
1, 2 модуль
Охват аудитории:
для всех
Преподаватели:
Рожков Михаил Сергеевич
Язык:
русский
Кредиты:
3
Контактные часы:
28
Программа дисциплины
Аннотация
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов, изучающих дисциплину «Разработка приложений на платформе Java» образовательным стандартом федерального государственного автономного образовательного учреждения высшего профессионального образования национального исследовательского университета «Высшая школа экономики».
Цель освоения дисциплины
- Сформировать алгоритмическое мышление
- Сформировать навыки проектирования приложений с использованием возможностей платформы Java
- Сформировать навыки разработки веб-приложений с использованием возможностей платформы Java
- Сформировать навыки командной работы над проектом
Планируемые результаты обучения
- Знает основы кодирования и машинного представления данных
- Знает основы языка программирования Java
- Знает управляющие конструкции в Java
- Умеет реализовывать алгоритмы на Java
- Знает принципы ООП применительно к языку Java
- Владеет базовыми пакетами и классами Java SE API
- Знает многопоточность в Java
- Знает особенности платформы Java
- Умеет работа с БД в JAVA SE
- Знает основы протоколы сетевого взаимодействия
- Владеет основами HTML, CSS
- Владеет основами javaScript
- Умеет применять паттерны проектирования
- Владеет основами Unit-тестирования
- Владеет основами Spring Framework
- Владеет системой сборки проектов Maven
- Знает этапы ЖЦ разработки ПО
Содержание учебной дисциплины
- Тема 1 Информатика, машинное представление данных, кодирование, основы алгоритмов• вычисление в теории информации; • компьютерное представление данных (двоичная система исчисления, числовые данные, текст, цвета, изображения, анимация, видео); • абстракция данных; • юникод; • понятие алгоритма; • эффективность алгоритмов; • псевдокод; • основные абстракции языков программирования; • языки программирования; • редакторы исходного кода; • среды разработки; • машинный код; • абстрактность алгоритмов; • специфика работы Junior Java Developer.
- Тема 2. Основы Java, типы данных, переменные и константы, операции, массивы в Java• синтаксис языка Java; • способы комментирования кода; • преобразование псевдокода в машинный код; • виртуальные машины; • проблема компиляции кода, байт-код; • виды ошибок; • управление оперативной памятью • типы данных целых чисел; • типы данных вещественных чисел; • переполнение данных; • логический тип данных; • символьный тип данных; • управляющие символы; • строковые литералы в Java; • переменные; • константы; • области видимости переменных и констант; • автоматическое преобразование типов; • приведение типов; • продвижение типов; • арифметические операции; • инкремент и декремент; • логические операции сравнения; • поразрядные операции; • операция присваивания; • приоритет операций; • массивы.
- Тема 3. Управляющие конструкции в Java• условный оператор If; • оператор выбора switch; • тернарная условная операция; • цикл с предусловием; • цикл с постусловием; • цикл for; • цикл for each; • бесконечные циклы; • управление циклами с помощью операторов break и continue.
- Тема 4. Реализация алгоритмов в Java• инструменты отладки; • алгоритм сортировки пузырьком; • алгоритм сортировки выбором; • сортировка слиянием; • сложность алгоритмов сортировки; • ссылочные типы данных; • значение Null; • выделение и освобождение памяти; • строковый тип данных; • способы передачи параметров; • концептуальное представление хранения данных приложения в памяти.
- Тема 5. Объектно-ориентированное программирование в Java• понятие класса и объекта, абстракция; • классы-обертки простых типов данных; • особенности работы с простыми и ссылочными типами данных в Java; • особенности управления символьными литералами в Java; • методы классов; • статические члены класса; • консольный ввод/вывод; • класс Arrays; • перечисления; • пакеты Java; • инкапсуляция, наследование, полиморфизм; • интерфейсы; • абстрактные классы; • вложенные классы.
- Тема 6. Базовые пакеты и классы Java SE API• пакеты Java.lang, Java.util; • изменяемые массивы, ArrayList, List, Vector; • обобщения (generics); • связанные массивы (Stack, Dequeue, LinkedList); • ассоциативные массивы, HashMap; • отсортированные ассоциативные массивы; • коллекции типа Множество; • исключения; • потоки ввода-вывода; • объектные потоки, сериализация; • аннотации; • сборка мусора; • локальные классы; • анонимные классы; • лямбда-выражения; • реактивное программирование в Java; • регулярные выражения, ключевые метасимволы и конструкции; • регулярные выражения в Java, классы Pattern и Match.
- Тема 7. Многопоточность в Java• конкурентность и потоки; • проблемы многопоточного программирования, синхронизация потоков; • атомарные операции; • взаимоблокировки; • проблема голодания и перегрузки потоков; • синхронные методы; • изменяемые и неизменяемые объекты в многопоточной среде; • явные блокировки потоков в Java; • исполнители потоков; • пулы потоков; • алгоритмы Fork/Join в многопоточной среде; • использование коллекций в многопоточной среде; • атомарные переменные в Java; • использование генератора случайных чисел в многопоточной среде.
- Тема 8. Среда исполнения Java, особенности платформы Java• понятие среды исполнения; • свойства среды исполнения; • переменные среды исполнения; • менеджер безопасности Java; • ключевые характеристики платформы Java; • ключевые характеристики языка программирования Java; • версии платформы Java, их состав.
- Тема 9. Работа с базами данных в Java SE, язык SQL• модели данных; • реляционная алгебра; • оптимизация логической схемы реляционной базы данных; • проектирование моделей данных; • ограничения целостности; • обеспечение безопасности данных; • многопользовательская работа с базой данных; • SQL: основные типы данных; • SQL: создание, удаление, модификация структур хранения данных; • SQL: первичные и внешние ключи; • SQL: индексы; • SQL: добавление, удаление и модификация данных; • SQL: выборка данных; • SQL: соединение таблиц; • SQL: объединение таблиц; • система управления базами данных; • оптимизация баз данных и запросов; • JDBC API.
- Тема 10. Основные протоколы сетевого взаимодействия• TCP/IP; • URL и DNS; • HTTP; • анализ взаимодействия по HTTP протоколу в браузере; • статусы HTTP.
- Тема 11. Основы HTML, CSS• HTML; • создание HTML-страниц; • отображение изображений в HTML-страницах; • отображение гиперссылок в HTML-страницах; • форматирование текста в HTML; • заголовки в HTML; • таблицы в HTML; • валидация верстки HTML; • списки в HTML; • передача параметров через URL; • формы в HTML; • формальный язык описания внешнего вида документа; • наследование стилей в CSS; • определение классов стилей в CSS; • применение стилей к стандартным элементам HTML; • определение стилей CSS в отдельных файлах; • контекстные селекторы; • соседние селекторы; • дочерние селекторы; • селекторы атрибутов; • универсальный селектор; • селекторы псевдоклассов; • группирование селекторов; • каскадирование стилей; • CSS flexbox.
- Тема 12. Основы JavaScript• роль JavaScript в web-разработке; • использование скриптов на HTML-страницах; • синтаксис JavaScript; • типы данных JS; • работа с примитивными типами данных JS; • работа с объектными типами данных JS; • преобразование типов JS; • переменные JS; • области видимости переменных JS; • инициализация массивов и объектов JS; • декларирование функций в JS; • операторы JS; • условные операторы JS; • операторы выбора JS; • циклы JS; • метки и переходы JS; • обработка исключительных ситуаций JS; • особенности объектов в JS; • особенности массивов в JS; • особенности функций в JS; • очередность выполнения скриптов в браузере; • структура веб-страницы в окне браузера; • работа с объектом Window; • диалоговые окна в браузере; • работа с многооконными страницами и фреймами в браузере; • объектная модель документа DOM; • поиск элементов HTML-документе; • изменение элементов и их атрибутов в HTML; • управление структурой DOM; • работа со стилями DOM; • обработка событий HTML-элементов.
- Тема 13. Паттерны проектирования• порождающие паттерны; • структурные паттерны; • поведенческие паттерны.
- Тема 14. Unit-тестирование• модульное тестирование; • правила написания модульных тестов; • проверяемые методы; • основы Test Driving Development.
- Тема 15. Spring Framework• основы Spring Framework; • Inversion of Control; • ресурсы; • валидация, связывание и преобразование типов; • Spring Expression Language (SpEL); • аспектно-ориентированное программирование; • буферы данных и кодеки.
- Тема 16. Сборка проекта• сборка проекта: Maven; • архетипы; • локальные репозитории; • POM-файл; • структура Maven-проекта; • добавление зависимостей; • добавление репозиториев; • добавление плагинов; • жизненные циклы и фазы.
- Тема 17. Процессы разработки ПО• жизненный цикл разработки ПО; • системы управления требованиями; • системы контроля версий: Git.
Элементы контроля
- Контактная работа
- Самостоятельная работа
- ЭкзаменОценка за экзамен формируется по накопленной оценке за период обучения в 1-2 модулях.
Промежуточная аттестация
- Промежуточная аттестация (2 модуль)0.4 * Контактная работа + 0.2 * Самостоятельная работа + 0.4 * Экзамен
Список литературы
Рекомендуемая основная литература
- Вязовик Н.А. - Программирование на Java - Национальный Открытый Университет "ИНТУИТ" - 2016 - 603с. - ISBN: - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/100405
Рекомендуемая дополнительная литература
- Пруцков, А.В. Программирование на языке Java. Введение в курс с примерами и практическими заданиями : учебник / А.В. Пруцков. — М. : КУРС, 2018.- 208 с. - ISBN 978-5-906923-51-6. - Режим доступа: http://znanium.com/catalog/product/1017180