2026/2027





Углубленное программирование на С++
Статус:
Маго-лего
Когда читается:
1 модуль
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
3
Контактные часы:
28
Программа дисциплины
Аннотация
Дисциплина «Углубленное программирование на C++» предназначена для формирования у студентов практических компетенций в области разработки высокопроизводительного, надежного и безопасного программного обеспечения на языке C++.
Курс является логическим продолжением дисциплины «Промышленное программирование на Python», в рамках которой студенты разрабатывают промышленный прототип современной AI/ML-системы. В ходе изучения настоящей дисциплины отдельные компоненты созданной системы последовательно модернизируются и реализуются на языке C++, что позволяет исследовать влияние архитектурных решений, алгоритмов, структур данных и механизмов управления памятью на производительность, масштабируемость, надежность и безопасность программного обеспечения.
Особое внимание уделяется современным возможностям языка C++, принципам объектно-ориентированного и обобщенного программирования, эффективному использованию памяти, многопоточному программированию, разработке библиотек и взаимодействию компонентов C++ с программными системами, реализованными на языке Python.
Вопросы информационной безопасности проходят сквозной темой через весь курс. На каждом этапе рассматриваются особенности безопасной разработки нативного программного обеспечения, предотвращение типовых ошибок управления памятью, применение современных инструментов статического и динамического анализа кода, а также методы повышения надежности программных компонентов.
Цель освоения дисциплины
- Описание курса: Курс посвящен углубленному изучению C++ как языка системного и прикладного программирования. В отличие от вводных курсов, основное внимание уделяется не отдельным конструкциям языка, а инженерным последствиям их использования: времени жизни объектов, владению ресурсами, безопасности исключений, шаблонному проектированию, производительности, параллельному выполнению и качеству кода.
- Ключевая идея курса: Современный C++ — это не набор синтаксических возможностей, а система инженерных правил для управления ресурсами, абстракциями и производительностью.
- Фокус курса: • современная модель языка C++ и стандартов C++17/C++20/C++23; • управление ресурсами, RAII, copy/move semantics; • generic programming и шаблонное проектирование; • стандартная библиотека, контейнеры, итераторы, алгоритмы, ranges; • многопоточность, синхронизация, futures, atomics; • тестирование, статический анализ, code review и инженерная дисциплина. • формирование практических навыков разработки высокопроизводительных и безопасных программных компонентов на языке C++ путем модернизации ранее разработанной AI/ML-системы.
- Особенности организации дисциплины Дисциплина построена на принципе последовательного развития программной системы, разработанной студентами в рамках курса «Промышленное программирование на Python». Практические работы не являются независимыми заданиями. В ходе курса студенты последовательно модернизируют ранее созданную AI/ML-систему, реализуя наиболее ресурсоемкие и критически важные компоненты на языке C++, исследуя влияние архитектурных решений на производительность, надежность и безопасность программного обеспечения. Такой подход отражает современные практики промышленной разработки систем искусственного интеллекта, в которых Python используется для быстрого прототипирования и исследования моделей, а C++ — для реализации высокопроизводительных компонентов, требующих максимальной эффективности и надежности.
Планируемые результаты обучения
- Умеет объяснять модель объектов C++, правила времени жизни и владения ресурсами
- Умеет применять RAII, smart pointers и move semantics для безопасного управления ресурсами
- Умеет проектировать классы с учетом инвариантов, исключений и правил копирования/перемещения
- Умеет использовать шаблоны, concepts и средства стандартной библиотеки для построения обобщенного кода
- Умеет анализировать производительность C++-кода и выявлять избыточные копирования, аллокации и синхронизации
- Умеет разрабатывать многопоточные компоненты с учетом гонок данных и гарантий потокобезопасности
- Умеет применять тестирование, санитайзеры, статический анализ и code review в процессе разработки
Содержание учебной дисциплины
- 1. Современная модель C++
- 2. Время жизни объектов и управление ресурсами
- 3. Copy/move semantics и проектирование типов
- 4. Шаблоны и generic programming
- 5. STL, ranges и алгоритмический стиль
- 6. Многопоточность и синхронизация
- 7. Производительность и качество кода
- 8. Интеграция Python и C++
Элементы контроля
- Практические задания
- Итоговый проектВ рамках итогового проекта студенты выполняют модернизацию ранее разработанной AI/ML-системы путем реализации одного или нескольких критически важных компонентов на языке C++.
- Участие в обсуждениях и code review
Промежуточная аттестация
- 2026/2027 1st module0.4 * Итоговый проект + 0.2 * Участие в обсуждениях и code review + 0.4 * Практические задания
Список литературы
Рекомендуемая основная литература
- Qt 5.10. Профессиональное программирование на C++ - 978-5-9775-3678-3 - Шлее М. - 2018 - Санкт-Петербург: БХВ-Петербург - https://ibooks.ru/products/358881 - 358881 - iBOOKS
- Гридчин А.В. - Информационные технологии. Программирование на C++ - 978-5-7782-4174-9 - Новосибирский государственный технический университет - 2020 - https://znanium.ru/catalog/product/1866900 - 1866900 - ZNANIUM
- Керниган, Б. В. Язык программирования C : учебник / Б. В. Керниган, Д. М. Ричи. — 2-е изд. — Москва : ИНТУИТ, 2016. — 313 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100543 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Восс, М. Параллельное программирование на C++ с помощью библиотеки TBB : руководство / М. Восс, Р. Асенхо, Д. Рейндерс , перевод с английского А. А. Слинкина. — Москва : ДМК Пресс, 2020. — 674 с. — ISBN 978-5-97060-864-7. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/179500 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.