Погрузитесь в современный С++: диапазоны, концепты, execution, корутины
Освоите инструменты многопоточности и асинхронности, а также парадигму структурированного параллелизма
Выполните 9 практических работ, а опытный разработчик проведёт ревью вашего кода
Попрактикуетесь в возможностях последних стандартов С++: 20, 23 и 26
Научитесь яснее выражать намерения в коде, чтобы легче поддерживать его
Получите удостоверение о повышении квалификации
Курс будет полезен разработчикам С++, которые хотят углубить свои знания и расти в должности
Junior разработчикам с уверенными базовыми навыками в C++
Углубите знания, освоите идиомы, лучшие практики языка, современные стандарты и асинхронность, научитесь работать с потоками и использовать инструменты для оптимизации памяти, поиска ошибок и выявления неопределённого поведения
Middle разработчикам С++
Расширите знания о современных стандартах языка, выясните, как эффективно работать с диапазонами, чтобы моделировать коллекции данных, научитесь применять идиомы и конструкции структурированного параллелизма
Для тех, кто хочет освоить C++ с нуля, есть отдельный курс
Вы разберётесь в стандартной библиотеке С++ и начнёте работать с Git, IDE и компиляторами, а также разработаете несколько онлайн‑сервисов
В бесплатной части познакомитесь с платформой и проверите свои знания
Знакомство с курсом
Платформа
Время на прохождение курса
Тестирование
Как устроен курс
Поймёте, как его проходить и сколько это занимает времени, узнаете, кто будет вам помогать осваивать материал
Входной тест
Ответите на несколько вопросов и решите, подходит ли вам эта программа
Пройдёте входной тест и поймёте, подходит ли вам курс
1
1 практическая работа・2 недели
Управление памятью и ресурсами
RAII
Scopegard
Семантика перемещения
Умные указатели
STL
boost::intrusive_ptr
std::out_ptr
std::inout_ptr
Основы управления ресурсами
Рассмотрите ручное управление памятью и проблемы использования new/delete. Познакомитесь с семантикой перемещения, обменом состояниями и идиомами RAII, ScopeGuard.
Разделяемое владение
Разберёте совместное владение ресурсом, опасности и ограничения использования std::shared_ptr. Изучите семантику перемещения в стандартной библиотеке, а также взаимодействие с API-библиотекой.
Разработаете и протестируете библиотеку на основе OpenSSL, а также приложение, которое выполняет основные криптографические операции
2
1 практическая работа · 1 воркшоп・2 недели
Шаблоны
Лямбды и мультилямбды
CRTP
Концепты
deducing this
SFINAE
constexpr
consteval
Вариативный шаблон
Свёрточные выражения
Пакет параметров шаблона
Шаблоны
Изучите шаблоны класса и функции, научитесь формулировать требования к типам с помощью концептов
Программы времени компиляции
Познакомитесь с написанием программ времени компиляции и изучите ключевые слова constexpr и consteval
Воркшоп
Познакомитесь с техникой внедрения зависимостей и научитесь их внедрять классическим способом при помощи вариабельного шаблона переменной
Реализуете типобезопасные функции разбора отформатированной строки. Выберете, как реализовать функции времени компиляции или времени выполнения
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 для защиты доступа к общему ресурсу
Разработаете классы для реализации очереди. Настроите системы передачи сообщений между потоками
7
1 практическая работа・2 недели
Асинхронность, сопрограммы
async
promise
future
Корутины
co_await
co_return
generator
Асинхронность
Познакомитесь с инструментами асинхронного выполнения и изучите std::async, std::future, std::promise
Сопрограммы
Освоите сопрограммы как инструмент написания асинхронного кода
Реализуете библиотеку, чтобы загружать файлы по сети в 2 режимах: последовательном и параллельном. Для этого используете сопрограммы и другие инструменты асинхронного программирования
8
1 практическая работа · 1 воркшоп・2 недели
Структурированный параллелизм
structured concurrency
senders
receivers
cancellation
operation state
scheduler
Потребитель сендера
Адаптер сендера
Фабрики сендеров
Структурированный параллелизм
Познакомитесь с предлагаемым в C++26 способом создавать многопоточные и асинхронные программы, изучите понятия structured concurrency в C++ на примере библиотеки libunifex.
Воркшоп
Разберёте, как многопоточный код в традиционном стиле можно изменить с помощью выразительных абстракций библиотеки std::exectuion. Увидите на примерах, как структурированный параллелизм помогает переосмысливать асинхронные программы и управлять их ресурсами.
Разработаете программу обратной трассировки луча с помощью сендеров и ресиверов
9
1 практическая работа・1 неделя
Сборка программ, инструменты поиска ошибок
Компиляция
Компоновка
Архивация
Порядок построения программы
Санитайзеры
ThreadSanitizer
MemorySanitizer
Поиск утечек памяти
make
Сборка программ на С++
Познакомитесь со всеми этапами построения программы: от файла с исходным кодом до исполняемого
Инструменты
Узнаете, какие инструменты можно использовать для помощи в анализе ошибок, познакомитесь с инструментами статического и динамического анализа
Найдёте ошибки в предложенных программах с помощью санитайзеров. Реализуете пользовательский плагин, чтобы автоматизировать специальный рефакторинг предложенного кода
С наставником
Воркшопы для разбора сложных тем, сессии Q&A
Получите удостоверение о повышении квалификации
Это официальный документ установленного образца, который принимают работодатели. Образовательная лицензия № Л035‑01298‑77/00185314 от 24 марта 2015 года.
Как устроена учёба
Никаких давно снятых видео и длинных лекций
Вы проходите теорию и закрепляете её на практике в интерактивном учебнике. Можно заниматься во сколько и где удобно, главное — укладываться в дедлайны по проектам.
По расписанию только воркшопы с наставниками, остальное — в своём темпе
Опытные разработчики разбирают сложные кейсы и отвечают на ваши вопросы на живых воркшопах. Если не успеваете, можно смотреть в записи.
Учёба в Практикуме похожа на реальную работу
Проектные работы курса отражают настоящие вызовы, с которыми сталкиваются мидл-специалисты в своей работе. Вы выполните 9 практических работ и доработаете их после обратной связи от практикующего эксперта курса.
YandexGPT помогает учиться
Когда в теории что-то непонятно, нейросеть объяснит это другими словами. А в конце каждого урока подготовит краткий пересказ о самом главном.
2 формата обучения на выбор
С дедлайнами. Модули открываются по расписанию — их важно проходить за определённое время. Проекты тоже нужно сдавать точно в срок.
В своём темпе. Темы и задания открываются по мере прохождения. Можно завершить курс быстрее или продлить обучение на 2 месяца.
Будете заниматься сами, но не в одиночестве — вас поддержит заботливая команда Практикума
Наши эксперты давно работают с С++
Они составили программу, опираясь на свой опыт, поэтому вы будете проходить только то, что на самом деле пригодится в работе.
Михаил Афанасьев
Автор курса. Руководитель группы в Яндекс Рекламе. Строит систему потоковой обработки данных рекламной сети. Более 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 апреля. Обучение будет стоить меньше, если оплатить весь курс сразу.
Через компанию, если она налоговый резидент РФ. Условия для юридических лиц и ИП отличаются — чтобы узнать подробнее, оставьте заявку или уточните у вашего менеджера.
Что такое налоговый вычет на обучение и как его получить?
Налоговый вычет может получить тот, кто работает по трудовому договору и является налоговым резидентом Российской Федерации, то есть 183 дня в году находится на территории страны.