С++ ДЛЯ ВОЕННЫХ ТЕХНОЛОГИЙ
Научитесь писать код на 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 на 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 занятst15.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-проект для портфолио.