Бакалавриат
2022/2023





Конструирование программного обеспечения
Статус:
Курс обязательный (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Когда читается:
2-й курс, 1-3 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
5
Контактные часы:
100
Программа дисциплины
Аннотация
Дисциплина "Конструирование программного обеспечения" знакомит студентов с подходами к написанию программ различной сложности и размера на языке С++. В курсе рассматриваются структурный, объектно-ориентированный и и функциональный подходы. Особое внимание уделяется стандартной библиотеке шаблонов (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++ для профессионалов - Страуструп Б. - Национальный Открытый Университет "ИНТУИТ" - - - 2016 - русский - https://e.lanbook.com/book/100542 - ЛАНЬ - 100542
Рекомендуемая дополнительная литература
- Осваиваем C++17 STL - О’Двайр А. - Издательство "ДМК Пресс" - 978-5-97060-663-6 - 2018 - русский - https://e.lanbook.com/book/116126 - ЛАНЬ - 116126
- Программирование на языке C++ - Павловская Т.А. - Национальный Открытый Университет "ИНТУИТ" - - - 2016 - русский - https://e.lanbook.com/book/100409 - ЛАНЬ - 100409