На языке C++ можно разработать что угодно

Освоите профессию с нуля за 9 месяцев

Получите мощный набор навыков и инструментов

Мы регулярно обновляем наш курс вместе с действующими разработчиками и руководителями из индустрии — так вы учитесь только тому, что актуально

Git
STL
Алгоритмы
Дебагинг
Юнит-тестирование
ООП
UML-диаграммы
RAII
CMake
VS Code
Библиотеки
Move-семантика
Архитектура
Паттерны
Qt

Обновили программу в сентябре 2024 года, чтобы вы учились только актуальному

Есть базовый и расширенный форматы — со вторым вы быстрее вырастете до уровня middle
10 часов
Бесплатно
Базовые понятия программирования
Бесплатный модуль, который не обязателен для прохождения, но поможет познакомиться с форматом обучения, основами программирования и научиться писать простые программы на C++
  • Переменные и типы
  • Цикл for и ветвления
  • Функции
Знакомство с С++
Поймёте, кто такой разработчик С++ , с какими проектами и задачами он может работать.
Переменные и ввод
Узнаете, какие типы переменных используются в программе, написанной на С++. После сами напишете первые программы, которые считывают информацию от пользователя.
Условные функции, цикл for
Выясните, что такое ветвления и цикл for, зачем и как их можно использовать.
Функции
Научитесь писать простые функции для структурирования кода.
Познакомитесь с языком программирования С++ и научитесь писать базовые программы. Сможете выбрать формат курса, который вам подходит: базовый или расширенный
1
5 спринтов・3 проекта・10 недель
Основы С++ с Qt
Изучите как базовые основы C++, так и некоторые продвинутые возможности. Особое внимание в модуле уделено созданию графических приложений. При помощи фреймворка Qt вы создадите 10+ полноценных полезных программ: будильник, фотоальбом и несколько игр. Изучите паттерны программирования и объектно ориентированную разработку.
  • Базовые алгоритмы
  • Перегрузка операций
  • Метапрограммирование
  • Объектно ориентированное программирование
  • Qt
  • MVC
  • Git
  • Qt Creator
  • Рекурсия
  • Контейнеры
  • Словари
Hello, C++
Изучите базовые понятия программирования на примере C++: переменные, типы, операторы.
Условные конструкции
Поработаете с логическими выражениями и операторами ветвления.
Циклы и алгоритмы
Изучите операторы циклов, а также базовые и широко используемые алгоритмы.
Функции
Научитесь писать свои функции и вызывать их, передавать и принимать аргументы. Также поделите программу на файлы.
Система Git
Узнаете основные команды Git и поработаете с репозиторием.
Классы
Узнаете, как работать с агрегированными типами. Изучите понятия класса, метода и объекта.
Классы: продолжение
Погрузитесь в специфику классов. Научитесь писать конструкторы и константные методы.
Знакомство с Qt
Установите Qt и создадите в нём графическое приложение.
Создание графических приложений
Изучите основные элементы Qt и компоновки, создадите несколько полноценных графических программ.
Перегрузка операций
Узнаете, как добавить поддержку операций для собственных типов. Научитесь делать кастомизированный ввод и вывод.
Шаблоны
Изучите основы метапрограммирования, создадите шаблонные классы и функции.
Лямбды
Поработаете с функциональными объектами, компараторами, предикатами и функциями обратного вызова.
И снова вектор
Углубитесь в устройство вектора, изучите итераторы и создадите графический интерфейс для вектора.
Ассоциативные контейнеры
Изучите контейнеры map и set и концепцию словаря, а также контейнеры Qt.
Другие контейнеры и поиск
Изучите контейнеры стек, очередь, дек, алгоритм бинарного поиска и рекурсию.
Написание тестов и обработка ошибок
Попробуете один из фрейморков для написания тестов. Примените логирование в своих программах. Изучите обработку ошибок через исключения.
Разработка игры и ООП
Изучите основы ООП. Примените полученные знания для разработки квестовой игры. Рассмотрите принцип работы графического интерфейса.
Разработаете калькулятор с адаптивным интерфейсом, который производит действия над цифрами и дробями. При помощи паттерна MVC создадите графическую оболочку контейнера дек, поддерживающую большинство операций. Также реализуете бинарный поиск и сортировку. Ещё создадите игру о роботе‑спасателе, который спасает людей и животных из горящих зданий
2
3 спринта・3 проекта・6 недель
Производительность и оптимизация
Научитесь оценивать эффективность высокопроизводительного приложения до и после его разработки. Освоите действия с файлами и регулярными выражениями. Познакомитесь с внутренней структурой контейнеров, чтобы понять, как настраивать элементы языка на эффективную работу. Освоите move‑семантику, чтобы избегать лишних копирований в коде.
  • Профилировка
  • Логирование
  • Буфер
  • Атомарность
  • Модель памяти
  • Односвязный и двухсвязный списки
  • Контейнеры
  • Итераторы
  • Move-семантика
  • Сложность алгоритмов
Профилировка и ускорение
Узнаете, зачем нужна профилировка, упростите логирование, чтобы ускорить программу.
Потоковые хитрости
Познакомитесь с буфером и его возможностями, узнаете, какой может быть связь потоков.
Теория быстродействия
Поймёте, что такое асимптотическая сложность. Научитесь оценивать алгоритмы по сложности и разберётесь, как определяется сложность нескольких алгоритмов.
Работа с файлами
Продолжите знакомство с буфером и потоками и научитесь работать с ними через файлы.
Модель памяти в C++
Изучите атомарность, эксклюзивность и изменение порядка. Рассмотрите примеры переупорядочивания памяти. Узнаете, что такое модель памяти, Volatile и атомарные переменные. Рассмотрите примеры сломанного кода и решения, как его починить.
Односвязный список
Познакомитесь с устройством односвязного списка, вставкой и очисткой элементов, RAII‑обёрткой для массивов.
Эффективные линейные контейнеры
Узнаете о контейнерах и итераторах, какие бывают категории итераторов. Элементы стандартной библиотеки. Линейные контейнеры. Односвязный и двусвязный список.
Семантика перемещения
Введение в move, rvalue и lvalue. Универсальные ссылки. Свёртывание ссылок. Copy/move elision.
Самостоятельно создадите препроцессор, через который исходный код проходит до компилятора и обрабатывает директивы. Сделаете свой вариант односвязного списка — контейнера, который поддерживает эффективное добавление и удаление элементов. Также напишете собственную версию вектора — контейнера, который обеспечивает эффективный доступ к элементам
3
5 спринтов・1 проект・11 недель
Качество кода
Изучите инструменты, которые делают код опрятным и защищают его от человеческих ошибок: пространство имён, константность, RAII. Узнаете, как избавить программу от проблем роста. Освоите динамический полиморфизм.
  • ООП
  • Множества
  • Санитайзеры
  • unique_ptr
  • shared_ptr
  • weak_ptr
  • Неопределённое поведение
  • Константность
  • Функции
  • Методы
  • Идиома RAII
  • Рефакторинг
Ассоциативные контейнеры
Изучите принципы объектно ориентированного програмиирования. Разберёте полиморфизм. Также узнаете, что такое разнородный поиск и множества.
Имена и пространства имён
Познакомитесь с инструментированием кода, чтобы выявлять ошибки в среде выполнения. Начнёте использовать санитайзеры. Научитесь создавать отчёты об ошибках.
Умные указатели
Изучите указатели unique_ptr, shared_ptr и weak_ptr, их понятия и применение.
Undefined Behavior
Узнаете, что такое неопределённое поведение, точки следования и побочные эффекты.
Наследование и полиморфизм
Познакомитесь с понятием и синтаксисом наследования и полиморфизма. Узнаете, что такое статическая привязка и виртуальная функция.
Константность
Продолжите осваивать основы объектно ориентированного программирования. Подробнее изучите константные объекты классов, функции-члены и получение константных объектов через передачу по константной ссылке.
Идиома RAII
Научитесь управлять временем жизни и ресурсами объекта.
Философия хороших функций
Поймёте, что лучше использовать: функцию или метод класса.
Передача данных в функцию
Выясните, как лучше передавать данные: по ссылке или по значению. Посмотрите ассемблер. Запустите бенчмарки. Познакомитесь с forwarding reference. Узнаете о 3 способах передачи функций.
Получение данных из функции
Узнаете, как лучше получать данные из функции.
Рефакторинг
Изучите методы и средства рефакторинга, а также познакомитесь с 3 типами конструкторов.
Будете работать над транспортным справочником: напишете программу, чтобы хранить информацию об автобусных остановках и автобусах. Затем добавите возможность строить автобусные маршруты в городе
4
2 спринта・2 проекта・4 недели
Проектирование сложных программ
Напишете полноценный вектор, познакомитесь с variadic templates и гарантиями безопасности исключений.
  • Вектор
  • Конструкторы и деструкторы
  • Таблица виртуальных методов
  • Система сборки CMake
Vector своими руками
Выясните, что нужно знать для реализации: указатели, move‑семантику, rValue- и lValue‑ссылки, шаблоны, итераторы, переопределение операторов. Создадите вектор, который автоматически увеличивает свой размер и эффективно работает с памятью.
Хранение объектов в памяти
Узнаете, что такое оперативная память, представление объектов, указатели. Подробнее изучите динамическую память и стек. Также сможете отслеживать утечки памяти.
Таблица виртуальных методов
Изучите конструкторы и деструкторы, таблицу виртуальных методов.
Сборка по-новому: CMake
Узнаете про систему сборки CMake, особенности её установки и познакомитесь с основами её синтаксиса.
Разработаете вектор, который автоматически увеличивает свой размер, эффективно работает с памятью и не копирует объекты зря. Напишете конвертер изображений, который будет переводить их из одного формата в другой. Он будет поддерживать BMP, PPM, JPEG
5
Самостоятельно・3 недели
Итоговый проект: электронная таблица
Напишете крупную программу, которую сможете развивать. Именно так вы закрепите свои навыки создания понятного и масштабируемого кода. Сначала вы защитите дизайн‑проект таблицы с ячейками и формулами, а уже после напишете код.
Карьерный центр・3–4 недели
Подготовка в трудоустройству
Эта часть курса для тех, кто решил профессионально заниматься разработкой С++. Вы изучите стратегии поиска работы и узнаете о тонкостях выбора компании, напишете резюме и сопроводительное письмо. Обратите внимание, что, если вы оплатите учёбу за счёт работодателя, у вас не будет доступа к программе подготовки к трудоустройству.
Карьерный центр・8–24 недели
Акселерация
Программа сопровождения: вы ищете работу, мы консультируем и помогаем. Участвовать в программе могут те, кто закончил подготовку к трудоустройству и находится в активном поиске работы.
+15 тем・+3 проекта・+11 недель
Расширенный курс «Разработчик С++»
Расширенный формат стоит дороже, но включает в себя больше тем и проектов, которые помогут усилить портфолио и повысить шансы на быстрое трудоустройство.

На расширенном курсе вы освоите C++ для бэкенда:
  • Разработаете программное обеспечение под Linux
  • Получите навык нагрузочного тестирования
  • Научитесь работать с Docker и СУБД PostgreSQL
  • Расширите свои знания о библиотеках разработки на С++ и используете в проекте boost: asio и boost: beast
  • Углублённое изучение С++ и его библиотек
  • Linux
  • Docker
  • Boost
  • Мониторинг системных ресурсов
  • Нагрузочное тестирование
  • PostgreSQL
  • SQL и базы данных
Hello, Linux!
Настроите рабочее окружение: поднимите виртуальную машину с операционной системой Linux и установите библиотеку Boost.
Hello, web-server!
Рассмотрите сетевые протоколы: TCP, UDP, HTTP. Разработаете собственный веб‑сервер.
Hello, Docker!
Научитесь устанавливать Docker и создавать образ проекта.
Передача данных через сеть
Научитесь передавать файлы, объединять веб‑серверы и фронтенд, чтобы создать сетевое приложение.
Эффективное логирование
Нырнёте в мир библиотеки Boost.Log и научитесь оптимально хранить большие объёмы логов.
Авторизация и аутентификация
Освоите базовые техники авторизации и аутентификации пользователей.
Механизмы синхронизации
Узнаете о тредах и процессах в операционной системе, состоянии гонки и методах синхронизации.
Мониторинг ресурсов
Наладите мониторинг системных ресурсов в операционной системе Linux и настроите отправку уведомлений в случаях, когда память переполняется. Это позволит держать ресурсы системы под контролем.
Распараллеливание
Изучите распараллеливание вычислений между тредами, фреймворк для тестов и варианты отладки программ.
Тестирование и отладка
Фреймворк для тестов Catch. Обзор GDB. Выбор файлов. Практические занятия. Отладка программы через присоединение к выполняемому процессу с помощью GDB. Вход и выход из GDB. Вызов GDB.
Профилирование
Стек‑трейс и тред‑дамп: понятия, назначение, использование. Аналитика программного кода через статистику путей выполнения.
Нагрузочное тестирование
Понятие нагрузочного тестирования и его место в верификации программного решения.
Сохранение состояния системы
Описание состояния системы. Сериализация. Сохранение и восстановление состояния системы.
База данных PostgreSQL
Познакомитесь с архитектурой баз данных и научитесь отправлять в них запросы. Узнаете, как описывать, сохранять и восстанавливать состояние системы. Освоите SQL.
Продвинутая работа с базой данных
Подключите к своему проекту базу данных и СУБД PostgreSQL.
Разработаете собственный дашборд на основе логирования Grafana и Prometheus, а также проведёте нагрузочное тестирование с помощью Яндекс Танк. Создадите приложение, использующее базу данных PostgreSQL для хранения. Также напишете бэкенд для небольшой игры, в которой игроки‑курьеры соревнуются в том, кто быстрее всех доставит заказы

Получите сертификат о переподготовке

Это официальный документ установленного образца, который принимают работодатели

Очень много практики

Ещё 7 месяцев после выпуска бесплатно помогаем с поиском работы — для этого у нас целый карьерный центр

10 000+ выпускников Практикума уже нашли новую работу

90% трудоустроились в первые полгода

Это данные исследования ВШЭ — они основаны на опыте пользователей Яндекс Практикума на российском рынке труда

Как устроена учёба

Ещё учиться помогает YandexGPT

Когда в теории что-то непонятно, нейросеть объяснит это другими словами. А в конце каждого урока подготовит краткий пересказ о самом главном.

Эти выпускники уже стали разработчиками С++. Большинство — без опыта в IT

Попробуйте любой формат курса бесплатно — выбрать один-единственный можно позже

  •                                        

Что входит в любой формат

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

Отвечаем на вопросы

Подойдёт ли мне эта профессия?
Для тех, кто ещё нетвёрдо уверен в своём намерении, мы спроектировали бесплатную часть, которая поможет получить ответ на этот вопрос. Если вы убедитесь, что разработка не для вас, это тоже положительный результат.

Подробнее о профессии разработчика C++ вы можете узнать из нашей статьи.
Можно ли обучиться профессии за 9 месяцев?
Думаем, что да, если вы будете уделять занятиям не менее 15 часов в неделю, выполнять домашние задания и общаться с наставником. Тогда за 9 месяцев месяцев вы сможете освоить навыки разработки на C++, соберёте портфолио проектов и начнёте свой путь в профессию.
Кто будет меня учить?
Программа составлена опытными преподавателями, методологами и действующими специалистами не только Яндекса и Школы анализа данных, но и других компаний — лидеров технологической и образовательной индустрии.
Как и когда я буду учиться?
Обучение состоит из 3 частей: теория с закреплением в тренажёре, домашнее задание для самостоятельной практики и работа над кодом с наставником. В тренажёре вы учитесь в любое удобное время, а выполнение домашнего задания привязано к двухнедельному циклу.
Что делать, если я не справлюсь с нагрузкой?
В программе предусмотрены каникулы, во время которых можно отдохнуть или повторить сложные темы.

Если случилось непредвиденное или понадобилось больше времени на закрепление материала, напишите своему куратору. Он поможет перенести дедлайн сдачи проекта или перевестись в более поздний поток. На общую стоимость курса это не повлияет.
Смогу ли я найти работу после обучения?
Гарантий нет, но мы верим, что сможете. Работодателям важно, чтобы вы справлялись с реальными задачами, а не просто обладали набором знаний. Мы учим применять знания на практике, а также предлагаем помощь HR-специалистов из нашего карьерного центра. Но вам точно придётся приложить усилия, чтобы найти работу: активно откликаться на вакансии, проходить собеседования, показывать свои проекты и делать тестовые задания.

По данным исследования* Высшей школы экономики, 69% наших выпускников среди тех, кто хотел сменить профессию, начинают новую карьеру после обучения. Больше половины из них — во время учёбы и в первые 2 месяца после выпуска.

* Данные исследования ВШЭ основаны на опыте выпускников Яндекс Практикума на российском рынке труда.
Как можно оплатить?
Банковской картой: внести всю сумму сразу или платить ежемесячно.

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

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

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

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