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

ДО ПРОГРАМИ КУРСУ ВХОДЯТЬ
ДЛЯ НАВЧАННЯ НА КУРСІ ПО С++ ПОТРІБНІ:
-
Базові знання програмування: розуміння змінних, умов, циклів та функцій будь-якою мовою.
-
Навички роботи з інструментами розробника: вміння користуватись командним рядком та Git
Дмитро Г.
Lead Software Engineer, Miltech Company
-
Понад 5 років розробки на С++ для систем з обмеженими ресурсами, також працював з C, Java, Python
-
Займався розробкою та оптимізацією алгоритмів керування для систем розумного автомобіля, а також розробкою infotainment систем та HMI
-
Нині працює в українській продуктовій компанії, яка займається повним циклом виробництва БПЛА літакового типу. Найскладніші задачі на поточному проєкті: обробка відео у реальному часі, розробка системи надійного звʼязку у будь-яких умовах, автоматизація процесів керування БПЛА для полегшення роботи оператора
-
Має досвід роботи над Miltech проєктами з нуля, комунікації з кінцевим користувачем, технічною підтримкою та тестуванням розроблених рішень у бойових умовах

Програма
-
01 заняття07.09.202619:30
Специфіка програмування для Military Tech
- Зрозумієте можливі шляхи розвитку як C++-розробника у Military Tech
- Розберетеся з особливостями C++ та навчитеся пояснювати їх
- Зрозумієте, на чому варто концентруватися під час написання коду на C++ у Military Tech
- Напишете базову програму на C++ та поясните процес переходу від human language до машинного коду
-
02 заняття09.09.202619:30
Типи даних, оператори, умови
- Зрозумієте представлення різних типів даних у бітовій формі
- Розберетеся з перевагами типів даних із
- Ознайомитеся з основними операторами у C++
- Ознайомитеся з патерном bitmap
-
03 заняття14.09.202619:30
Цикли, функції
- Зрозумієте різницю між різними операціями циклу
- Навчитеся писати базові алгоритми з використанням циклів
- Навчитеся оголошувати функції для перевикористання коду
- Ознайомитеся з патерном main event loop
- Зрозумієте, коли доцільно використати функцію, а коли — цикл
-
04 заняття16.09.202619:30
Масиви, рядки, вказівники та посилання
- Зрозумієте, що таке масив, як із ним працювати і як його розміщено в пам’яті програми
- Навчитеся писати програми з використанням масивів і рядків
- Ознайомитеся з основними помилками, пов’язаними з виходом за межі масиву
- Зрозумієте, що таке вказівник та як працювати з пам’яттю напряму
- Ознайомитеся з основними помилками під час використання вказівників
- Зрозумієте різницю між вказівником і масивом
-
05 заняття21.09.202619:30
Структури даних, макроси
- Навчитеся створювати й використовувати структури, enum та union у своїх програмах
- Зрозумієте механізм вирівнювання пам’яті та його роль в embedded-системах
-
06 заняття23.09.202619:30
Файлове введення та виведення, багатопоточність
- Навчитеся працювати з даними, що зберігаються у файлах
- Зрозумієте основні принципи багатопоточності
- Розберетеся, коли потрібно створювати додаткові процеси та які ризики це створює
-
07 заняття28.09.202619:30
Робота з динамічною пам’яттю, керування ресурсами
- Дізнаєтеся, що таке динамічна пам’ять і чим вона відрізняється від статичної
- Зрозумієте, коли краще використовувати динамічну пам’ять
- Розберетеся з проблемами, які можуть виникнути через використання динамічної пам’яті
-
08 заняття30.09.202619:30
Linux для розробника: файлова система, термінал, базові команди Bash
- Зрозумієте організацію файлової системи Linux
- Навчитеся навігувати файловою системою через термінал
- Навчитеся підключатися до віддаленого девайса через ssh
-
09 заняття05.10.202619:30
Bash-скрипти, права доступу, процеси та змінні середовища
- Отримаєте базові навички роботи з bash
- Навчитеся читати й писати прості скрипти у bash
-
10 заняття07.10.202619:30
Середовища розробки. Використання контейнерів для розробки
- Навчитеся вибирати й налаштовувати середовище розробки
- Навчитеся переносити невеликі проєкти в контейнери
-
11 заняття12.10.202619:30
Системи контролю версій. Git, GitHub
- Зрозумієте, для чого використовують системи контролю версій
- Опануєте git та навчитеся налаштовувати репозиторій, створювати гілки й коміти
- Дізнаєтеся best practices роботи з git та зрозумієте, що краще не комітити в репозиторій
-
12 заняття14.10.202619:30
Доктрини ООП, основи ООП в С++
- Зрозумієте основні принципи ООП та навчитеся пояснювати їх
- Навчитеся створювати класи у C++
- Зрозумієте, як правильно інкапсулювати використання ресурсів у клас C++
-
13 заняття19.10.202619:30
Спадкування та поліморфізм у С++
- Зрозумієте, як працюють віртуальні методи у C++
- Навчитеся виділяти абстрактний інтерфейс для класів
- Навчитеся перевантажувати оператори
-
14 заняття21.10.2026 19:30
Шаблони (templates), узагальнене програмування
- Навчитеся використовувати шаблони у C++
-
15 заняття26.10.202619:30
Інструменти бібліотеки STL
- Дізнаєтеся, які інструменти бібліотеки STL вам доступні
- Зрозумієте, як оцінити ефективність алгоритму за допомогою O-нотації
- Навчитеся працювати з ітераторами, std::vector та розумними вказівниками
-
16 заняття28.10.202619:30
Як збирається С++ код (етапи компіляції, білд системи)
- Зрозумієте, як збирається C++ код, які проблеми можуть виникнути та як їх вирішувати
- Навчитеся працювати з make і CMake
- Навчитеся підключати різні бібліотеки до свого проєкту
-
17 заняття02.11.202619:30
Дебаг та діагностика помилок: GDB, core dumps, sanitizers, Valgrind
- Навчитеся відлагоджувати C++ код та діагностувати найпоширеніші проблеми
-
18 заняття04.11.202619:30
Тестування C++ коду: Google Test. Базова якість коду: форматування, статичний аналіз, правила проєкту
- Навчитеся писати юніт-тести та зрозумієте концепцію TDD
- Навчитеся використовувати clang-tidy та clang-format
- Розберетеся, як вмикати clang-tidy та clang-format у VS Code
-
19 заняття09.11.202619:30
Best practices для створення maintainable коду. Clean Code. Патерни програмування. SOLID. DDD.
- Навчитеся критично оцінювати, наскільки легко підтримувати ваш код
- Зрозумієте основні загальноприйняті принципи написання чистого коду
- Дізнаєтеся найпоширеніші патерни програмування
-
20 заняття11.11.202619:30
Протоколи передачі даних. Модель OSI. Серіалізація даних.
- Дізнаєтесь про модель OSI та місце кожного протоколу в ній
- Розберетеся з поняттям серіалізації даних
- Навчитеся серіалізувати й десеріалізувати дані в різні формати
- Зрозумієте поняття CRC та ECC і навчитеся використовувати їх для передачі даних мережею
-
21 заняття16.11.202619:30
Інтернет протоколи. UDP vs TCP/IP. Клієнт-серверна взаємодія.
- Зрозумієте різницю між UDP та TCP
- Навчитеся вибирати протокол відповідно до потреб завдання
- Навчитеся писати UDP або TCP клієнтів і серверів через сокети
-
22 заняття18.11.202619:30
Qt: архітектура, сигнали та слоти, Qt Creator, Qt5 vs Qt6
- Зрозумієте, що таке фреймворк Qt та як його використовувати
- Навчитеся створювати простий застосунок на Qt і використовувати механізм сигналів та слотів
- Зрозумієте, що таке moc, rcc та uic
- Розберетеся з патернами event loop та observer
-
23 заняття23.11.202619:30
Розробка GUI на QML
- Зрозумієте різницю між QtWidgets та QML
- Навчитеся створювати базовий інтерфейс на QML та обмінюватися даними з C++ кодом
-
24 заняття25.11.202619:30
Роботи з колекціями даних у QML. MVC паттерн.
- Зрозумієте способи виведення та розміщення кількох об’єктів на інтерфейсі
- Навчитеся створювати власні моделі даних та відображати їх у QML
- Зрозумієте патерн MVC
-
25 заняття30.11.202619:30
Огляд додаткових можливостей Qt
- Зрозумієте, які можливості фреймворку Qt можна використовувати у своїх застосунках
-
26 заняття02.12.202619:30
ROS 2 основи на практиці: nodes, topics, rclcpp pub/sub, ros2 CLI
- Зрозумієте, навіщо ROS 2 у контексті MilTech і чим pub/sub топіки відрізняються від прямих UDP/TCP-з’єднань
- Навчитеся створювати ROS 2 пакет на C++, писати publisher і subscriber, збирати й запускати їх
- Навчитеся використовувати ros2 CLI для інспекції запущених нод і топіків
-
27 заняття07.12.202619:30
ROS 2 як система: services, launch, параметри (YAML). Принцип: алгоритм окремо від ROS 2
- Зрозумієте різницю між topics і services
- Навчитеся вибирати правильний механізм для конкретного завдання
- Навчитеся писати launch-файл і конфігурацію у YAML
- Зрозумієте й навчитеся застосовувати принцип розділення алгоритму і ROS 2-обгортки
-
28 заняття09.12.202619:30
Архітектура мікроконтролерів, регістри, переривання, пам'ять
- Зрозумієте, що таке мікроконтролер і як побудована його архітектура
- Розберетеся з контекстом обмежених ресурсів та необхідністю оптимізувати програми для мікроконтролерів
- Навчитеся запускати базову програму на ESP32 у симуляторі Wokwi
-
29 заняття14.12.202619:30
Робота з периферією. Низькорівневі протоколи передачі даних
- Навчитеся працювати з периферійними девайсами
- Зрозумієте різницю між основними протоколами передачі даних
- Навчитеся використовувати протоколи передачі даних для конкретних завдань
-
30 заняття16.12.2026 19:30
RTOS: концепції, задачі, черги, семафори (FreeRTOS)
- Зрозумієте, навіщо потрібна RTOS і чим вона відрізняється від звичайного циклу while(1)
- Навчитеся створювати задачі у FreeRTOS, передавати дані між ними через чергу та захищати спільні ресурси м’ютексом
- Зрозумієте, як проєктувати просту багатозадачну систему на мікроконтролері
-
31 заняття21.12.202619:30
Огляд одноплатових компʼютерів (Raspberry PI, Nvidia Jetson)
- Зрозумієте, що таке одноплатний комп’ютер та дізнаєтеся найпопулярніші моделі
- Навчитеся вибирати апаратне рішення для конкретного завдання
- Зрозумієте, де у типовій архітектурі дрона розміщений мікроконтролер, а де — бортовий комп’ютер
-
32 заняття23.12.202619:30
OSS проєкти для розробки дронів
- Зрозумієте можливості, які надають OSS-проєкти для розробки дронів
- Навчитеся компілювати OSS-проєкти та запускати симуляції за їхньою документацією
-
33 заняття04.01.202719:30
Заглиблення у MAVLink
- Зрозумієте, як побудовані MAVLink-повідомлення
- Навчитеся генерувати файли для роботи з MAVLink
- Навчитеся створювати власні повідомлення
-
34 заняття06.01.202719:30
Симуляція дрона в Gazebo
- Навчитеся підіймати симуляцію дрона у Gazebo через Docker
- Зрозумієте, як Gazebo, SITL, QGroundControl і ROS 2 з’єднуються в єдиний стек та яку роль виконує кожен компонент
- Навчитеся відправляти базові команди до симульованого дрона через MAVLink і перевіряти їх виконання
-
35 заняття11.01.202719:30
Створення і відлагодження базових відео пайплайнів
- Зрозумієте призначення та різні види відеокодеків
- Навчитеся працювати з gstreamer та створювати базові відеопайплайни
- Навчитеся відлагоджувати gstreamer-пайплайни
-
36 заняття13.01.202719:30
Основи криптографії
- Зрозумієте, для чого потрібно захищати дані
- Навчитеся генерувати й використовувати приватні та публічні ключі
- Розберетеся з концепціями signing, encryption та secure boot
-
37 заняття18.01.202719:30
Вступ у системи автоматичного керування
- Дізнаєтеся, що вивчає дисципліна систем автоматичного керування
- Навчитеся використовувати PID-контролер і підбирати його коефіцієнти
-
38-40 заняття20.01, 25.01, 01.0219:30
Робота над курсовим проєктом
Розробите прикладний C++-проєкт для MilTech-домену: програмний код, документацію та демонстрацію рішення в одному з напрямів — алгоритми для дронових сценаріїв, Qt/QGC-інтерфейс керування, embedded/RTOS-рішення або симуляція роботи системи
Теми:
- Консультація з лектором щодо завдання
- Старт роботи над курсовим проєктом. Вибір теми, обговорення архітектури.
- Захист фінальних проєктів. Демонстрація, підбиття підсумків курсу.
реєстрація
Заповнюйте заявку на онлайн-навчання з C++, щоб отримати цілісне розуміння розробки надійних систем і створити фінальний MilTech-проєкт для портфоліо.