• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site
Article
Statistical testing of segment homogeneity in classification of piecewise-regular objects

Savchenko A., Belova N. S.

International Journal of Applied Mathematics and Computer Science. 2015. Vol. 25. No. 4. P. 915-925.

Article
Reconstruction of a word from a finite set of its subwords under the unit shift hypothesis. I. Reconstruction without for bidden words1

Smetanin Y., Ulyanov M.

Cybernetics and Systems Analysis. 2015. Vol. 50. No. 1. P. 148-156.

Article
VTMine Framework as Applied to Process Mining Modeling

Sergey Andreevich Shershakov.

International Journal of Computer and Communication Engineering. 2015. Vol. 4. No. 3. P. 166-179.

Software Design

2022/2023
Academic Year
RUS
Instruction in Russian
8
ECTS credits
Type:
Elective course
When:
2 year, 2-4 module

Instructors

Зейналов Магеррам

Зейналов Магеррам

Кучук Александр Александрович

Кучук Александр Александрович

Семянников Глеб Валерьевич

Семянников Глеб Валерьевич

Terlych, Nikita

Terlych, Nikita

Khokhlov, Igor

Khokhlov, Igor

Программа дисциплины

Аннотация

Курс "Конструирование программного обеспечения" предназначен для студентов 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

Авторы

  • Александров Дмитрий Владимирович
  • Петрухина Анастасия Сергеевна