Prog Academy
RU UA

Курс по подписке

C++ Advanced

C++ Advanced: от основ языка к коду, который пишут в реальных проектах

  • 18 модулей
  • 55+ практических заданий
  • Автоматическая проверка
  • На русском

Получить доступ к курсу

Курс по подписке · Обучение в своём темпе

О курсе

Что это за курс?

Курс для тех, кто уже прошёл «Основы программирования на C++» (или уверенно знает переменные, циклы, std::vector, функции, struct, ссылки и целые типы фиксированной ширины) и хочет писать настоящий код на C++: для встраиваемых систем, робототехники, сетевых сервисов или высоконагруженных приложений.

Вы разберётесь, как работают память и указатели, как классы управляют ресурсами (RAII), что такое копирование и перемещение, научитесь писать шаблоны, пользоваться контейнерами и алгоритмами STL, обрабатывать ошибки, разбирать и формировать бинарные данные, делить программу на заголовки и единицы трансляции, запускать потоки и синхронизировать их, а также искать ошибки и узкие места производительности. Завершает курс итоговый проект — библиотека кодирования пакетов из нескольких файлов.

Аудитория

Для кого этот курс?

  • Прошли основы C++

    Перейдёте к памяти и указателям, RAII, копированию и перемещению, шаблонам, контейнерам и алгоритмам STL.

  • Пишете для embedded или робототехники

    Будете разбирать и формировать бинарные данные, работать с битами и C API и соберёте библиотеку пакетного протокола.

  • Сетевые и высоконагруженные сервисы

    Будете запускать и синхронизировать потоки, искать ошибки и узкие места производительности.

Сначала нужна подготовка

Курс опирается на знания, отмеченные ниже как обязательные.

Нужно знать

Если этих знаний ещё нет — пройдите курсы по порядку:

  1. С нуля
  2. Обязательно Основы программирования на C++
  3. Этот курс C++ Advanced

Формат

Как устроено обучение?

Каждая тема — это теория с примерами, автоматически проверяемые задачи (написать, исправить ошибку, дописать модуль к готовому коду, ускорить медленное решение) и тест. Весь код вы пишете и запускаете в браузерном редакторе LMS; компилятор — g++ со стандартом C++17.

  • Теория

    35 уроков с примерами

  • Практика в браузере

    55+ заданий с автоматической проверкой

  • Тесты

    18 тестов для самопроверки

  • Свой темп

    Онлайн на my.prog.academy, без установки программ

AI-помощник

AI-помощник рядом во время обучения

На страницах курса, уроков и заданий есть кнопка «Спросить AI». Помощник знает материалы именно этого курса и урок, на котором вы сейчас, поэтому отвечает по теме и показывает, в каких уроках об этом говорится.

  • Объяснит иначе

    Не поняли урок с первого раза — попросите объяснить проще или привести ещё один пример.

  • Поможет с заданием

    Застряли — подскажет, с чего начать, и поможет найти ошибку в вашем решении. Готового решения не даёт.

  • Найдёт нужную тему

    Спросите, где объясняли понятие, — и получите ссылки на нужные уроки курса.

  • Продолжит разговор

    Уточняйте без повторов: помощник помнит разговор, а недавние разговоры курса сохраняются.

Входит в каждый тариф оплаченной подписки — Basic и Premium. В Premium лимиты использования AI-помощника выше — им можно пользоваться активнее. Это помощник в обучении, а не генератор готовых ответов: он объясняет и подсказывает, а задания вы решаете сами.

Программа

Программа курса

18 модулей, 55+ практических заданий с автоматической проверкой и 18 тестов. Откройте модуль, чтобы увидеть все темы.

Модуль 1. От основ к Advanced: сборка программы, операторы и форматированный ввод-вывод 2 урока · 2 практики · 1 тест

Как g++ превращает текст в программу, что такое неопределённое поведение, тернарный оператор, do/while, шестнадцатеричные литералы, printf/scanf и потоки с iomanip.

  • Теория Как собирается программа на C++ и чего ждёт этот курс
  • Теория Операторы, которых не было в основах, и форматированный ввод-вывод
  • Практика Hex-дамп байтов
  • Практика Отчёт о регистрах из hex-значений
  • Тест Сборка, UB и форматирование
Модуль 2. Целые числа и биты 2 урока · 3 практики · 1 тест

Дополнительный код, целочисленное продвижение и обычные арифметические преобразования, ловушки знаковых и беззнаковых чисел, сдвиги, маски, битовые поля в 32-битном регистре, abs/llabs/fabs и static_cast.

  • Теория Как целые числа хранятся и преобразуются
  • Теория Битовые операции: маски, сдвиги и поля регистров
  • Практика Поля 32-битного регистра
  • Практика Сырые слова датчиков в знаковые числа
  • Практика Найдите ошибку в перенесённом CRC
  • Тест Целые числа и биты
Модуль 3. Память и время жизни объектов 2 урока · 3 практики · 1 тест

Где лежат данные программы (стек, куча, статические данные, код), sizeof/alignof и выравнивание полей структур, инициализация значением, область видимости и время жизни, висячие ссылки, статические локальные переменные, состояние модуля в файловых static и анонимных пространствах имён.

  • Теория Где лежат данные: стек, куча, статическая память и размер структур
  • Практика Раскладка структуры в памяти
  • Теория Время жизни объектов, висячие ссылки и состояние модуля
  • Практика Найдите ошибки времени жизни
  • Практика Модуль ограничения запросов с состоянием в файле
  • Тест Память и время жизни
Модуль 4. Указатели и массивы 2 урока · 4 практики · 1 тест

Сырые массивы и их преобразование в указатель, операции & и *, nullptr, арифметика и разность указателей, const T* против T* const, API «указатель + количество», выходные параметры через указатель, указатели на структуры и ->, массивы структур, указатель на указатель.

  • Теория Массивы, адреса и арифметика указателей
  • Практика Найдите ошибки в арифметике указателей
  • Теория API с указателями: буферы, выходные параметры и ->
  • Практика Библиотека функций над буфером байтов
  • Практика Реестр датчиков — ->, выходные параметры и массив структур
  • Практика Разбор потока кадров курсором
  • Тест Указатели и массивы
Модуль 5. Строки в стиле C и взаимодействие с C API 2 урока · 3 практики · 1 тест

Массивы char и завершающий '\0', функции cstring, почему strcpy/strcat/sprintf опасны, snprintf и strncpy, надёжный разбор чисел через strtol/errno и sscanf, переход между std::string и C-строками, extern "C" и API в стиле (буфер, размер).

  • Теория Строки в стиле C: массив char, '\0' и функции cstring
  • Теория Надёжный разбор чисел и вызов C API
  • Практика Разбор строк key=value с кодами ошибок
  • Практика Контрольная сумма и поля NMEA-предложения
  • Практика Найти переполнение в C API
  • Тест C-строки и C API
Модуль 6. Функции глубже: перегрузка, рекурсия, указатели на функции 2 урока · 4 практики · 1 тест

Перегрузка и как компилятор выбирает функцию, аргументы по умолчанию, inline, рекурсия, возврат структур через return {...}, указатели на функции, типы колбэков через using, колбэки с контекстом void* и таблицы диспетчеризации.

  • Теория Перегрузка, аргументы по умолчанию, рекурсия и возврат структур
  • Теория Указатели на функции, колбэки и таблицы диспетчеризации
  • Практика Стековая машина с таблицей команд
  • Практика Программные таймеры с колбэками
  • Практика Калькулятор с рекурсивным спуском
  • Практика Какую функцию вызовет компилятор
  • Тест Функции, рекурсия и колбэки
Модуль 7. Структура программы: заголовки, единицы трансляции, компоновка 2 урока · 3 практики · 1 тест

Разделение на.h и.cpp, include guards и #pragma once, объявление и определение, правило одного определения (ODR), extern, static и анонимное пространство имён, inline-функции и переменные, пространства имён, ошибки компилятора и линкера, статические и динамические библиотеки (-I, -L, -l, rpath) и основы CMake.

  • Теория Заголовки, единицы трансляции и правило одного определения
  • Теория Библиотеки, компоновка и основы CMake
  • Практика Модуль по готовому заголовку
  • Практика Общий счётчик, который не общий
  • Практика Компилятор, линкер или всё в порядке
  • Тест Структура программы и библиотеки
Модуль 8. Классы: инкапсуляция, конструкторы, деструкторы и RAII 2 урока · 3 практики · 1 тест

class и struct, private/public и инварианты, конструкторы и список инициализации, const-методы, ссылки-члены и explicit, статические члены, деструкторы, порядок создания и уничтожения объектов и RAII.

  • Теория Классы: инкапсуляция, инварианты и конструкторы
  • Теория Деструкторы, порядок жизни объектов и RAII
  • Практика Читатель байтов с проверкой границ
  • Практика Стек освобождения ресурсов (RAII)
  • Практика Класс в заголовке, методы в.cpp
  • Тест Классы, конструкторы и RAII
Модуль 9. Копирование, перемещение и перегрузка операторов 2 урока · 3 практики · 1 тест

Конструктор копирования и присваивание, поверхностная и глубокая копия, правило нуля/трех/пяти, перемещение и std::move, состояние после перемещения, RVO, перегрузка операторов и дружественные функции на примере числа с фиксированной запятой.

  • Теория Копирование: поверхностная и глубокая копия, правило трех
  • Теория Перемещение, std::move и перегрузка операторов
  • Практика Отмена действия, которая не отменяет
  • Практика Операторы для числа Q16.16
  • Практика Перемещение вместо копирования
  • Тест Копирование, перемещение и операторы
Модуль 10. Динамическая память и умные указатели 2 урока · 3 практики · 1 тест

new/delete и new[]/delete[], утечки, двойное освобождение и висячие указатели; std::unique_ptr и передача владения, shared_ptr со счетчиком ссылок, weak_ptr для циклов, собственные deleter-ы для C API и пулы объектов без кучи для встроенных систем.

  • Теория new и delete: почему сырой указатель-владелец опасен
  • Теория shared_ptr, weak_ptr, собственные deleter-ы и пулы без кучи
  • Практика Связный список на unique_ptr
  • Практика Пул объектов со списком свободных слотов
  • Практика Цикл shared_ptr, из-за которого ничего не освобождается
  • Тест Память и умные указатели
Модуль 11. Наследование, виртуальные функции и интерфейсы 2 урока · 3 практики · 1 тест

Базовые и производные классы, virtual/override/final, чисто виртуальные интерфейсы, зачем виртуальный деструктор, срезка объектов, полиморфные контейнеры, внедрение зависимостей через интерфейс и фейки для детерминированных тестов, композиция вместо наследования.

  • Теория Наследование и виртуальные функции
  • Теория Интерфейсы, внедрение зависимостей и фейки для тестов
  • Практика Найдите ошибку в тарифах связи
  • Практика Термостат с внедрёнными зависимостями
  • Практика Конвейер обработки текста из композиции
  • Тест Наследование и интерфейсы
Модуль 12. Шаблоны, constexpr и обобщённое программирование 2 урока · 3 практики · 1 тест

Шаблоны функций и классов, вывод аргументов, параметры-значения template<typename T, size_t N>, std::array, обобщённый RingBuffer<T, N>, специализация, constexpr-функции и таблицы на этапе компиляции, static_assert, if constexpr, type traits и обобщённые алгоритмы над итераторами.

  • Теория Шаблоны функций и классов
  • Теория constexpr, static_assert, if constexpr и type traits
  • Практика Шаблонный кольцевой буфер RingBuffer<T, N>
  • Практика Таблица CRC-8 на этапе компиляции
  • Практика Обобщённая статистика для разных типов
  • Тест Шаблоны и constexpr
Модуль 13. STL: контейнеры, итераторы, алгоритмы и лямбды 2 урока · 4 практики · 1 тест

vector глубже (capacity, reserve, insert/erase, инвалидация итераторов, data()), deque, map/unordered_map/set и ловушки operator[], pair и tuple, структурные привязки, std::optional, поиск в std::string, итераторы, алгоритмы <algorithm> и <numeric>, лямбды с захватом и std::function.

  • Теория Контейнеры STL: vector глубже, deque, map, set и optional
  • Теория Итераторы, алгоритмы и лямбды
  • Практика Отчёт по журналу веб-сервера
  • Практика Скользящее окно на deque
  • Практика Найдите ошибки в разборе конфигурации
  • Практика Калибровочная таблица и lower_bound
  • Тест Контейнеры, алгоритмы и лямбды
Модуль 14. Обработка ошибок и исключения 2 урока · 3 практики · 1 тест

Коды ошибок и исключения, throw/try/catch, стандартная иерархия исключений и собственные классы, noexcept, раскрутка стека и RAII, гарантии безопасности исключений, типы-результаты для кода без исключений.

  • Теория Коды ошибок и исключения: throw, try, catch
  • Теория Безопасность исключений, RAII и типы-результаты
  • Практика Валидатор конфигурации на исключениях
  • Практика Переписать парсер с исключений на тип-результат
  • Практика Транзакция «всё или ничего» (найдите ошибку)
  • Тест Ошибки и исключения
Модуль 15. Бинарные данные и сериализация 2 урока · 3 практики · 1 тест

Байтовые буферы, порядок байтов, сборка и разбор чисел сдвигами, почему не reinterpret_cast и когда memcpy, знаковые и фиксированные числа из байтов, сериализация записей, TLV с проверкой границ, CRC-16, кадры с синхробайтом и ресинхронизация, файлы в бинарном режиме.

  • Теория Байты, порядок байтов и безопасное чтение чисел
  • Теория Сериализация, TLV, CRC и кадры
  • Практика Разбор бинарной записи метеостанции
  • Практика TLV-парсер, который не читает за границы (найдите ошибки)
  • Практика Кодек кадров с CRC-16 и ресинхронизацией
  • Тест Бинарные данные
Модуль 16. Многопоточность и синхронизация 2 урока · 3 практики · 1 тест

std::thread, join и detach, передача аргументов и std::ref, гонки данных как неопределённое поведение, std::mutex и lock_guard/unique_lock, взаимная блокировка, std::atomic, condition_variable и очередь производитель-потребитель, std::async и std::future, пул потоков и детерминированный вывод.

  • Теория Потоки, гонки данных и мьютексы
  • Теория Условные переменные, future и детерминированный вывод
  • Практика Параллельная статистика по частям
  • Практика Пропавшие результаты потоков (найдите ошибку)
  • Практика Ограниченная очередь для конвейера потоков
  • Тест Потоки и синхронизация
Модуль 17. Производительность, отладка и профилирование 2 урока · 3 практики · 1 тест

Сложность алгоритмов на практике, выбор контейнера, локальность кеша, лишние копии, что делает оптимизатор, ловушки бенчмарков; предупреждения компилятора, assert, AddressSanitizer и UBSan, gdb и профилировщики — сначала найти горячую точку, потом оптимизировать.

  • Теория Производительность: сложность, контейнеры, кеш и копии
  • Теория Отладка и профилирование: предупреждения, санитайзеры, gdb, perf
  • Практика Посетители сайта — от O(n²) к O(n log n)
  • Практика Три бага в статистике осадков
  • Практика Прочитать отчет о падении и исправить
  • Тест Производительность и отладка
Модуль 18. Итоговый проект: библиотека пакетного протокола 1 урок · 3 практики · 1 тест

Многофайловый проект в три шага: кодирование кадров с CRC-16, потоковый парсер за интерфейсом FrameSink и прикладной уровень домашней сети датчиков со статистикой и отчетом. Архитектура слоями, тестирование с фейками, политика обработки ошибок и итоговый тест по всему курсу.

  • Теория Архитектура проекта: слои, интерфейсы, фейки и политика ошибок
  • Практика Шаг 1 — кадр и CRC-16
  • Практика Шаг 2 — потоковый парсер с ресинхронизацией
  • Практика Шаг 3 — прикладной уровень и отчет станции
  • Тест Итог курса

Стек

Какие технологии используются?

  • C++

Код пишете и запускаете в браузере на платформе — устанавливать ничего не нужно.

Доступ

Как получить доступ?

  1. Оставьте заявку

    Заполните короткую форму на этой странице.

  2. Завершите регистрацию в Telegram

    После заявки перейдите в Telegram-бот Prog Academy — он пришлёт дальнейшие инструкции по доступу.

  3. Учитесь на платформе

    Уроки, практика и тесты — на my.prog.academy, в удобном для вас темпе.

Контакт

Начните обучение на платформе

Оставьте контакты — пришлём детали доступа к курсу «C++ Advanced».

Другие курсы по подписке

Терминал Linux (bash)

Основы Linux

Командная строка с нуля: файлы, права, процессы, сеть, bash-скрипты и SSH — в терминале учебной Ubuntu.

13 модулей · 40+ практических заданий

Кибербезопасность с ИИ: защита от современных атак и безопасная работа с искусственным интеллектом

Защита от современных атак для нетехнических специалистов: фишинг, пароли и MFA, инциденты, дипфейки и безопасная работа с ИИ.

12 модулей · 30+ практических заданий

Частые вопросы о курсе

Что это за курс?

«C++ Advanced» — онлайн-курс по подписке на учебной платформе Prog Academy. C++ Advanced: от основ языка к коду, который пишут в реальных проектах. Курс для тех, кто уже прошёл «Основы программирования на C++» (или уверенно знает переменные, циклы, std::vector, функции, struct, ссылки и целые типы фиксированной ширины) и хочет писать настоящий код на C++: для встраиваемых систем, робототехники, сетевых сервисов или высоконагруженных приложений.

Для кого этот курс?

Курс для тех, кто уже прошёл «Основы программирования на C++» (или уверенно знает переменные, циклы, std::vector, функции, struct, ссылки и целые типы фиксированной ширины) и хочет писать настоящий код на C++: для встраиваемых систем, робототехники, сетевых сервисов или высоконагруженных приложений.

Какие знания нужны перед стартом?

Предыдущий курс: «Основы программирования на C++».

Какие технологии используются?

C++. Код пишете и запускаете прямо в браузере на платформе — устанавливать ничего не нужно.

Сколько модулей в курсе?

18 модулей: От основ к Advanced: сборка программы, операторы и форматированный ввод-вывод; Целые числа и биты; Память и время жизни объектов; Указатели и массивы; Строки в стиле C и взаимодействие с C API; Функции глубже: перегрузка, рекурсия, указатели на функции; Структура программы: заголовки, единицы трансляции, компоновка; Классы: инкапсуляция, конструкторы, деструкторы и RAII; Копирование, перемещение и перегрузка операторов; Динамическая память и умные указатели; Наследование, виртуальные функции и интерфейсы; Шаблоны, constexpr и обобщённое программирование; STL: контейнеры, итераторы, алгоритмы и лямбды; Обработка ошибок и исключения; Бинарные данные и сериализация; Многопоточность и синхронизация; Производительность, отладка и профилирование; Итоговый проект: библиотека пакетного протокола. Практических заданий с автоматической проверкой — 55+, тестов — 18.

Как получить доступ?

Оставьте заявку на этой странице и завершите регистрацию в Telegram-боте Prog Academy — там вы получите дальнейшие инструкции по доступу. Обучение проходит на платформе my.prog.academy в своём темпе.

Входит ли курс в подписку?

Да. Курс входит в подписку на платформе Prog Academy: доступ ко всем курсам по подписке; ai-помощник по обучению в каждом курсе; все уроки, домашние задания и автоматическая проверка; новые курсы по подписке добавляются автоматически.

Не нашли ответ?

Оставьте вопрос — подскажем, подходит ли вам курс и с чего лучше начать.