За 4,5 месяца вы научитесь
Применять лучшие практики и идиомы языка, а также яснее выражать намерения в коде
Использовать диапазоны, чтобы эффективно работать с коллекциями данных в С++
Разбираться в библиотечных и языковых возможностях последних стандартов: 20, 23 и 26
Пользоваться инструментами асинхронности: сопрограммами и структурированным параллелизмом
Работать с продвинутыми API многопоточности в С++
Применять jemalloc, чтобы находить утечки памяти, и санитайзеры, чтобы выявлять ошибки в коде
Программа курса
Рассчитана на 4,5 месяца, в среднем учёбе нужно уделять 10–15 часов в неделю
~1 час
Бесплатно
Знакомство и входной тест
В бесплатной части познакомитесь с платформой и проверите свои знания
  • Знакомство с курсом
  • Платформа
  • Время на прохождение курса
  • Тестирование
Как устроен курс
Поймёте, как его проходить и сколько это занимает времени, узнаете, кто будет вам помогать осваивать материал
Входной тест
Ответите на несколько вопросов и решите, подходит ли вам эта программа
Пройдёте входной тест и поймёте, подходит ли вам курс
1
1 практическая работа・2 недели
Управление памятью и ресурсами
  • RAII
  • Scopegard
  • Семантика перемещения
  • Умные указатели
  • STL
  • boost::intrusive_ptr
  • std::out_ptr
  • std::inout_ptr
Память и ресурсы
Научитесь управлять памятью, рассмотрите типы умных указателей и RAII, познакомитесь с семантикой перемещения, правилом пяти
Реализуете библиотеку работы с файлами или дескрипторами. Спроектируете класс моделирующий дескриптор
2
1 практическая работа · 1 воркшоп・2 недели
Шаблоны
  • Лямбды и мультилямбды
  • CRTP
  • Концепты
  • deducing this
  • SFINAE
  • constexpr
  • consteval
  • Вариативный шаблон
  • Свёрточные выражения
  • Пакет параметров шаблона
Шаблоны
Изучите шаблоны класса и функции, научитесь формулировать требования к типам с помощью концептов
Программы времени компиляции
Познакомитесь с написанием программ времени компиляции и изучите ключевые слова constexpr и consteval
Воркшоп
Познакомитесь с техникой внедрения зависимостей и научитесь их внедрять классическим способом при помощи вариабельного шаблона переменной
Напишете несколько программ времени компиляции. Реализуете концепты, формулирующие требования к типам. Реализуете класс при помощи CRTP
3
1 практическая работа・2 недели
Алгоритмы + структуры данных = программы
  • Итераторы
  • Лямбды
  • Последовательные контейнеры
  • Ассоциативные контейнеры
  • Алгоритмы стандартной библиотеки
  • STL
  • algorithm
  • numeric
  • vector
  • deque
  • span
  • flat_map
Алгоритмы стандартной библиотеки
Познакомитесь с алгоритмами стандартной библиотеки, изучите случаи и практики их применения
Структуры данных стандартной библиотеки
Изучите последовательные и ассоциативные контейнеры, представленные в стандартной библиотеке
Реализуете программу для управления библиотекой. Оцените необходимость замены готовых частей кода на вызовы алгоритмов стандартной библиотеки
4
1 практическая работа · 1 воркшоп・2 недели
Диапазоны
  • ranges
  • views
  • Отображения
  • Проекции
  • Адаптеры
  • Комбинирование отображений
  • Диапазонные формы алгоритмов
Диапазоны
Познакомитесь с диапазонами, отображениями и алгоритмами над ними, изучите возможности диапазонов, сможете записывать алгоритмы в виде комбинации отображений
Воркшоп
Реализуете собственный доменный адаптер, разберёте опасности применения диапазонов и увидите, каким выразительным становится код с их помощью
Реализуете геометрический алгоритм с помощью комбинирования отображений, использования диапазонов и проекций
5
1 практическая работа・2 недели
Словарные типы
  • optional
  • Монадические операции optional
  • variant
  • visit
  • any
  • expected
  • STL
Словарные типы: optional, variant, any
Изучите словарные типы как дополнительные инструменты моделирования, поймёте области применимости и познакомитесь с другими способами обработки ошибок
Словарные типы: expected
Познакомитесь со способом обработки ошибок без использования исключений
Реализуете библиотеку для работы с двумерной геометрией. Смоделируете разные типы кривых при помощи variant, будете использовать optional в алгоритмах, а expected для обработки ошибок
1 неделя
Каникулы
Неделя перерыва, чтобы отвлечься от учёбы или доделать практические задания
6
1 практическая работа · 1 воркшоп・3 недели
Многопоточность и параллелизм
  • Политика выполнения
  • jthread
  • stop_token
  • mutex
  • latch
  • barrier
  • counting_semaphore
  • STL
Примитивы синхронизации
Познакомитесь с библиотекой синхронизационных примитивов и изучите случаи использования
Параллелизм
Освоите стандартные политики выполнения алгоритмов
Воркшоп
Познакомитесь с полным диапазоном примитивов синхронизации C++: от базового мьютекса до современных latch, barrier и countint semaphore для защиты доступа к общему ресурсу
Разработаете классы для реализации очереди Producer/Consumer. Реализуете перемножение матриц, попробуете разные политики выполнения алгоритмов
7
1 практическая работа・2 недели
Асинхронность, сопрограммы
  • async
  • promise
  • future
  • Корутины
  • co_await
  • co_return
  • generator
Асинхронность
Познакомитесь с инструментами асинхронного выполнения и изучите std::async, std::future, std::promise
Сопрограммы
Освоите сопрограммы как инструмент написания асинхронного кода
Реализуете библиотеку управления проектным файлом или документом. Смоделируете операции сохранения, синхронизации, обновления с помощью асинхронных операций и сопрограмм
8
1 практическая работа · 1 воркшоп・2 недели
Структурированный параллелизм
  • structured concurrency
  • senders
  • receivers
  • cancellation
  • operation state
  • scheduler
  • Потребитель сендера
  • Адаптер сендера
  • Фабрики сендеров
Структурированный параллелизм
Познакомитесь с предлагаемым в C++26 способом создавать многопоточные и асинхронные программы, изучите понятия structured concurrency в C++ на примере библиотеки libunifex.
Воркшоп
Разберёте, как многопоточный код в традиционном стиле можно изменить с помощью выразительных абстракций библиотеки std::exectuion. Увидите на примерах, как структурированный параллелизм помогает переосмысливать асинхронные программы и управлять их ресурсами.
Перепишете библиотеку управления проектным файлом при помощи инструментов структурированного параллелизма. Реализуете алгоритм обратной трассировки луча при помощи senders/receivers
9
1 практическая работа・1 неделя
Сборка программ, инструменты поиска ошибок
  • Компиляция
  • Компоновка
  • Архивация
  • Порядок построения программы
  • Санитайзеры
  • ThreadSanitizer
  • MemorySanitizer
  • Поиск утечек памяти
  • make
Сборка программ на С++
Познакомитесь со всеми этапами построения программы: от файла с исходным кодом до исполняемого
Инструменты
Узнаете, какие инструменты можно использовать для помощи в анализе ошибок, познакомитесь с инструментами статического и динамического анализа
Разработаете Makefile для сборки библиотеки и исполняемого файла. Реализуете CMakeLists.txt для сборки того же самого. Подключите библиотеку Boost, найдёте ошибки в предложенных программах с помощью санитайзеров
С наставником
Воркшопы для разбора сложных тем, сессии Q&A
Получите сертификат о повышении квалификации
Это официальный документ установленного образца, который принимают работодатели
Как устроена учёба
YandexGPT помогает учиться
Когда в теории что-то непонятно, нейросеть объяснит это другими словами. А в конце каждого урока подготовит краткий пересказ о самом главном.
Этот курс может оплатить
ваш работодатель
Полностью или разделив оплату с вами,
например 50/50 или 75/25
  • Расскажем всё про курс
  • Сообщим стоимость
  • Ответим на ваши вопросы
  • Подготовим договор и счёт
Отвечаем на вопросы
Каким требованиям нужно соответствовать?
Курс рассчитан на разработчиков с опытом, поэтому мы подразумеваем, что вы:
  • Пишете код на С++ более 1 года.
  • Используете стандартную библиотеку С++: контейнеры, алгоритмы, ввод‑вывод.
  • Знакомы с основными конструкциями языка: специализацией шаблона, перегрузкой функции и другими.
  • Знакомы с базовыми структурами данных и алгоритмами.
  • Понимаете принципы многопоточности и асинхронности.
  • Знакомы с практиками блочного тестирования (unit testing), инструментами gmock/gtest и Boost.Test.
Также важно, чтобы у вас была возможность уделять учёбе 10–15 часов в неделю на протяжении 4,5 месяца.
Кто будет меня учить?
Все наставники — практикующие специалисты: сотрудники Яндекса и других крупных компаний. Программу составляют опытные преподаватели и методисты, а ещё действующие специалисты Яндекса, Школы анализа данных и других лидеров технологической и образовательной индустрий.
Что делать, если я не справлюсь с нагрузкой?
В программе предусмотрены каникулы, во время которых можно отдохнуть или повторить сложные темы.

Если случилось непредвиденное или понадобилось больше времени на закрепление материала, напишите своему куратору. Он поможет перенести дедлайн сдачи проекта или перевестись в более поздний поток. На общую стоимость курса это не повлияет.
Если не понравится, я могу вернуть деньги?
Конечно. Если поток ещё не стартовал, вернём всю сумму. Если учёба уже началась, придётся оплатить прошедшие дни со старта вашего первого потока — но мы вернём деньги за остаток курса. Более подробно рассказываем об этом в 7 пункте оферты.
Получу ли я какой-то документ после курса?
Да, вы получите сертификат о повышении квалификации.
Вы поможете сменить или найти работу?
На этом курсе не предусмотрена помощь с трудоустройством, поскольку он для действующих специалистов, у которых уже есть навыки поиска работы.

Но если у вас появится вопрос о карьерном развитии, обратитесь в нашу службу поддержки — постараемся ответить.
Как можно оплатить?
Банковской картой: внести всю сумму сразу или платить ежемесячно.

Ежемесячные платежи работают так: вы вносите первую оплату, и в этот момент привязывается карта. С этой карты автоматически будут списываться следующие платежи каждые 30 календарных дней. Например, оплатили 25 марта — следующий платёж пройдёт 24 апреля. Обучение будет стоить меньше, если оплатить весь курс сразу.

Через компанию: юридические лица также могут оплатить обучение в Практикуме. Чтобы заказать счёт для оплаты, оставьте заявку на странице для корпоративных клиентов.
На каком языке проходит обучение?
Всё будет на русском: теория, практические задания и вебинары, а ещё чаты с куратором, наставником и другими студентами.

Давайте поможем

Напишите, как вас зовут и по какому номеру можно связываться — в течение 30 минут позвоним и расскажем всё про курсы