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