Курс по C++

ПРОГРАММА

Февраль

  1. Объектно-ориентированное программирование в C++. Четыре принципа ООП. Классы. Поля и методы класса. Специальные функции-члены класса. Идиома RAII. Умные указатели (smart pointers). Правило одного определения. Внутреннее и внешнее связывание.Разделение классов на интерфейс и реализацию. Пространства имён.
    Особенности IDE JetBrains CLion. Система контроля версий Git и GitHub. Сдача заданий через GitHub.
  2. Перечисления. Друзья класса. Статические члены класса. Проектирование классов. Перегрузка операторов. Rvalue-ссылки. Перемещение. Перемещающие специальные функции-члены. Поверхностное и глубокое копирование. Класс Date.
  3. Наследование классов. Иерархии классов. Наследование интерфейса и реализации. Открытое и закрытое наследование. Композиция. Полиморфизм. Виртуальные функции. Абстрактный базовый класс (АБК). Множественное наследование. Виртуальные базовые классы.
  4. Паттерны проектирования. Адаптер и Декоратор.

Март

  1. Стандартная библиотека. Классы std::string и std::string_view. Потоки. Библиотека iostream. Иерархия классов потоков ввода-вывода. Файловые потоки ввода-вывода. Библиотека std::filesystem. Путь. Операции с директориями. Форматы обмена данными: JSON, XML.
  2. Шаблоны. Инстанцирование шаблона. Этапы трансляции шаблона. Перегрузка шаблонов функций. Полная и частичная специализация шаблона. Значения параметров шаблона по умолчанию. Нетиповые параметры шаблона.
  3. Последовательные контейнеры STL: array, vector, deque, list, forward_list. Специальные контейнеры и адаптеры контейнеров: stack, queue, priority_queue. Битовое множество std::bitset. Кортеж std::tuple.
  4. Ассоциативные упорядоченные и неупорядоченные контейнеры STL: set, map, unordered_set, unordered_map. Хэш-таблица и хэш-функция. Коллизии и способы их разрешения.
  5. Алгоритмы STL. Применение алгоритмов STL. Итераторы. Функциональные объекты. Генерация случайных чисел.

Апрель

  1. Обработка ошибок. Механизм исключений. Иерархия стандартных исключений. Проектирование пользовательских классов исключений. Особенности перехвата исключений. Логирование. Использование отладчика.
  2. Шаблоны: повторение основ. Вариативные шаблоны. Пакет параметров шаблона. Рекурсивная обработка пакета. Выражения свёртки.
  3. Метапрограммирование шаблонов. Вычисления времени компиляции. Рекурсивное инстанцирование шаблонов. Специализация шаблонов. Ключевое слово constexpr, условный оператор if constexpr.
  4. Контрольная.

Май

  1. Параллельное программирование. Многопоточное исполнение. Переключение контекста. Разработка параллельных программ. Синхронное и асинхронное исполнение. Параллельные алгоритмы.
  2. Синхронизация. Примитивы синхронизации. Мьютексы. Атомарные операции.
  3. Повторение.