Введение. Программа. IDE
> Краткая история С++
> Назначения языка программирования
> Компиляторы, интерпретаторы, линковщики
> Знакомство с IDE
> Структура программы на языке С++
> Полезная литература
> Практика: Установка IDE / Пишем 1-ю программу на С++
> Домашнее задание
GitHub. Основы синтаксиса языка
> Системы контроля версий
> Review кода
> Системы счисления
> Представление информации в компьютере
> Базовые типы данных
> Переменные
> Операции
> Выражения
> Практика: Регистрация на GitHub / Выкладывание кода в gerrit /Написание программ, выполняющих операции ветвления
> Домашнее задание
Отладка программ. Основы С/С++ (продолжение)
> Отладка программ, gdb
> Преобразование типов
> Условные операторы
> Циклы
> Блок операторов
> Практика: Написание программ вычисления математических рядов
> Домашнее задание
Функции. Рекурсия. Ввод / вывод
> Функции
> Рекурсия
> Функции ввода и вывода данных
> Практика: Написание функций, выполняющих логические операции и вычисления математических рядов / Написание программы «Ханойские башни», решение через рекурсию
> Домашнее задание
Введение в тестирование. Указатели. Массивы. Строки
> Введение в тестирование
> Модульное тестирование Gtest
> Указатели. Операции работы с указателями
> Массивы
> Строки
> Практика: Установка и наладка Gtest / Написание программ преобразования матриц / Написание программ преобразования строк
> Домашнее задание
Динамическое выделение памяти. Структуры данных
> Динамическое выделение памяти.
> Перечисления, Объединения, Битовые
> Структуры данных
> Работа с файлами
> Практика: Разработка программы работы с фалами и записью и чтением данных - «База данных»
> Домашнее задание
Контрольная работа №1
Препроцессор. GNU make
> Препроцессор, макросы
> GNU make
> Практика: Сборка программы «База данных» для разных операционных систем
> Домашнее задание
Алгоритмы и структуры данных. Основы
> Сложность алгоритмов
> Сортировка
> Поиск
> Структуры данных
> Практика: Реализация вектора на языке Си / Реализация дерева на языке Си.
> Домашнее задание
Ссылки. Основы ООП
> Ссылки
> Понятие ООП
> Понятие класса
> Спецификаторы доступа
> Конструкторы, деструкторы
> Практика: Реализация списка на языке Си. / Реализация очереди на языке Си.
> Домашнее задание
ООП (продолжение)
> Методы класса
> Операторы класса
> Move семантика
> Практика: Реализация строки на языке С++
> Домашнее задание
Защита промежуточного проекта
> Ссылки. Конструкторы
> Универсальные ссылки
> Наследование
> Виртуальные функции
> Интерфейсы
> Наследование конструкторов
> Практика:
~ Уход от зависимостей от реализации, на зависимости от интерфейсов
Динамическое выделение памяти. Умные указатели
> Динамическое выделение памяти
> Умные указатели
> Методы работы с умными указателями
> Практика:
~ Реализация фабрики
Функциональные объекты. Лямбда-выражения. Стандартные алгоритмы
> constexpt
> Функциональные объекты
> Лямбда выражения
> Стандартные алгоритмы
~ std::find…
~ std::copy…
~ std::sort
~ std::binary_search..
~ std::equal
> Практика:
~ Задачи на уменьшение асимптотической сложности при помощи сортировки и поиска
Стандартные контейнеры
> Стандартные контейнеры
~ std::vector
~ std::list
~ std::forward_list
~ std::array
~ std::deque
~ std::set
~ std::map
~ std::multiset
~ std::multimap
~ std::unordered_set
~ std::unordered_map
~ std::unordered_multiset
~ std::unordered_multimap
~ std::stack
~ std::queue
~ std::priority_queue
> Стандартные итераторы
> Практика:
~ Задачи на уменьшение асимптотической сложности при помощи стандаартных контейнеров
Контрольная работа №2
Исключения
> Исключения
> Безопасность исключений
> Пространства имен
> Практика:
~ Разбор примеров генерации исключений в самых неожиданных местах
~ Примеры реализации функций не генерирующих исключения
Потоки
> Потоки
> Примитивы синхронизации
> Атомарные переменные
> Future/promise
> Практика:
~ Реализация задачи нахождения БПФ с использованием параллельного программирования
~ Реализация очереди сообщений
Работа с файлами
> Работа с файлами
> Работа с файловой системой
> Строки
> Потоки строк
> Практика:
~ Работа с файлами настроек
~ Реализация простейшей БД хранящей данные в текстовом формате
Шаблоны проектирования
> Идиомы и паттерны проектирования
> Распространенные идиомы
> Практика:
~ Реализация COW строки
~ Реализация идиомы Pimpl
Работа над курсовыми проектами
Сдача курсовых проектов. Итоги
> Сдача курсового проекта
> Подведение итогов
> Куда двигаться дальше?