Числові основи: NumPy для машинного навчання
Масиви, зрізи, broadcasting і матриці — числова основа, на якій стоять pandas, scikit-learn і PyTorch.
Курс за підпискою
C++ Advanced: від основ мови до коду, який пишуть у реальних проєктах
Отримати доступ до курсу
Курс за підпискою · Навчання у власному темпі
Про курс
Курс для тих, хто вже пройшов «Основи програмування на C++» (або впевнено знає змінні, цикли, std::vector, функції, struct, посилання і цілі типи фіксованої ширини) і хоче писати справжній код на C++: для вбудованих систем, робототехніки, мережевих сервісів чи високонавантажених застосунків.
Ви розберетеся, як працює пам'ять і вказівники, як класи керують ресурсами (RAII), що таке копіювання і переміщення, навчитеся писати шаблони, користуватися контейнерами й алгоритмами STL, обробляти помилки, розбирати й формувати бінарні дані, ділити програму на заголовки й одиниці трансляції, запускати потоки й синхронізувати їх, а також шукати помилки й вузькі місця продуктивності. Завершує курс підсумковий проєкт — бібліотека кодування пакетів з кількох файлів.
Аудиторія
Пройшли основи C++
Перейдете до пам'яті й вказівників, RAII, копіювання й переміщення, шаблонів, контейнерів і алгоритмів STL.
Пишете для embedded чи робототехніки
Розбиратимете й формуватимете бінарні дані, працюватимете з бітами й C API та зберете бібліотеку пакетного протоколу.
Мережеві й високонавантажені сервіси
Запускатимете й синхронізуватимете потоки, шукатимете помилки й вузькі місця продуктивності.
Курс спирається на знання, позначені нижче як обов’язкові.
Потрібно знати
Якщо цих знань ще немає — пройдіть курси за порядком:
Формат
Кожна тема — це теорія з прикладами, автоматично перевірювані задачі (написати, виправити помилку, дописати модуль до готового коду, прискорити повільне рішення) і тест. Увесь код ви пишете й запускаєте у браузерному редакторі LMS; компілятор — g++ зі стандартом C++17.
35 уроків з прикладами
55+ завдань з автоматичною перевіркою
18 тестів для самоперевірки
Онлайн на my.prog.academy, без встановлення програм
AI-помічник
На сторінках курсу, уроків і завдань є кнопка «Запитати AI». Помічник знає матеріали саме цього курсу й урок, на якому ви зараз, тому відповідає по темі й показує, у яких уроках про це йдеться.
Не зрозуміли урок з першого разу — попросіть пояснити простіше або дати ще один приклад.
Застрягли — підкаже, з чого почати, і допоможе знайти помилку у вашому рішенні. Готового рішення не дає.
Запитайте, де пояснювали поняття, — і отримаєте посилання на потрібні уроки курсу.
Уточнюйте без повторів: помічник пам’ятає розмову, а нещодавні розмови курсу зберігаються.
Входить у кожен тариф оплаченої підписки — Basic і Premium. У Premium ліміти використання AI-помічника вищі — ним можна користуватися активніше. Це помічник у навчанні, а не генератор готових відповідей: він пояснює й підказує, а завдання ви розв’язуєте самі.
Програма
18 модулів, 55+ практичних завдань з автоматичною перевіркою і 18 тестів. Відкрийте модуль, щоб побачити всі теми.
Як g++ перетворює текст на програму, що таке невизначена поведінка, тернарний оператор, do/while, шістнадцяткові літерали, printf/scanf і потоки з iomanip.
Доповнювальний код, цілочисельне просування і звичайні арифметичні перетворення, пастки знакових і беззнакових чисел, зсуви, маски, бітові поля в 32-бітному регістрі, abs/llabs/fabs і static_cast.
Де лежать дані програми (стек, купа, статичні дані, код), sizeof/alignof і вирівнювання полів структур, ініціалізація значенням, область видимості й час життя, висячі посилання, статичні локальні змінні, стан модуля у файлових static і анонімних просторах імен.
Сирі масиви і їх перетворення на вказівник, операції & і *, nullptr, арифметика і різниця вказівників, const T* проти T* const, API «вказівник + кількість», вихідні параметри через вказівник, вказівники на структури й ->, масиви структур, вказівник на вказівник.
Масиви char і завершальний '\0', функції cstring, чому strcpy/strcat/sprintf небезпечні, snprintf і strncpy, надійний розбір чисел через strtol/errno і sscanf, перехід між std::string і C-рядками, extern "C" і API у стилі (буфер, розмір).
Перевантаження і як компілятор обирає функцію, аргументи за замовчуванням, inline, рекурсія, повернення структур через return {...}, вказівники на функції, типи колбеків через using, колбеки з контекстом void* і таблиці диспетчеризації.
Поділ на.h і.cpp, include guards і #pragma once, оголошення і визначення, правило одного визначення (ODR), extern, static і анонімний простір імен, inline-функції й змінні, простори імен, помилки компілятора і лінкера, статичні й динамічні бібліотеки (-I, -L, -l, rpath) і основи CMake.
class і struct, private/public та інваріанти, конструктори й список ініціалізації, const-методи, посилання-члени і explicit, статичні члени, деструктори, порядок створення й знищення об'єктів і RAII.
Конструктор копіювання й присвоєння, поверхнева і глибока копія, правило нуля/трьох/п'яти, переміщення і std::move, стан після переміщення, RVO, перевантаження операторів і дружні функції на прикладі числа з фіксованою комою.
new/delete і new[]/delete[], витоки, подвійне звільнення й завислі вказівники; std::unique_ptr і передача володіння, shared_ptr з лічильником посилань, weak_ptr для циклів, власні deleter-и для C API і пули об'єктів без купи для вбудованих систем.
Базові й похідні класи, virtual/override/final, чисто віртуальні інтерфейси, навіщо віртуальний деструктор, зрізання об'єктів, поліморфні контейнери, впровадження залежностей через інтерфейс і фейки для детермінованих тестів, композиція замість наслідування.
Шаблони функцій і класів, виведення аргументів, параметри-значення template<typename T, size_t N>, std::array, узагальнений RingBuffer<T, N>, спеціалізація, constexpr-функції й таблиці на етапі компіляції, static_assert, if constexpr, type traits і узагальнені алгоритми над ітераторами.
vector глибше (capacity, reserve, insert/erase, інвалідація ітераторів, data()), deque, map/unordered_map/set і пастки operator[], pair і tuple, структурні прив'язки, std::optional, пошук у std::string, ітератори, алгоритми <algorithm> і <numeric>, лямбди із захопленням і std::function.
Коди помилок і винятки, throw/try/catch, стандартна ієрархія винятків і власні класи, noexcept, розгортання стека і RAII, гарантії безпеки винятків, типи-результати для коду без винятків.
Байтові буфери, порядок байтів, збирання й розбирання чисел зсувами, чому не reinterpret_cast і коли memcpy, знакові й фіксовані числа з байтів, серіалізація записів, TLV з перевіркою меж, CRC-16, кадри з синхробайтом і ресинхронізація, файли в бінарному режимі.
std::thread, join і detach, передавання аргументів і std::ref, гонки даних як невизначена поведінка, std::mutex і lock_guard/unique_lock, взаємне блокування, std::atomic, condition_variable і черга виробник-споживач, std::async і std::future, пул потоків і детермінований вивід.
Складність алгоритмів на практиці, вибір контейнера, локальність кешу, зайві копії, що робить оптимізатор, пастки бенчмарків; попередження компілятора, assert, AddressSanitizer і UBSan, gdb і профілювальники — спершу знайти гарячу точку, потім оптимізувати.
Багатофайловий проєкт у три кроки: кодування кадрів з CRC-16, потоковий парсер за інтерфейсом FrameSink і прикладний рівень домашньої мережі датчиків зі статистикою та звітом. Архітектура шарами, тестування з фейками, політика обробки помилок і підсумковий тест за весь курс.
Стек
Код пишете й запускаєте в браузері на платформі — встановлювати нічого не потрібно.
Доступ
Заповніть коротку форму на цій сторінці.
Після заявки перейдіть у Telegram-бот Prog Academy — він надішле подальші інструкції щодо доступу.
Уроки, практика й тести — на my.prog.academy, у зручному для вас темпі.
Контакт
Залиште контакти — надішлемо деталі доступу до курсу «C++ Advanced».
Масиви, зрізи, broadcasting і матриці — числова основа, на якій стоять pandas, scikit-learn і PyTorch.
Командний рядок з нуля: файли, права, процеси, мережа, bash-скрипти і SSH — у терміналі навчальної Ubuntu.
Шлях запиту від URL до готової сторінки: DNS, TCP, TLS, HTTP, кеш, cookies, API і захист вебзастосунків.
Залиште запитання — підкажемо, чи підходить вам курс і з чого краще почати.