Программирование на языке C++. Основной поток 2026
Содержание
О курсе
Первый (осенний) семестр предназначен для начинающих разработчиков на C++.
Второй (весенний) семестр даёт углублённое понимание тонкостей языка и раскрывает особенности возможностей новых стандартов. Подойдёт как для тех, у кого C++ является первым опытом программирования, так и для тех, кто переходит на C++ с других языков.
Важной особенностью курса является то, что упор делается на большое количество практики, код-ревью и устные сдачи. Данный подход позволяет выстроить сильный фундамент для дальнейшего профессионального развития как C++-разработчика, так и в любой другой IT-специальности.
Команда курса
Руководитель курса и лектор: Попов Павел Александрович Семинаристы:
- Барсуков Сергей Евгеньевич
- Драгун Константин Юрьевич
- Гарбузов Николай Алексеевич
- Русецкий Дмитрий Сергеевич
- Вашкевич Егор Сергеевич
- Лунга Артём Романович
- Погадаев Никита Максимович
Ассистенты:
- Информация будет опубликована позднее.
Программа курса
Формы контроля
Осенний семестр — дифференцированный зачёт. Весенний семестр — экзамен.
Осенний семестр
| Неделя | Тема | Задачи |
|---|---|---|
| 1 | Введение. Простейшая программа. Объявления и определения, скоупы. | |
| 2 | Основные типы и операции над ними. Выражения и операторы. | |
| 3 | Control statements. Compile-time errors, runtime errors. Undefined behavior и unspecified behavior. | |
| 4 | Указатели. Виды памяти. | |
| 5 | Динамическая память. Массивы. Указатели на функции. | Stack |
| 6 | Ссылки. Константы. Константные указатели и ссылки. | Stack |
| 7 | Приведения типов. Классы и структуры. Модификаторы доступа. | String |
| 8 | Конструкторы и деструкторы. Оператор присваивания. Правило трёх. | |
| 9 | Перегрузка операторов. Const-, static-, explicit-методы. Указатели на члены. | BigInteger |
| 10 | Наследование и его виды. Видимость и доступность методов при наследовании. Конструкторы и деструкторы при наследовании. | Rational |
| 11 | Приведения типов при наследовании. Множественное наследование. Виртуальные функции и полиморфные типы. | |
| 12 | Абстрактные классы. Pure virtual функции. RTTI и dynamic_cast. Таблицы виртуальных функций. | Geometry |
| 13 | Виртуальные функции (окончание). Шаблоны. Перегрузка и специализация шаблонов. | |
| 14 | Вычисления на шаблонах. Метафункции. Зависимые имена. | Matrix |
| 15 | Вариативные шаблоны. Исключения. Идиома RAII. |
Весенний семестр
| Неделя | Лекции | Задачи |
|---|---|---|
| 16 | Исключения в конструкторах и деструкторах. noexcept. Exception-safety. | Residue |
| 17 | Контейнеры. Внутреннее устройство vector и deque. | |
| 18 | Устройство deque. Итераторы, виды итераторов, инвалидация итераторов. Внутреннее устройство list. | Deque |
| 19 | Внутреннее устройство map. Классы string_view и span. Идея аллокаторов. | |
| 20 | Внутреннее устройство unordered_map. Allocator traits. Allocator-aware контейнеры. | |
| 21 | Выравнивания. Перегрузка new/delete. Идея move-семантики. Move-конструкторы и move-assignment операторы. | List and StackAllocator |
| 22 | Определения lvalue и rvalue. Rvalue-ссылки. Reference qualifiers. Perfect forwarding. Универсальные ссылки. std::forward. | |
| 23 | Реализация std::move и std::forward. xvalues, RVO, copy elision, temporary materialization. Функция move_if_noexcept. | |
| 24 | Вывод типов auto, decltype. CTAD, template deduction guides. Tuples, structured bindings, tuple-like types. | Unordered Map |
| 25 | unique_ptr, shared_ptr, weak_ptr, make_shared, enable_shared_from_this. Type erasure. std::any. | |
| 26 | Стирание типов в shared_ptr. Шаблонное метапрограммирование. Идиома SFINAE. Реализация is_class. Метафункция enable_if. | SharedPtr |
| 27 | Реализация has_method_construct, is_base_of. Спецификатор и оператор requires. Концепты. | |
| 28 | Лямбды. Замыкания. Списки захвата. Захват с инициализацией. Захват this. Обобщённые лямбды. | Tuple |
| 29 | Шаблонные лямбды. std::function, std::bind, std::reference_wrapper, std::invoke. Идея реализации std::function. | |
| 30 | Constexpr-переменные и функции. Compile-time вычисления. | Function |
На каждую задачу:
срок сдачи в контест — 3 недели (2 недели без штрафа); срок прохождения ревью — 4 недели с момента релиза задачи; устная сдача входит в ревью; на устную сдачу даётся ровно 3 попытки.
Коммуникация
Ссылка на чат курса в мессенджере (будет опубликована ближе к старту семестра).
Прогресс студентов
Ссылка на таблицу студентов с оценками (будет опубликована ближе к старту семестра).
Критерии оценивания и формы контроля успеваемости
Осенний семестр
Задачи
Итоговая оценка по задачам вычисляется по формуле:
Контрольная работа
Финальная контрольная работа является блокирующей. Даёт от 0 до 3 баллов. При результате ниже установленного порога зачёт считается не сданным и переходит в статус пересдачи.
Итоговая оценка
Складывается из:
до 7 баллов за задачи; до 3 баллов за контрольную работу; до 1 балла от семинариста.
Итоговая оценка округляется вниз.
Весенний семестр
Подсчёт баллов
Учитываются:
6 основных задач с коэффициентом; баллы за задачу Residue.
Коэффициенты:
| Количество задач | Коэффициент
1 ×1.0 - 2 ×1.1 - 3 ×1.2 - 4 ×1.3 - 5 ×1.4 - 6 ×1.5 } Ограничения на оценкиДля оценки удовлетворительно: 1–2 задачи (без учёта Residue); 250–449 баллов. Для оценки хорошо: 3–4 задачи (без учёта Residue); 450–749 баллов. Для оценки отлично: 5–6 задач (без учёта Residue); 750+ баллов. Перевод баллов в оценку: Например: 740 баллов → 7; 755 баллов → 8. ЭкзаменНа удовлетворительно: 2 билета уровня «уд». На хорошо: 2 билета уровня «уд»; 2 билета уровня «хор». На отлично: 2 билета уровня «хор»; 2 билета уровня «отл». Возможность повышения оценки2 задачи (без Residue) и более 500 баллов:
4 задачи (без Residue) и более 800 баллов:
Дополнительные льготыПри успешной сдаче 4–6 задач (без Residue) билеты на удовлетворительно отвечать не обязательно. При успешной сдаче 5–6 задач (без Residue) можно вытянуть 3 билета уровня «хор» и 3 билета уровня «отл», выбрав по 2 билета из каждого набора для ответа. Пример расчётаСиксевенов Пабло Ильич решил: Residue — 90 баллов; List — 180 баллов; Tuple — 200 баллов. Подсчёт: В этом случае студент может сдавать экзамен на оценку «удовлетворительно». При успешной сдаче билетов уровня «уд» он также может претендовать на оценку 5, поскольку набрал более 500 баллов. Материалы курсаВидеолекции |
|---|