Программирование на языке C++. (односеместровый) 2026: различия между версиями
| Строка 156: | Строка 156: | ||
== Материалы курса== | == Материалы курса== | ||
Рекомендуемая литература | |||
1. Основы и синтаксис (с нуля) | |||
* Бьерн Страуструп — «Программирование. Принципы и практика использования C++» | |||
Один из лучших вводных курсов от создателя языка. Много примеров, объясняет не только «как», но и «почему». | |||
** Стенли Липпман, Жози Лажойе, Барбара Му — «Язык программирования C++. Базовый курс» (5 е издание) | |||
Системное введение в язык и STL, с акцентом на правильные привычки и современные возможности C++. | |||
*** Герберт Шилдт — «C++: базовый курс» (3 е издание) | |||
Более «школьный» формат: много задач, пошаговое объяснение синтаксиса. | |||
2. Для тех, кто уже знаете синтаксис | |||
* Скотт Мейерс — «Эффективное использование C++» и «Наиболее эффективное использование C++» | |||
Классика: 55+ советов по стилю, управлению ресурсами, RAII, const, правильному использованию STL | |||
** Герб Саттер — «Новые сложные задачи на C++» и «Решение сложных задач на C++» (Dawid Sutter / Herb Sutter) | |||
Примеры нетривиальных ситуаций, показывают, как думать о коде, а не только о синтаксисе | |||
*** Николай Джосаттис — «C++ Стандартная библиотека» | |||
Подробный справочник по STL: векторы, контейнеры, алгоритмы, итераторы, с примерами и замечаниями по эффективности.practicum.yandex+1 | |||
3. Современные C++ 17/20 и продвинутые темы | |||
* Бьерн Страуструп — «A Tour of C++» (2 е и 3 е издания) | |||
Обзор современного C++ для опытных программистов: кратко, но полно о C++11/14/17/20, идеях дизайна и типичных паттернах. | |||
** Андрей Александреску, Герб Саттер — «C++ Coding Standards: 101 Rules, Guidelines, and Best Practices» | |||
Стандарты кода, именование, безопасность, производительность, использование шаблонов и STL по правилам. | |||
*** Николай Джосаттис — «C++ 20. The Complete Guide» | |||
Обзор новых возможностей C++20: modules, coroutines, ranges, константы, улучшения шаблонов. | |||
Версия от 11:16, 16 июля 2026
Программирование на C++
О курсе
Односеместровый курс (основной поток).
| Параметр | Значение |
|---|---|
| Формат | 15 лекций + 15 семинаров (1 пара лекция + 1 пара семинар в неделю) |
| Стандарт языка | C++17 (отдельные элементы C++20) |
| Среда разработки | MSVC / g++ / clang++ — на выбор студента |
| Система сборки | CMake или встроенная сборка IDE (без отдельной лекции) |
| Домашние работы | 5 блоковых заданий (1–2 недели каждое) + итоговый проект |
| Использование LLM | Разрешено при обязательной устной защите решения |
Курс посвящён изучению современного C++ от базовых конструкций языка до продвинутых возможностей, применяемых в промышленной разработке. В ходе обучения слушатели освоят синтаксис языка, работу с памятью, указателями, функциями, контейнерами STL и обработкой ошибок, а также научатся писать безопасный и эффективный код.
Особое внимание уделяется объектно-ориентированному программированию, принципам проектирования (SOLID), шаблонам, исключениям, RAII, умным указателям, move-семантике и современным возможностям C++17/20. Отдельный блок посвящён стандартной библиотеке STL, алгоритмам, контейнерам и современному стилю разработки.
По завершении курса участники смогут разрабатывать надёжные приложения на C++, грамотно управлять ресурсами, проектировать архитектуру программ, использовать современные возможности языка и эффективно применять стандартную библиотеку для решения практических задач.
Пререквизиты
Для успешного освоения курса слушателю достаточно иметь базовые навыки программирования: понимать, что такое переменные, типы данных, условные операторы, циклы и функции. Желателен опыт написания простых программ на любом языке программирования (например, Python, Java, C#, Pascal или JavaScript), а также уверенное владение компьютером и средой разработки. Специальных знаний по C++ не требуется, так как курс начинается с основ языка.
Команда курса
- Руководитель и лектор курса: Виденин Сергей Александрович
- Семинаристы:
- Виденин Сергей Александрович
- Обжерин Евсей Романович
- Халтурин Евгений Александрович
- Ассистенты:
- Пелевин Леонид Андреевич
- Черноморцев Ярослав Сергеевич
- Якупов Динар Элинарович
- Шелегеда Наталья Андреевна
- Хомченко Илья Романович
Программа курса
| Неделя | Темы лекций | Темы семинаров | Домашние задания |
|---|---|---|---|
| 1 | Введение в C++ и первая программа | Знакомство со средой и первые программы | ДЗ 1. Основы C++: текстовый обработчик данных. Срок сдачи: после 4-го семинара. |
| 2 | Объявления, выражения, управление потоком, ошибки | Разбор ошибок и управляющих конструкций | |
| 3 | Указатели, память, массивы | Работа с указателями и динамической памятью | |
| 4 | Функции, ссылки, const | Функции и эффективная передача данных | Сдача ДЗ 1 |
| 5 | Классы и инкапсуляция | Проектирование простых классов | ДЗ 2. ООП: полиморфная предметная область. |
| 6 | Конструкторы, деструкторы, правило трёх | Класс с управлением ресурсом (Rule of Three) | |
| 7 | Наследование, интерфейсы и полиморфизм | Полиморфная иерархия классов | |
| 8 | SOLID, композиция, агрегация, паттерны | Рефакторинг и проектирование | Сдача ДЗ 2 |
| 9 | Шаблоны | Шаблоны на практике | ДЗ 3. Шаблоны и исключения: generic-контейнер. |
| 10 | Исключения и RAII | Безопасный код с исключениями | Сдача ДЗ 3 |
| 11 | Умные указатели | Умные указатели вместо new/delete | ДЗ 4. Современный C++: ресурсный менеджер. |
| 12 | Move-семантика и приведения типов | Move и cast на практике | |
| 13 | Вывод типов, лямбды, std::function | Современный стиль C++ | Сдача ДЗ 4 |
| 14 | STL: контейнеры, итераторы, алгоритмы | STL на практике | ДЗ 5. STL: прикладная задача на контейнерах и алгоритмах. Итоговый проект (параллельно с ДЗ 5). |
| 15 | Итоги: современный C++ и перспективы | Итоговое занятие | Сдача ДЗ 5. Защита итогового проекта. |
Более подробную программу курса можно посмотреть здесь:
Коммуникация
Ссылка на чат курса в мессенджере (ближе к старту семестра).
Прогресс студентов
Ссылка на таблицу студентов с оценками (ближе к старту семестра).
Критерии оценивания и формы контроля успеваемости
Информация будет дополнена к 1.09.2026.
Материалы курса
Рекомендуемая литература
1. Основы и синтаксис (с нуля)
- Бьерн Страуструп — «Программирование. Принципы и практика использования C++»
Один из лучших вводных курсов от создателя языка. Много примеров, объясняет не только «как», но и «почему».
- Стенли Липпман, Жози Лажойе, Барбара Му — «Язык программирования C++. Базовый курс» (5 е издание)
Системное введение в язык и STL, с акцентом на правильные привычки и современные возможности C++.
- Герберт Шилдт — «C++: базовый курс» (3 е издание)
Более «школьный» формат: много задач, пошаговое объяснение синтаксиса.
2. Для тех, кто уже знаете синтаксис
- Скотт Мейерс — «Эффективное использование C++» и «Наиболее эффективное использование C++»
Классика: 55+ советов по стилю, управлению ресурсами, RAII, const, правильному использованию STL
- Герб Саттер — «Новые сложные задачи на C++» и «Решение сложных задач на C++» (Dawid Sutter / Herb Sutter)
Примеры нетривиальных ситуаций, показывают, как думать о коде, а не только о синтаксисе
- Николай Джосаттис — «C++ Стандартная библиотека»
Подробный справочник по STL: векторы, контейнеры, алгоритмы, итераторы, с примерами и замечаниями по эффективности.practicum.yandex+1
3. Современные C++ 17/20 и продвинутые темы
- Бьерн Страуструп — «A Tour of C++» (2 е и 3 е издания)
Обзор современного C++ для опытных программистов: кратко, но полно о C++11/14/17/20, идеях дизайна и типичных паттернах.
- Андрей Александреску, Герб Саттер — «C++ Coding Standards: 101 Rules, Guidelines, and Best Practices»
Стандарты кода, именование, безопасность, производительность, использование шаблонов и STL по правилам.
- Николай Джосаттис — «C++ 20. The Complete Guide»
Обзор новых возможностей C++20: modules, coroutines, ranges, константы, улучшения шаблонов.