С++ ДЛЯ ВІЙСЬКОВИХ ТЕХНОЛОГІЙ
Навчіться писати код на C++ для інтеграції з бойовими протоколами та «залізом», щоб створювати надійні MilTech-системи
Євген Гаврилюк
Development Team Lead
Miltech company
Євген Кузнецов
Staff Software Engineer
Apex.AI

ДО ПРОГРАМИ КУРСУ ВХОДЯТЬ
ДЛЯ НАВЧАННЯ НА КУРСІ ПО С++ ПОТРІБНІ:
-
Базові знання програмування: розуміння змінних, умов, циклів та функцій будь-якою мовою.
-
Навички роботи з інструментами розробника: впевнене користування командним рядком та Git
ЄВГЕН ГАВРИЛЮК
Development Team Lead, Miltech company
-
має 13 років досвіду розробки програмного забезпечення на C++, Python, CUDA, а також у сфері ML та Unreal Engine
-
працював у міжнародних компаніях, таких як Samsung, Luxoft, Eleks, Scopic, MWDN та A5
-
розробляв програмні рішення у сферах комп’ютерного зору, технічної та медичної візуалізації, Virtual Production, Automotive, розподілених обчислень та AI
-
нині займає позицію Head of IT і Tech Lead у мілітарі-компанії, що розробляє дрони, системи зв’язку та інші технологічні рішення для військових потреб
-
має глибокі знання в радіотехніці, 3D-моделюванні, фізиці та математиці; здобув ступінь магістра з прикладної фізики та електроніки

ЄВГЕН КУЗНЕЦОВ
Staff Software Engineer, Apex.AI
-
ментор DroneAid Collective: навчає збирати, налаштовувати й тестувати FPV-дрони
-
понад 14 років досвіду в розробці на C++/Qt та Linux, спеціалізується на системній інтеграції, middleware (ROS 2, DDS), інфраструктурі та CI/CD
-
працював над програмними компонентами, що використовуються в серійних автомобілях Mercedes і Hyundai, розробляв HMI та інфотейнмент-системи для масового виробництва
-
нині займається розробкою Defence Tech системи для безпілотних платформ — від проєктування до коду, тестів та запуску.
-
останніми роками спеціалізується на real-time та safety-critical системах для транспортних і роботизованих платформ, з фокусом на C++ та embedded-середовище
-
активно залучений в Defence Tech-ініціативи: працює над автономністю безпілотних систем, counter-drone рішеннями та є фіналістом NATO Innovation Challenge

Програма
-
01 заняття06.04.202619:30
Вступ до програмування та Military Tech
- Зрозумієте роль C++ розробника на military-підприємстві
- Дізнаєтеся принцип роботи компілятора C++
- Навчитеся створювати робочу програму на C++ та вводити значення в консоль
-
02 заняття08.04.202619:30
Оператори та логіка
- Зрозумієте, як реалізовувати умовну логіку обчислень на C++
- Навчитеся робити розрахунки за формулами
- Опануєте базову математику векторів та координат і навчитеся її реалізовувати
-
03 заняття13.04.202619:30
Цикли та масиви
- Навчитеся використовувати цикли для покрокових обчислень
- Дізнаєтесь, як зберігати й обробляти набори даних у масивах
- Познайомитеся з принципами симуляції руху в часі та навчитеся їх реалізовувати
-
04 заняття15.04.202619:30
Функції
- Опануєте використання функцій в C++
- Дізнаєтесь, як писати модульний та перевикористовуваний код
- Зрозумієте область видимості змінних та механізми передачі параметрів у функції
-
05 заняття20.04.202619:30
Основи структур даних та макроси
- Розберете всі етапи роботи зі структурами та макросами
- Навчитеся читати й писати дані у форматі JSON
- Зрозумієте принципи організації даних у структури та керування вирівнюванням у пам’яті
-
06 заняття22.04.202619:30
Основи роботи з пам’яттю
- Зможете розуміти вказівники та посилання
- Дізнаєтесь, як керувати пам’яттю на базовому рівні
- Побачите відмінності між стеком та купою і розберетеся, коли їх використовувати
-
07 заняття27.04.202619:30
Середовище розробки. VS Code, devcontainers, Linux, C++ тули
- Опануєте роботу у VS Code з devcontainers
- Вивчите базові Linux-команди
- Почнете працювати над власним C++ проєктом із вбудованою якістю
-
08 заняття29.04.202619:30
Структура C++ проєктів та контроль версій коду. Git, GitHub, Pull Request
- Зможете працювати з Git/GitHub на базовому рівні
- Створите чіткий роадмап власного C++ проєкту
- Навчитеся створювати PR на рев’ю
-
09 заняття04.05.202619:30
Від ручної компіляції до CMake: як збирається ваш код
- Дізнаєтеся різницю між ручною компіляцією та CMake
- Розберетесь, як збирати базовий CMake-проєкт
- Навчитеся самостійно виправляти типові помилки збірки
-
10 заняття06.05.202619:30
Дебаг та діагностика помилок: GDB, core dumps, sanitizers, Valgrind
- Опануєте принципи та послідовність діагностування падіння C++ застосунків
- Розберете різницю між видами аналізу помилок
- Дізнаєтесь, як налаштовувати дебаг у VS Code
-
11 заняття11.05.202619:30
Тестування C++ коду: Google Test
- Навчитеся писати unit-тести
- Зрозумієте роль тестів у надійності систем
- Зможете інтегрувати GTest і проводити їхній запуск через CTest
-
12 заняття13.05.202619:30
Базова якість коду: форматування, статичний аналіз, правила проєкту
- Зрозумієте, як підтримувати якість коду актуальними інструментами
- Зможете готувати зміни, готові до рев’ю
- Навчитеся налаштовувати та використовувати статичний аналіз коду (clang-tidy) та слідкувати за мінімальними “coding rules”
-
13 заняття18.05.202619:30
Вступ до ООП
- Розберетесь у принципах ООП і проєктування
- Навчитеся створювати та імплементувати інтерфейси
- Зрозумієте та навчитеся застосовувати базові принципи наслідування
-
14 заняття20.05.202619:30
Класи
- Опануєте роботу з класами на професійному рівні
- Навчитеся правильно застосовувати патерни та складні числові прийоми
- Навчитеся реалізовувати патерни «Фабрика» та «Стратегія»
-
15 заняття25.05.202619:30
Структура проєкту
- Опануєте грамотне структурування C++ проєктів та зможете протестувати навички на власній роботі
- Зрозумієте принцип роботи директив #include та #define
- Навчитеся використовувати простори імен та попередні оголошення для зменшення залежностей
-
16 заняття27.05.202619:30
STL і складність алгоритмів
- Опануєте використання STL-контейнерів стандартної бібліотеки
- Розберетеся в методиках оцінки складності алгоритмів
- Зрозумієте відмінності та переваги різних контейнерів STL
-
17 заняття01.06.202619:30
Керування ресурсами
- Опануєте використання розумних вказівників
- Зрозуміжте різницю між unique_ptr та shared_ptr
- Навчитеся використовувати розумні вказівники для запобігання витокам пам'яті
-
18 заняття03.06.202619:30
Багатопотоковість
- Навчитеся синхронізувати потоки й створювати воркери
- Дізнаєтесь, як будувати асинхронні черги для розрахунків
-
19 заняття08.06.202619:30
Одноплатні комп'ютери як платформа
- Зможете формулювати вимоги до цільової платформи
- Навчитеся розуміти host/target і наслідки для збірки/тестування
- Дізнаєтеся різницю між ARM і x86 та її роль у деплої
-
20 заняття10.06.202619:30
Огляд популярних систем
- Розберетеся в одноплатних мікрокомп’ютерах і роботі з ними
- Навчитеся розрізняти особливості та відмінності популярних SBC
- Опануєте налаштування середовища для роботи з симуляторами одноплатних комп'ютерів
-
21 заняття15.06.202619:30
Hardware-інтерфейси
- Зрозумієте, які hardware-інтерфейси має Raspberry Pi та як з ними працювати
- Навчитеся працювати з пінами загального призначення (GPIO) для вводу/виводу
- Опануєте принципи роботи інтерфейсів UART, SPI, I²C
-
22 заняття17.06.202619:30
Поглиблена робота з інтерфейсами
- Навчитесь інтегрувати hardware-інтерфейси з C++ застосунку
- Опануєте використання бібліотеки для програмної роботи з пінами.
- Зрозумієте, як виводити керуючий сигнал на GPIO пін
-
23 заняття22.06.202619:30
Docker runtime для C++ сервісів
- Опануєте збірку та запуск контейнерів та навчитеся їх діагностувати
- Розберетесь у self-test/healthcheck і volumes
- Дізнаєтеся, коли та як застосовувати DinD без виходу з devcontainer
-
24 заняття24.06.202619:30
Docker Compose як system bring-up: запускаємо систему з 2–3 C++ сервісів
- Навчитеся підіймати систему з кількох контейнерів однією командою
- Зможете додавати базовий healthcheck і розуміти, що саме він перевіряє
- Дізнаєтесь, як ресурсні ліміти (CPU/RAM) впливають на поведінку системи
-
25 заняття29.06.202619:30
ROS 2 основи: nodes/topics/pub-sub
- Навчитеся писати ROS 2 ноду на C++ (publisher/subscriber)
- Опануєте перевірку роботи через ros2 CLI
-
26 заняття01.07.202619:30
ROS 2 як система: services/launch/params
- Розберетесь, як робити ROS 2 service сервер на C++ і викликати його клієнтом
- Отримаєте загальну інформацію про те, як працює зорова система
- Зможете запускати стек з кількох нод через launch і керувати параметрами через YAML
- Навчитеся відокремлювати алгоритмічну логіку (C++ module) від ROS 2 комунікації
-
27 заняття06.07.202619:30
ROS 2 під капотом: DDS/RTPS, QoS
- Зможете обирати QoS під задачу (телеметрія vs команди)
- Зрозумієте, що варто перевіряти насамперед при drops/latency/невидимих топіках
-
28 заняття08.07.202619:30
Операційність: надійність, метрики, healthcheck, відтворюваність (replay/rosbag2)
- Навчитеся додавати метрики та self-test для контролю працездатності
- Опануєте практичну перевірку QoS і зрозумієте, як зміна QoS впливає на drops/latency та поведінку монітора
-
29 заняття13.07.202619:30
Протокол передачі даних
- Зможете орієнтуватись у протоколах, що застосовуються в Defence Tech
- Зрозумієте специфіку передачі даних, характерну для Defence Tech
- Навчитеся обирати протокол передачі даних відповідно до вимог задачі
-
30 заняття15.07.202619:30
Інтернет-протоколи
- Навчитеся налаштовувати комунікацію між пристроями в LAN
- Зможете працювати з TCP/UDP на базовому рівні
- Дізнаєтеся, як реалізовувати комунікацію через сокети
-
31 заняття20.07.202619:30
Протоколи локальної мережі дальньої дії
- Зможете орієнтуватися в протоколах дальньої дії
- Навчитеся налаштовувати комунікацію з C++ застосунку по CAN-шині
- Зрозумієте призначення та принципи роботи протоколів Modbus та MIL-STD-1553
-
32 заняття22.07.202619:30
Протоколи ближньої дії + АЦП
- Опануєте роботу з UART/I²C/SPI та навчитеся інтегрувати АЦП
- Зрозумієте, як ховати імплементації за інтерфейсами
-
33 заняття27.07.202619:30
Mavlink
- Зможете спілкуватися з політними контролерами
- Зрозумієте структуру повідомлень Mavlink та механізм їхньої передачі
-
34 заняття29.07.202619:30
Стейт машини
- Пройдете пайплайн роботи зі state machine
- Навчитеся орієнтуватись у розповсюджених патернах проєктування в embedded програмуванні
- Дізнаєтеся, як застосовувати принципи модульного програмування
-
35 заняття03.08.202619:30
Вступ до Embedded
- Розберетесь у принципах роботи мікроконтролерів
- Навчитеся налаштовувати середовище для ESP32
- Зрозумієте, як обмежені ресурси (RAM, Flash) впливають на архітектуру програмного забезпечення
-
36 заняття05.08.202619:30
Периферія: GPIO і таймери
- Зможете писати прошивки на ESP32
- Опануєте програмування комунікацій ESP32 по CAN/I²C/SPI
- Навчитеся використовувати таймери для періодичних завдань у мікроконтролері
-
37 заняття10.08.202619:30
Вступ до RTOS
- Зрозумієте принципи роботи RTOS
- Навчитеся працювати з поняттями «задача» та «планувальник» у контексті RTOS
- Зрозумієте необхідність RTOS для систем реального часу
-
38 заняття12.08.202619:30
Поглиблене вивчення RTOS
- Навчитеся створювати RTOS-архітектуру
- Зможете налаштовувати систему реального часу відповідно до вимог
- Опануєте специфічні для сфери задачі, використовуючи функціонал RTOS
-
39 заняття17.08.202619:30
Старт роботи над курсовим проєктом
- Зможете формулювати та обґрунтовувати архітектуру комплексного Embedded C++ проєкту
- Визначите вимоги до фінального проєкту та оберете релевантну тему з MilTech
- Навчитеся планувати розробку проєкту
-
40 заняття24.08.202619:30
Захист фінальних проєктів
- Зможете презентувати технічні рішення та результати своєї роботи
- Навчитеся аналізувати власний код і надавати/отримувати конструктивний фідбек
- Зрозумієте, як об'єднати знання з усіх блоків курсу для створення цілісного рішення
реєстрація
Заповнюйте заявку на онлайн-навчання з C++, щоб отримати цілісне розуміння розробки надійних систем і створити фінальний MilTech-проєкт для портфоліо.