За 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 минут позвоним и расскажем всё про курсы