Бакалавриат
2022/2023
Конструирование программного обеспечения
Статус:
Курс по выбору (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Кто читает:
Департамент программной инженерии
Где читается:
Факультет компьютерных наук
Когда читается:
2-й курс, 2-4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Александров Дмитрий Владимирович,
Зейналов Магеррам,
Калинин Антон Игоревич,
Кучук Александр Александрович,
Семянников Глеб Валерьевич,
Сосновский Григорий Михайлович,
Терлыч Никита Андреевич,
Хохлов Игорь Дмитриевич
Язык:
русский
Кредиты:
8
Контактные часы:
104
Программа дисциплины
Аннотация
Курс "Конструирование программного обеспечения" предназначен для студентов 2-го курса образовательной программы «Программная инженерия» факультета компьютерных наук НИУ ВШЭ (г.Москва) в целях изучения и освоения современных методов и средств создания программного обеспечения. Курс базируется на использовании Java-платформы - наиболее популярной среды разработки современного программного обеспечения. В результате освоения курса студенты приобретают знания современных подходов к разработке программного обеспечения и овладевают средствами совремменной Java-платформы в рамках Java SE (Java Standard Edition).
Цель освоения дисциплины
- Ознакомление слушателей с основами конструирования программного обеспечения и предоставление достаточного набора знаний и навыков для дальнейшего профессионального развития в этой области.
Планируемые результаты обучения
- Знакомство с синтаксисом и особенностями языка Java в сравнении с другими языками программирования
- Знание принципов объектно-ориентированного программирования, основных программных архитектур и паттернов проектирования программного обеспечения
- Владение лучшими практиками разработки и знание код-стайла
- Умение создавать клиент-серверные приложения с базами данных
- Знание принципов работы с многопоточностью
- Навыки применения инструментальных средств в разработке и тестировании
- Навыки разработки с применением Git
- Понимание особенностей сборки и развертывания программ
Содержание учебной дисциплины
- Введение. Парадигмы программирования. Синтаксис и семантика языка Java в сравнении с С++ и C#. Код-стайл
- Классы и объекты. Примитивы и обертки. Обзор ООП
- Объекты, классы и их повторное использование. Интерфейсы и абстрактные классы, внутренние и вложенные классы
- Object и методы equals/hashCode/toString и т.д. FileIterator. Обработка исключительных ситуаций
- Контейнеры и коллекции. Дженерики
- Основы функционального программирования
- Основы компонентно-ориентированного программирования
- Особенности тестирования ПО
- Лучшие практики в программной разработке
- Особенности и проблемы многопоточности
- Знакомство с языком программирования Golang. Java vs Golang
- Модель OSI. HTTP(s). Сокеты
- Основные особенности и принципы REST API
- Основы и примеры реализации клиент-серверного взаимодействия в различных языках программирования
- Знакомство с языком JS. Основы создания пользовательских веб-интерфейсов
- Принципы SOLID и KISS. IoC и DI
- Шаблоны проектирования. Примеры
- MVC, MVVM, MVP, VIPER, микросервисы
- Введение в проектирование БД. ERM, SQL
- Аутентификация и авторизация в микросервисных приложениях
- Основы UML. Документирование программ
- Тренды в развитии языков программирования и в разработке ПО
Элементы контроля
- Экзамен (задача)
- Накопленная оценка за модуль NИтоговая оценка за работу студента в модуле N: ОМ
= Min(ДЗ x 0.7 + СА x 0.2 + КР x 0.3, 10), где ДЗ – оценка за выполнение домашних заданий в модуле N; КР – оценка за контрольные работы в модуле N; СА – бонус за активность на семинарах в модуле N (баллы начисляются в качестве поощрения за активную работу на семинарах исключительно на усмотрение преподавателя), N = 1, ..., 3. Накопленная оценка за курс (cреднее значение оценок за каждый модуль): НАКОП = (ОМ1 + ОМ2 + ОМ3) / 3.
Промежуточная аттестация
- 2022/2023 учебный год 3 модульИтоговая оценка за работу студента в модуле N: ОМ
= Min(ДЗ x 0.7 + СА x 0.2 + КР x 0.3, 10), где ДЗ – оценка за выполнение домашних заданий в модуле N; КР – оценка за контрольные работы в модуле N; СА – бонус за активность на семинарах в модуле N (баллы начисляются в качестве поощрения за активную работу на семинарах исключительно на усмотрение преподавателя), N = 1, ..., 3. - 2022/2023 учебный год 4 модульИтоговая оценка за работу студента в модуле N: ОМ
= Min(ДЗ x 0.7 + СА x 0.2 + КР x 0.3, 10), где ДЗ – оценка за выполнение домашних заданий в модуле N; КР – оценка за контрольные работы в модуле N; СА – бонус за активность на семинарах в модуле N (баллы начисляются в качестве поощрения за активную работу на семинарах исключительно на усмотрение преподавателя), N = 1, ..., 3.
Список литературы
Рекомендуемая основная литература
- Java. Библиотека профессионала. Т.1: Основы, Хорстманн, К. С., 2019
Рекомендуемая дополнительная литература
- JAVA Concurrency на практике, , 2020
- Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. - Приемы объектно-ориентированного проектирования. Паттерны проектирования - 978-5-4461-1213-5 - Санкт-Петербург: Питер - 2020 - 361851 - https://ibooks.ru/bookshelf/361851/reading - iBOOKS
- Философия Java, Эккель, Б., 2015