Бакалавриат
2022/2023![Цель освоения дисциплины](/f/src/global/i/edu/objectives.svg)
![Планируемые результаты обучения](/f/src/global/i/edu/results.svg)
![Содержание учебной дисциплины](/f/src/global/i/edu/sections.svg)
![Элементы контроля](/f/src/global/i/edu/controls.svg)
![Промежуточная аттестация](/f/src/global/i/edu/intermediate_certification.svg)
![Список литературы](/f/src/global/i/edu/library.svg)
Конструирование программного обеспечения
Статус:
Курс обязательный (Программная инженерия)
Направление:
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++ для профессионалов : учебное пособие / Б. Страуструп. — 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). — Режим доступа: для авториз. пользователей.