Погрузитесь в современный С++: диапазоны, концепты, execution, корутины
Освоите инструменты многопоточности и асинхронности, а также парадигму структурированного параллелизма
Выполните 9 практических работ, а опытный разработчик проведёт ревью вашего кода
Попрактикуетесь в возможностях последних стандартов С++: 20, 23 и 26
Научитесь яснее выражать намерения в коде, чтобы легче поддерживать его
Получите сертификат о завершении курса
Курс будет полезен разработчикам С++, которые хотят углубить свои знания и расти в должности
Junior разработчикам с уверенными базовыми навыками в C++
Углубите знания, освоите идиомы, лучшие практики языка, современные стандарты и асинхронность, научитесь работать с потоками и использовать инструменты для оптимизации памяти, поиска ошибок и выявления неопределённого поведения
Middle разработчикам С++
Расширите знания о современных стандартах языка, выясните, как эффективно работать с диапазонами, чтобы моделировать коллекции данных, научитесь применять идиомы и конструкции структурированного параллелизма
Курс подойдёт, если вы
Пишете код на С++ более 1 года
Знаете основные конструкции языка, такие как специализация шаблона, перегрузка функции и другие
Используете стандартную библиотеку С++: контейнеры и алгоритмы
Знакомы с базовыми структурами данных и алгоритмами
Понимаете принципы многопоточности и асинхронности
Разбираетесь в практиках блочного тестирования, инструментах gmock/gtest и Boost.Test
За 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
Получите сертификат о завершении курса
Как устроен курс
Никаких давно снятых видео и длинных лекций
Вы проходите теорию и закрепляете её на практике на интерактивной платформе. Можно заниматься во сколько и где удобно, главное — укладываться в дедлайны по проектам.
По расписанию только воркшопы с наставниками, остальное — в своём темпе
Опытные разработчики разбирают сложные кейсы и отвечают на ваши вопросы на живых воркшопах. Если не успеваете, можно смотреть в записи.
Курсы в Практикуме похожи на реальную работу
Программа поделена на спринты — отрезки по 2–3 недели, за которые вы изучаете тему и делаете проект. Потом отправляете его на ревью, а эксперт проверяет и комментирует. И тот же цикл дальше, пока не дойдёте до конца.
YandexGPT помогает осваивать курс
Когда в теории что-то непонятно, нейросеть объяснит это другими словами. А в конце каждого модуля подготовит краткий пересказ о самом главном.
Будете заниматься сами, но не в одиночестве — вас поддержит заботливая команда Практикума
Наши эксперты давно работают с С++
Они составили программу, опираясь на свой опыт, поэтому вы будете проходить только то, что на самом деле пригодится в работе.
Михаил Афанасьев
Автор курса. Руководитель группы в Яндекс Рекламе. Строит систему потоковой обработки данных рекламной сети. Более 10 лет разрабатывает высоконагруженные системы.
Денис Герасимов
Автор курса. Более 14 лет разрабатывает на C++ как контрактный разработчик, включая проекты из области вычислительной фотолитографии и электроимпедансной томографии.
Владимир Тройняков
Автор курса. Старший разработчик в Т-Банке в команде детектирования фрод-операций. Имеет многолетний опыт интеграции ML-решений в высоконагруженный С++ код.
Иван Лосев
Автор курса. Старший разработчик в Pixida GmbH с опытом 7+ лет в промышленной разработке в крупных многонациональных командах. Специализируется на разработке комплексных (E2E) решений для кодирования и декодирования видео с использованием аппаратно-ускоряемых кодеков AVC, HEVC и AV1.
Знакомы с основными конструкциями языка: специализацией шаблона, перегрузкой функции и другими.
Знакомы с базовыми структурами данных и алгоритмами.
Понимаете принципы многопоточности и асинхронности.
Знакомы с практиками блочного тестирования (unit testing), инструментами gmock/gtest и Boost.Test.
Также важно, чтобы у вас была возможность уделять курсу 10–15 часов в неделю на протяжении 4,5 месяца.
Кто будет помогать мне проходить курс?
Все наставники — практикующие специалисты: сотрудники Яндекса и других крупных компаний. Программу составляют опытные методисты, а ещё действующие специалисты Яндекса, Школы анализа данных и других лидеров технологической индустрии.
Что делать, если я не справлюсь с нагрузкой?
В программе предусмотрен перерыв, во время которого можно отдохнуть или повторить сложные темы.
Если случилось непредвиденное или понадобилось больше времени на закрепление материала, напишите своему куратору. Он поможет перенести дедлайн сдачи проекта или перевестись в более позднюю когорту. На общую стоимость курса это не повлияет.
Если не понравится, я могу вернуть деньги?
Конечно. Если курс ещё не начался, вернём всю сумму. Если уже начался, придётся оплатить прошедшие дни со старта вашей первой когорты — но мы вернём деньги за остаток курса. Более подробно рассказываем об этом в 7 пункте оферты.
Получу ли я какой-то документ после курса?
Да, вы получите сертификат о завершении курса.
Вы поможете сменить или найти работу?
На этом курсе не предусмотрена помощь с трудоустройством, поскольку он для действующих специалистов, у которых уже есть навыки поиска работы.
Но если у вас появится вопрос о карьерном развитии, обратитесь в нашу службу поддержки — постараемся ответить.
Как можно оплатить?
Банковской картой: внести всю сумму сразу или платить ежемесячно.
Ежемесячные платежи работают так: вы вносите первую оплату, и в этот момент привязывается карта. С этой карты автоматически будут списываться следующие платежи каждые 30 календарных дней. Например, оплатили 25 марта — следующий платёж пройдёт 24 апреля. Курс будет стоить меньше, если оплатить его сразу целиком.
Через компанию: юридические лица также могут оплатить курс в Практикуме. Чтобы заказать счёт для оплаты, оставьте заявку на странице для корпоративных клиентов.
На каком языке проходит курс?
Всё будет на русском: теория, практические задания и вебинары, а ещё чаты с куратором, наставником и другими участниками курса.
Давайте поможем
Мы работаем с 09:00 до 18:00 по минскому времени и связываемся в течение одного дня. Если оставите заявку сейчас, то перезвоним уже в рабочее время.