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+ практичних завдань

JavaScript (Node.js)

Як працює веб: від URL до HTTPS, API і безпеки

Шлях запиту від URL до готової сторінки: DNS, TCP, TLS, HTTP, кеш, cookies, API і захист вебзастосунків.

11 модулів · 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-помічник з навчання в кожному курсі; усі уроки, домашні завдання та автоматична перевірка; нові курси за підпискою додаються автоматично.

Не знайшли відповідь?

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