Программирование на языке C++. Основной поток 2026
Содержание
О курсе
Первый (осенний) семестр предназначен для начинающих разработчиков на C++.
Второй (весенний) семестр даёт углублённое понимание тонкостей языка и раскрывает особенности возможностей новых стандартов. Подойдёт как для тех, у кого C++ является первым опытом программирования, так и для тех, кто переходит на C++ с других языков.
Важной особенностью курса является то, что упор делается на большое количество практики, код-ревью и устные сдачи. Данный подход позволяет выстроить сильный фундамент для дальнейшего профессионального развития как C++-разработчика, так и в любой другой IT-специальности.
Команда курса
Руководитель курса и лектор: Попов Павел Александрович Семинаристы:
- Барсуков Сергей Евгеньевич
- Драгун Константин Юрьевич
- Гарбузов Николай Алексеевич
- Русецкий Дмитрий Сергеевич
- Вашкевич Егор Сергеевич
- Лунга Артём Романович
- Погадаев Никита Максимович
Ассистенты:
- Информация будет опубликована позднее.
Программа курса
Формы контроля
Осенний семестр — дифференцированный зачёт. Весенний семестр — экзамен.
Осенний семестр
| Лекция | Тема
1 Введение. Простейшая программа. Объявления и определения, области видимости. - 2 Основные типы и операции над ними. Выражения и операторы. - 3 Control statements. Compile-time errors, runtime errors. Undefined behavior и unspecified behavior. - 4 Указатели. Виды памяти. - 5 Динамическая память. Массивы. Указатели на функции. - 6 Ссылки. Константы. Константные указатели и ссылки. - 7 Приведения типов. Классы и структуры. Модификаторы доступа. - 8 Конструкторы и деструкторы. Оператор присваивания. Правило трёх. - 9 Перегрузка операторов. Const-, static-, explicit-методы. Указатели на члены. - 10 Наследование и его виды. Видимость и доступность методов при наследовании. Конструкторы и деструкторы при наследовании. - 11 Приведения типов при наследовании. Множественное наследование. Виртуальные функции и полиморфные типы. - 12 Абстрактные классы. Pure virtual функции. RTTI и dynamic_cast. Таблицы виртуальных функций. - 13 Виртуальные функции (продолжение). Шаблоны. Перегрузка и специализация шаблонов. - 14 Вычисления на шаблонах. Метафункции. Зависимые имена. - 15 Вариативные шаблоны. Исключения. Идиома RAII. |
|---|
Весенний семестр
| Лекция | Тема
16 Исключения в конструкторах и деструкторах. noexcept. Exception-safety. - 17 Контейнеры. Внутреннее устройство vector и deque. - 18 Устройство deque. Итераторы, виды итераторов, инвалидация итераторов. Внутреннее устройство list. - 19 Внутреннее устройство map. Классы string_view и span. Идея аллокаторов. - 20 Внутреннее устройство unordered_map. Allocator traits. Allocator-aware контейнеры. - 21 Выравнивания. Перегрузка new/delete. Идея move-семантики. Move-конструкторы и move-assignment операторы. - 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. - 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. - 27 Реализация has_method_construct, is_base_of. Спецификатор и оператор requires. Концепты. - 28 Лямбды. Замыкания. Списки захвата. Захват с инициализацией. Захват this. Обобщённые лямбды. - 29 Шаблонные лямбды. std::function, std::bind, std::reference_wrapper, std::invoke. Идея реализации std::function. - 30 Constexpr-переменные и функции. Compile-time вычисления. |
|---|
Активности
На каждую задачу:
срок сдачи в контест — 3 недели (2 недели без штрафа); срок прохождения ревью — 4 недели с момента релиза задачи; устная сдача входит в ревью; на устную сдачу даётся ровно 3 попытки.
Задачи первого семестра
| Неделя | Задача
5–6 Stack - 7 String - 9 BigInteger - 10 Rational - 12 Geometry - 14 Matrix } Задачи второго семестра
|
|---|