• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 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: ОМ<N> = Min(ДЗ<N> x 0.7 + СА<N> x 0.2 + КР<N> x 0.3, 10), где ДЗ<N> – оценка за выполнение домашних заданий в модуле N; КР<N> – оценка за контрольные работы в модуле N; СА<N> – бонус за активность на семинарах в модуле N (баллы начисляются в качестве поощрения за активную работу на семинарах исключительно на усмотрение преподавателя), N = 1, ..., 3. Накопленная оценка за курс (cреднее значение оценок за каждый модуль): НАКОП = (ОМ1 + ОМ2 + ОМ3) / 3.
Промежуточная аттестация

Промежуточная аттестация

  • 2022/2023 учебный год 3 модуль
    Итоговая оценка за работу студента в модуле N: ОМ<N> = Min(ДЗ<N> x 0.7 + СА<N> x 0.2 + КР<N> x 0.3, 10), где ДЗ<N> – оценка за выполнение домашних заданий в модуле N; КР<N> – оценка за контрольные работы в модуле N; СА<N> – бонус за активность на семинарах в модуле N (баллы начисляются в качестве поощрения за активную работу на семинарах исключительно на усмотрение преподавателя), N = 1, ..., 3.
  • 2022/2023 учебный год 4 модуль
    Итоговая оценка за работу студента в модуле N: ОМ<N> = Min(ДЗ<N> x 0.7 + СА<N> x 0.2 + КР<N> x 0.3, 10), где ДЗ<N> – оценка за выполнение домашних заданий в модуле N; КР<N> – оценка за контрольные работы в модуле 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