Cpp
catЛекция 1
Введение в C++. Hello World! Переменные, функции, ввод-вывод, std::vector, std::string, std::map. Google C++ Style Guide.
Лекция 2
Структуры и массивы, указатели и ссылки. Передача параметров в функции, спецификатор const. RVO. Входные и выходные параметры, введение в move-семантику.
Лекция 3
Классы, конструкторы и деструкторы. Виртуальные функции и интерфейсы (примеры из библиотек protobuf/snappy).
Лекция 4
Шаблонные функции. Стандартные алгоритмы STL. Использование лямбда-функций.
Лекция 5
Динамическое управление памятью, проблемы при работе с динамической памятью (memory leak, use after free). Умные указатели, RAII, владение ресурсами. Автоматический поиск проблем работы с памятью.
Шаблонные классы.
Лекция 6
Контейнеры, итераторы. Реализация контейнера std::vector<T>. Юнит-тестирование кода. Библиотека catch.
Лекция 7
Обработка ошибок, error-code, исключения, assert-ы. Взаимодействие между RAII и исключениями.
Лекция 8
Отладка кода. Основные подходы к отладке на примере отладочной печати. Использование gdb, asan, strace. Запись логов.
Внутреннее устройство инструментов отладки.
Лекция 9
Архитектура и реализация фреймворка POCO.
Лекция 10
CMake. Сборка зависимостей, бинарная совместимость. Работа в больших проектах.
Лекция 11
Взаимодействие с C API. Zero-terminated строки. Межмодульное взаимодействие и паттерн ErrorOr.
Лекция 12
Бинарные уязвимости. Переполнение буффера на стеке.
Лекция 13
Оптимизации компилятора и Undefined behavior. Implementation defined behavior.
Примеры ассемблерного кода и оптимизаций различными компиляторами.
Лекция 14.
Реализации строки. Особенности std::deque. std::function.