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

Освоите разработку на 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 недели
Итоговый проект: электронная таблица
Напишете крупную программу, которую сможете развивать. Именно так вы закрепите свои навыки создания понятного и масштабируемого кода. Сначала вы защитите дизайн‑проект таблицы с ячейками и формулами, а уже после напишете код.
Карьерный центр・1 месяц
Карьерный трек: подготовка к трудоустройству
Составите резюме, которое привлечёт внимание рекрутеров, и напишете сопроводительное письмо для откликов на вакансии. Узнаете, как правильно оформлять портфолио, и построите стратегию поиска работы.

Обратите внимание: если курс оплачивает ваш работодатель, у вас не будет подготовки к трудоустройству.
Карьерный центр・До 6 месяцев
Акселерация: активный поиск работы с поддержкой HR‑экспертов
Будете откликаться на вакансии, делать тестовые и ходить на собеседования, а мы вас дистанционно поддержим. Например, расскажем, какие ошибки бывают в общении с работодателем и как их избежать. Акселерация может продолжаться до 6 месяцев — обычно этого достаточно, чтобы получить первую работу в IT.
+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 помогает проходить курс

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

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

  •                                        

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

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

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

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

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

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

* Данные исследования ВШЭ основаны на опыте пользователей Яндекс Практикума на российском рынке труда.
А если я хочу работать в Яндексе?
Некоторые участники наших курсов работают в сервисах Яндекса, в том числе и в Практикуме. Но с нашей стороны было бы нечестно что‑либо гарантировать и завышать ваши ожидания.

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

Чтобы вам было проще сориентироваться, мы указываем примерную стоимость в долларах США, но списание будет в казахстанских тенге, а конвертация — по курсу вашего банка.

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

Мы работаем с 09:00 до 18:00 по минскому времени и связываемся в течение одного дня. Если оставите заявку сейчас, то перезвоним уже в рабочее время.