1. Окружение + tooling, как можно отлаживать, тесты. Вводная лекция, система оценивания, напомнить что-нибудь.

  2. Время жизни, move-семантика.

  3. Шаблоны (шаблонные классы/функции/переменные).

  4. RAII, управление памятью.

  5. Lambda функции.

  6. Наследование и виртуальные функции. Type erasure (any, function).

  7. Исключения и обработка ошибок. Другие подходы.

  8. Паттерны: pimpl, singleton, SIOF, factory, CRTP

  9. Компиляция, линковка + LTO etc. + системы сборки (CMake).

  10. Отладка, отладочная информация (DWARF), gdb, санитайзеры, clang и llvm

  11. Производительность C++

  12. Kонцепты, variadic templates, perfect forwarding, метапрограммирование (трейты, pre-c++11).

Домашние задания

  1. Написать все умные указатели

  2. Напишем небольшой язык программирования вроде lisp

  3. jpeg-decoder