Специализация

C++ Developer

Все что нужно знать о разработке на C++
с нуля и до Middle Developer

29 марта

Basic

10 месяцев

Онлайн

Для кого?

Для тех, кто хочет с нуля освоить принципы программирования и развиваться в С++ разработке, а также для тех, кто еще не определился с языком.

Программа идет с нуля и рассчитана на опытных ПК-пользователей, которые хотят научиться программировать. После обучения вы сможете углубиться в разработку на C++ или перейти на любой другой язык ООП. Специализация призвана помочь тем, кто делает первые шаги в IT и хочет быть готов к первым собеседованиям и работе в проектах.

Чаще всего язык применяется в создании масштабного ПО и игр, программ для «железа» и IoT-устройств, хранения и обработки большого объема данных.

Подходит ли программа именно вам?

Менеджер поможет разобраться!

Какой результат вы получите?

Обучение состоит из 2х ступеней

Начало обучения
Старт 29 сентября
  • Для тех, кто хочет с нуля освоить профессию разработчик на С++
Ступень 1
Вт 20:00, Пт 20:00
Junior
  • Изучите одну из главных возможностей языка С++ с точки зрения ООП - создание собственных типов и операций с ними
  • Получите базовые навыки unit-тестирования своего кода на языке С++
  • Познакомитесь со стандартной библиотекой
  • Научитесь использовать сторонние библиотеки
  • Поработаете с многопоточностью в приложениях
  • Разработаете и защитите первый проект
Ступень 2
Вт 20:00, Пт 20:00
Middle
  • Рассмотрите разные версии языка: С++11, С++14, С++17. Узнаете про управление памятью; CI/CD
  • Изучите принципы проектирования, шаблоны GoF, STL, Boost
  • Освоите навыки использования многопоточности, асинхронный подход к решению задач и LockFree технику
  • Овладеете основными принципами сетевого взаимодействия, использование библиотеки Boost.Asio
  • Исследуете системы хранения данных: РСУБД, NoSQL, схемы mapreduce и ORM-системы для автоматизации

Авторская программа


Тренды разработки и
актуальные инструменты.
Обучение на рабочих кейсах

Применение C++


Представление в разных областях,
с которыми соприкасается
разработчик C++

Помощь с трудоустройством


Комплексная система, которая поможет получить выгодные офферы
в перспективных проектах

Трудоустройство

Мы даём качественные знания, которые помогут
в получении офферов в перспективных проектах

  • Разместите свое резюме в базе OTUS
    и сможете получать приглашения
    на собеседования от партнеров
  • Карьерные мероприятия в сообществе
    c публичным разбором резюме
    и прохождением собеседования

C++ Developer

Перспективы направления
Средний уровень зарплат в Москве:
90 000Junior+ специалист
170 000Middle+ специалист
250 000Senior специалист
2700
актуальных вакансий

Работодатели специализции

Формат обучения

Интерактивные вебинары


2 занятия по 2 ак.часа в неделю.
Доступ к записям и материалам остается навсегда

Практика


Домашние задания + 2 проектные
работы, которые усилят ваше портфолио

Активное комьюнити


Общайтесь с преподавателями голосом на вебинарах и в группе телеграм

Групповые менторские консультации

На специализации предусмотрено менторское сопровождение в виде групповых разборов домашних заданий. Занятие по групповому разбору ДЗ с ментором проводится раз в месяц в рамках расписания специализации. Преподаватели действуют в единой связке с ментором, создавая бесшовный образовательный процесс

Вы выполняете домашнее задание
Ментор проверяет его в личном кабинете, делает ревью и дает развернутый фидбэк
На занятии ментор отвечает на часто возникающие вопросы, проводит подробный разбор работ студентов и объясняет каждый этап выполнения.
С ментором также можно общаться по домашнему заданию в чате. Он даст вам обратную связь по итогам проверки и направит вас в нужное русло.

Программа

1 ступень

Введение в язык C++

Знакомство с курсом и подготовка стенда для дальнейшей работы.

Тема 1: Вводное занятие

Тема 2: Пишем свой “Hello, World".

Тема 3: Базовый синтаксис языка C++

Тема 4: Такие разные функции

Тема 5: Модульность. Линковка

Тема 6: Консультация по ДЗ

Тема 7: Подробнее о CMake

Тема 8: Соберём все вместе

Тема 9: Ответы на вопросы

Классы и структуры

Изучение одной из главных возможностей языка C++ с точки зрения ООП – создание собственных типов и операций с ними.

Тема 1: Структуры и классы

Тема 2: ООП в C++

Тема 3: Полиморфизм и все-все-все

Тема 4: Шаблоны классов и функций

Тема 5: Тонкости (перегрузка операторов, конструкторы и деструкторы, move-семантика)

Основы unit-тестирования

Получение базовых навыков unit-тестирования своего кода на языке C++.

Тема 1: Понятие unit-тестирования, цель, что тестируем

Тема 2: Консультация по ДЗ

Тема 3: Инструменты для unit-тестирования. Библиотека Googletest

Стандартная библиотека и полезные алгоритмы

Знакомство со стандартной библиотекой и выработка навыков их использования.

Тема 1: Общий обзор стандартной библиотеки

Тема 2: Подробнее о контейнерах и вводе-выводе

Тема 3: Алгоритмы, которые лучше знать лучше

Работа со сторонними библиотеками

Обучение использованию сторонних библиотек.

Тема 1: Работа с библиотеками вручную

Тема 2: Современные средства автоматизации. Пакетные менеджеры, снова CMake

Тема 3: Сборка библиотек из исходников

Всё глубже и глубже. Тонкости

Внимание к деталям отличают профессионала от любителя. Изучим тонкие моменты.

Тема 1: Исключения в C++. Использование и нюансы. Гарантии безопасности

Тема 2: Семантика перемещения, noexcept, и как они нам помогают

Тема 3: Работа с динамической памятью

Тема 4: Умные указатели

Тема 5: Консультация по ДЗ

Многопоточность в C++

Выпускать в 21-ом веке приложения, которые не используют многопоточность, даже как-то неудобно. Научимся следовать тенденции.

Тема 1: Понятие потока выполнения программы

Тема 2: Две главные проблемы - гонка и взаимная блокировка

Тема 3: Структуры данных в многопоточной среде

Тема 4: И пусть весь мир подождёт

Тема 5: Более высокие абстракции и асинхронное исполнение

Тема 6: Дополнительные тонкости и детали

Тема 7: Консультация по ДЗ

Разное

Программирование не ограничивается только знанием синтаксиса языка и стандартной библиотеки. Также выжны популярные приемы, которые называют идиомами языка и присваивают им отдельные имена. И экосистема не ограничивается только компилятором, CVS и инструментами сборки. Вокруг C++ сложилось много полезных инструментов, которые помогают создавать программы.

Тема 1: Идиомы и полезные практики C++

Тема 2: Идиомы и полезные практики C++. Часть 2

Тема 3: Полезные в работе инструменты

Проектный модуль

Наличие ссылки на сертификат об окончании курса в резюме это хорошо. Но если добавить еще и ссылку на github с кодом собственного выпускного проекта, то это гораздо лучше. В рамках этого модуля вы будете работать над созданием такого украшения для своего портфолио.

Тема 1: Вводное занятие по проекту

Тема 2: Консультация

Тема 3: Защита проектных работ

Тема 4: Карьерная консультация

Тема 5: Подведение итогов группы

2 ступень

Современный C++

CI/CD. C++11. C++14. C++17. Управление памятью. Шаблонная магия

Тема 1: Система сборки: build, test and deploy

Тема 2: Особенности C++11. auto, lambda, tuple

Тема 3: Особенности C++11. Move, variadic templates

Тема 4: Сравнение C++11/C++14 с С++ 03

Тема 5: Реализация умных указателей

Тема 6: Идея аллокаторов

Тема 7: Шаблонная магия

Тема 8: Обзор C++17. Constexpr lambda. Fold expression. Attributes. Type deduction

Тема 9: Обзор C++17. If constexpr. Structured bindings. Statements with initializer. std::filesystem

Тема 10: C++20 - что это и зачем?

Архитектура

Принципы проектирования ПО, GRASP, шаблоны GoF, STL, Boost

Тема 1: Принципы проектирования ПО

Тема 2: GRASP

Тема 3: Шаблоны GoF. Порождающие

Тема 4: Шаблоны GoF. Структурные

Тема 5: Шаблоны GoF. Поведенческие. Command, Interpreter, Iterator, Mediator, Memento, Chain of responsibilily

Тема 6: Шаблоны GoF. Поведенческие. Observer, State, Strategy, Template method, Visitor

Тема 7: STL. Контейнеры

Тема 8: STL. Алгоритмы

Тема 9: Бонус. Красно-чёрные деревья

Тема 10: Boost. Разное

Тема 11: Boost. Паттерны проектирования

Тема 12: Бонус. Хэш-функции и хэш-таблицы

Параллельные вычисления

Использование многопоточности, паттерны многопоточных приложений, асинхронный подход к решению задач, LockFree техника, особенности атомарных операций в C++.

Тема 1: Многопоточность

Тема 2: Шаблоны 5

Тема 3: Асинхронное программирование

Тема 4: Lockfree DS

Тема 5: Атомарные типы данных

Сеть

Основные принципы сетевого взаимодействия, использование библиотеки Boost.Asio

Тема 1: Выбор темы и организация проектной работы

Тема 2: Сетевое взаимодействие

Тема 3: Асинхронный ввод/вывод

Хранилища

Различные системы хранения данных - РСУБД и NoSQL системы, схема mapreduce для обработки большого количества данных, ORM системы для автоматизации.

Тема 1: РСУБД

Тема 2: Key Value

Тема 3: Много данных

Тема 4: ORM

ML

Задачи, которые решаются с помощью алгоритмов машинного обучения.

Тема 1: Dlib. Кластеризация и классификация

Тема 2: Dlib. Регрессия

Проектная работа

Заключительная часть курса о программировании на С++ посвящена проектной работе. Мало что доставляет столько же удовольствия, как самостоятельно реализованный проект на выбранную самостоятельно тему на основе знаний, полученных на курсе. В процессе написания (и даже в процессе выбора темы) можно получить консультации преподавателей. При удачном стечении обстоятельств (в основном, при наличии должного усердия со стороны студента) проект станет достойным примером кода, который можно будет показывать потенциальным работодателям в качестве портфолио. Таким образом обучение программированию завершится большой практической работой, и вы будете гордиться тем, что сделали своими руками.

Тема 1: Консультация по проектам и домашним заданиям

Тема 2: Защита проектных работ

Тема 3: Подведение итогов курса

Также вы можете получить полную программу, чтобы убедиться, что обучение вам подходит

Проектные работы

 

Каждая ступень завершается финальным проектом, который предстоит защитить перед преподавателями и командой.


Вы cможете выбрать одну из предложенных преподавателем тем или реализовать свою идею, подходящую под требования.


Практический опыт и портфолио проектов помогут вам произвести впечатление на собеседовании.

Преподаватели

Сергей Кольцов

Александр Ключев

Анатолий Махаев

Михаил Лицарев

Павел Филонов

Собственный консалтинг

Дмитрий Сидельников

Евгений Пальчуковский

Владимир Щелов

Владимир Щерба

Андрей Рыжиков

Карина Дорожкина

Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания

Ближайшие мероприятия

Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.

Магия С++ приложения: что происходит, когда вы собираете проект?
Карина Дорожкина
На вебинаре подробно разберем процесс от написания кода до сборки исполняемого файла. Поговорим об этапах компиляции и линковки, возможных ошибках, и как с ними бороться. Дополнительно затронем тему сборки и подключения статических и динамических библиотек и научимся собирать итоговое решение при помощи CMake.

На занятии:
- разберем понятие единицы трансляции;
- проследим за ошибками компиляции и линковки, разберёмся в их причинах;
- создадим статическую библиотеку и подключим её при помощи CMake;
- обсудим разницу между статической библиотекой и динамической.

В результате:
- поймем, как работать с заголовочными файлами, и зачем они нужны.
- научимся диагностировать и исправлять ошибки на разных этапах сборки;
- узнаем, как собирать и подключать библиотеки;
- опишем процесс сборки кроссплатформенно на CMake.

Будет полезно:
- начинающим разработчикам на языке C++;
- практикующим разработчикам на С++, желающим погрузиться в детали сборки.
...
5 марта в 17:00
Открытый вебинар
Чем перемещение отличается от копирования в C++?
Павел Филонов
В языке C++ есть множество вариантов решения задачи, которые часто будут отличаться различными свойствами по производительности и гибкости. К одной из таких возможностей можно отнести семантики копирования и перемещения. На уроке мы разберем как они отличаются синтаксически и какие возможности по оптимизациям нам это открывает.

Что будет на занятии:
синтаксис move-семантики
отличие копирования от перемещения
подводные камни семантики перемещения

Чему научитесь:
когда компилятор сможет сделать сам, а когда ему нужно подсказать
как отличить rvalue от lvalue
избегать лишнего копирования объектов

Кому это будет полезно:
начинающим программистам на C++
программистам на других языках, которые интересуются C++
...
21 марта в 17:00
Открытый вебинар

Прошедшие
мероприятия

Андрей Рыжиков
Открытый вебинар
Устраняем баги без отладчика: юнит-тесты в C++ на практике
Павел Филонов
Открытый вебинар
Полиморфизм в С++
Оставьте заявку, чтобы получить доступ ко всем записям прошедших мероприятий. Записи всех мероприятий появятся в этом блоке

Корпоративное обучение для ваших сотрудников

Отус помогает развивать высокотехнологичные Команды. Почему нам удаётся это делать успешно:
  • Курсы OTUS верифицированы крупными игроками ИТ-рынка и предлагают инструменты и практики, актуальные на данный момент
  • Студенты работают в группах, могут получить консультации не только преподавателей, но и профессионального сообщества
  • OTUS проверяет знания студентов перед стартом обучения и после его завершения
  • Простой и удобный личный кабинет компании, в котором можно видеть статистику по обучению сотрудников
  • Сертификат нашего выпускника за 5 лет стал гарантом качества знаний в обществе
  • OTUS создал в IT более 120 курсов по 7 направлениям, линейка которых расширяется по 40-50 курсов в год

Диплом о профессиональной переподготовке

OTUS осуществляет лицензированную образовательную деятельность.
В конце прохождения специализации вы получите сертификат OTUS и официальный диплом о получении новой специальности

Почему специализация выгоднее, чем отдельные курсы?

  • Стоимость ниже, чем покупка курсов по отдельности
  • Диплом о профессиональной переподготовке
  • Расширенная опция помощи с трудоустройством

Частые вопросы

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