Основы Linux
Командная строка с нуля: файлы, права, процессы, сеть, bash-скрипты и SSH — в терминале учебной Ubuntu.
Курс по подписке
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».
Командная строка с нуля: файлы, права, процессы, сеть, bash-скрипты и SSH — в терминале учебной Ubuntu.
Путь запроса от URL до готовой страницы: DNS, TCP, TLS, HTTP, кеш, cookies, API и защита веб-приложений.
Защита от современных атак для нетехнических специалистов: фишинг, пароли и MFA, инциденты, дипфейки и безопасная работа с ИИ.
Оставьте вопрос — подскажем, подходит ли вам курс и с чего лучше начать.