We use cookies in order to improve the quality and usability of the HSE website. More information about the use of cookies is available here, and the regulations on processing personal data can be found here. By continuing to use the site, you hereby confirm that you have been informed of the use of cookies by the HSE website and agree with our rules for processing personal data. You may disable cookies in your browser settings.

  • A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Software Design

2022/2023
Academic Year
RUS
Instruction in Russian
5
ECTS credits
Course type:
Compulsory course
When:
2 year, 1-3 module

Instructor


Шампоров Василий Александрович

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

Аннотация

Дисциплина "Конструирование программного обеспечения" знакомит студентов с подходами к написанию программ различной сложности и размера на языке С++. В курсе рассматриваются структурный, объектно-ориентированный и и функциональный подходы. Особое внимание уделяется стандартной библиотеке шаблонов (STL), широко применяемой в промышленном программировании.
Цель освоения дисциплины

Цель освоения дисциплины

  • Знакомство с основными парадигмами программирования и их использования на практике
  • Освоение современного С++
  • Изучение некоторых важнейших паттернов объектно-ориентированного программирования
  • Овладение приемами модульного тестирования
Планируемые результаты обучения

Планируемые результаты обучения

  • Демонстрировать использование паттернов при анализе предметной области и проектировании ПО
  • Демонстрировать использование принципа объектной декомпозиции
  • Демонстрировать применение наследования и полиморфизма
  • Демонстрировать создание шаблонов для решения широкого круга задач
  • Демонстрировать уверенную работу с указателями и ссылками
  • Демонстрировать умение инициализировать встроенные объекты и использовать дружественность
  • Использовать контейнеры и алгоритмы для решения прикладных задач
  • Описывать механизм вызова функций
  • Определять возможности различных типов данных и правильно их использовать
  • Определять временную сложность алгоритмов работы STL и методов контейнеров
  • Определять вывод типов при инстанцировании шаблонов
  • Определять типы отношений при анализе предметной области
  • Создавать классы с конструкторами и деструктором
  • Формулировать архитектурные принципы STL
  • Формулировать назначение механизма шаблонов
  • Формулировать назначение ООП
  • Формулировать назначение перегрузки операций
  • Формулировать особенности отношений классов и объектов при декомпозиции задачи
  • Формулировать особенности размещения различных объектов программы в памяти
  • Формулировать понятие и свойства механизма наследования
  • Формулировать понятие механизма шаблонов классов
  • Формулировать понятия многопоточного программирования (поток, гонка за ресурсы и другие)
  • Формулировать понятия функционального программирования (функтор, лямбда-выражение и другие)
  • Формулировать способы перегрузки и уметь их использовать
  • Формулировать тонкости перегрузки отдельных операций
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Память и базовые механизмы программ
  • Шаблоны функций
  • Классы и объекты
  • Перегрузка операций
  • Отношения между классами и объектами
  • Наследование и полиморфизм
  • Шаблоны и паттерны
  • Стандартная библиотека шаблонов
  • Функциональное и параллельное программирование на С++
Элементы контроля

Элементы контроля

  • неблокирующий Практические домашние задания - модуль 1
  • неблокирующий Практические домашние задания - модуль 2
  • неблокирующий Практические домашние задания - модуль 3
  • блокирующий Экзамен - модуль 2
  • блокирующий Экзамен - модуль 3
Промежуточная аттестация

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

  • 2022/2023 учебный год 2 модуль
    1 * Экзамен - модуль 2
  • 2022/2023 учебный год 3 модуль
    1 * Экзамен - модуль 3
Список литературы

Список литературы

Рекомендуемая основная литература

  • Gregoire, M. (2018). Professional C++ (Vol. Fourth edition). Indianapolis, IN: Wrox. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1729638
  • Страуструп, Б. Язык программирования C++ для профессионалов : учебное пособие / Б. Страуструп. — 2-е изд. — Москва : ИНТУИТ, 2016. — 670 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100542 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.

Рекомендуемая дополнительная литература

  • О’Двайр, А. Осваиваем C++17 STL / А. О’Двайр. — Москва : ДМК Пресс, 2018. — 352 с. — ISBN 978-5-97060-663-6. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/116126 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
  • Павловская, Т. А. Программирование на языке C++ : учебное пособие / Т. А. Павловская. — 2-е изд. — Москва : ИНТУИТ, 2016. — 154 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100409 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.

Авторы

  • Штанюк Антон Александрович
  • Шампоров Василий Александрович