👋 Канал OTUS в Telegram!
Посты от приглашенных гостей из IT-тусовки, полезные статьи, подборки вакансий от партнеров ➞
Подробнее

Курсы

Программирование
Архитектор программного обеспечения
-40%
Архитектура и шаблоны проектирования
-40%
Fullstack разработчик JavaScript
-40%
MS SQL Server разработчик
-40%
Android-разработчик. Продвинутый курс
-40%
Android-разработчик. Базовый курс
-40%
Backend-разработка на Kotlin
-30%
Программист 1С
-30%
Symfony Framework
-30%
Разработчик на Spring Framework
-20%
Разработчик Golang
-25%
C# ASP.NET Core разработчик
-25%
iOS-разработчик. Базовый курс
-25%
VOIP инженер Базы данных Web-разработчик на Python Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик игр на Unity Vue.js разработчик Agile Project Manager в IT Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02
Проходил 14 июня 2019 года в 20:00

Открытый вебинар
Сборка проектов на C++ с использованием CMake

Открытый вебинар онлайн

Учимся собирать проекты с использованием кроcсплатформенной утилиты для автоматической сборки программы из исходного кода. Рассматриваем особенности работы с CMake и обсуждаем плюсы и минусы такого инструмента. Полученные знания пригодятся при выполнении домашних работ курса «Разработчик C++» и не только.
Преподаватель
Сергей Кольцов

Запись

О курсе

Разработчик C++
90 000 ₽ 78 500 ₽
Начало в сентябре
  • Умение писать на С++ правильно.
  • Понимание современных проблем языка и специфики его применения.
  • Освоение паттернов проектирования, принципов написания многопоточного кода.
  • Знание, как взаимодействовать с сетью, хранить и обрабатывать большие объемы данных.
  • Владение нюансами программирования на С++, которые отличают разработчика уровня Middle от Junior.
Обучено студентов 200+
32 практических занятия
Программа курса
Модуль 1
Современный C++
Модуль 2
Архитектура
Модуль 3
Параллельные вычисления
Модуль 4
Сеть
Модуль 5
Хранилища
Модуль 6
ML
Модуль 7
Проектная работа
Современный C++
CI/CD. C++11. C++14. C++17. Управление памятью. Шаблонная магия
Система сборки: build, test and deploy.
познакомиться;
понять, как будем работать;
узнать, с кем и как общаться;
понять, зачем нужна автоматизация сборки;
расшифровывать аббревиатуру CI/CD;
подготовить стенд для выполнения самостоятельных работ.
Домашние задания: 1
ДЗ
ДЗ-01. Сборка и публикация пакета. Фильтрация IP-адресов.. Что требуется сделать:
1. Выполнить задание, описанное в 01.homework.pdf
2. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com с реализованным проектом;
- ссылку на проект на travis-ci.org с историей (и хотя бы одной успешной) сборок;
- ссылку на репозиторий bintray.com, откуда можно скачать получившийся deb-пакет.
Особенности C++11. auto, lambda, tuple
освежить основы по C++11 (пригодится дальше по курсу);
узнать новые фичи C++11 (тоже пригодится);
обсудить особенности, которые важно учитывать.
Особенности C++11. Move, variadic templates
освежить основы по C++11 (пригодится дальше по курсу);
узнать новые детали;
обсудить особенности, которые стоит учитывать.
Сравнение C++11/C++14 с С++ 03
освежить знания по C++14;
узнать новые детали;
обсудить особенности С++ 14, на которые стоит обратить внимание.
13 июля, 20:00 — 21:30
Лектор: Александр Ключев
Реализация умных указателей
запомнить правило: "взял память - верни, когда больше не нужна";
понять, как следовать этому правилу;
разобраться с разными типами умных указателей.
16 июля, 20:00 — 21:30
Идея аллокаторов
объяснить важность стратегий аллокации памяти;
использовать разные аллокаторы,
разобраться, как реализовать свой аллокатор;
объяснить, как расширяется std::vector, и почему именно так.
20 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-02. allocator. Что требуется сделать:
1. Выполнить задание описанное в 02.homework.pdf

2. На acm.timus.ru выполнить задачи:
1409, 1877, 2001, 1264, 1787

3. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач.
Обзор C++17. Constexpr lambda. Fold expression. Attributes. Type deduction
разобраться с основными нововведениями С++ 17;
понять, в каких случаях они используются;
обойти несколько спорных моментов.
23 июля, 20:00 — 21:30
Обзор C++17. If constexpr. Structured bindings. Statements with initializer. std::filesystem
разобраться с основными нововведениями С++17;
понять кейсы использования;
обсудить несколько тонких моментов;
пользоваться новым стандартом языка.
27 июля, 20:00 — 21:30
Шаблонная магия
перестать бояться шаблонов;
пообещать себе перестать пользоваться макросами,
читать STL;
искать документацию.
30 июля, 20:00 — 21:30
Архитектура
Принципы проектирования ПО, GRASP, шаблоны GoF, STL, Boost
Принципы проектирования ПО
разобраться, зачем нужны принципы;
пользоваться принципами,
читать UML диаграммы.
3 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-03. Doxygen. Что требуется сделать:
1. Выполнить задание описанное в 03.homework.pdf

2. Решить первые 15 задач на acm.timus.ru (от простых к сложным). Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty

3. Сделать ревью решений ДЗ-01 двух коллег (которые его выполнили)

4. Опционально: предоставить примеры, из своей практики, использования Принципов Проектирования

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью.
GRASP
обращать внимание на архитектурные детали кода;
улучшать метрики кода;
находить ошибки в коде коллег.
6 августа, 20:00 — 21:30
Шаблоны GoF. Порождающие
читать паттерны проектирования;
использовать паттерны;
объяснить ценность экспериментов.
10 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-04. Editor.. Что требуется сделать:
1. Выполнить задание, описанное в 04.homework.pdf

2. На acm.timus.ru решить любые 3 задачи с уровнем сложности от 100 до 150.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Сделать ревью решений ДЗ-03 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на ревью ДЗ-02.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Шаблоны GoF. Структурные
читать паттерны проектирования;
использовать паттерны;
объяснить ценность экспериментов.
13 августа, 20:00 — 21:30
Шаблоны GoF. Поведенческие. Command, Interpreter, Iterator, Mediator, Memento, Chain of responsibilily
читать паттерны проектирования;
использовать паттерны;
объяснить ценность экспериментов.
17 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-05. Matrix.. Что требуется сделать:
1. Выполнить задание, описанное в 05.homework.pdf

2. На acm.timus.ru решить любые 3 задачи с уровнем сложности от 151 до 200.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Сделать ревью решений ДЗ-03 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на РЕВЬЮ ДЗ-03.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Шаблоны GoF. Поведенческие. Observer, State, Strategy, Template method, Visitor
читать паттерны проектирования;
использовать паттерны;
объяснить ценность экспериментов.
20 августа, 20:00 — 21:30
STL. Контейнеры
изучить контейнеры STL;
объяснить, какие типы контейнеров есть в STL;
настраивать поведение контейнеров.
31 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-06. cmd. Что требуется сделать:
1. Выполнить задание, описанное в 06.homework.pdf

2. На acm.timus.ru решить 3 любые задачи с уровнем сложности от 201 до 300.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Сделать ревью решений ДЗ-04 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на ревью ДЗ-04.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
STL. Алгоритмы
разобраться, почему алгоритмов в STL так много;
объяснить, зачем нужны алгоритмы в STL;
использовать алгоритмы.
3 сентября, 20:00 — 21:30
Boost. Разное
объяснить философию проекта Boost;
читать документациию Boost,
выбирать и применять библиотеки7
7 сентября, 20:00 — 21:30
Boost. Паттерны проектирования
изучить Boost;
посмотреть на реализацию паттернов проектирования;
расширить знания про библиотеку.
10 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-07. Boost. Что требуется сделать:
1. Выполнить задание, описанное в 07.homework.pdf

2. Опционально: на acm.timus.ru решить 3 любые задачи с уровнем сложности от 401 до 450.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Опционально. Сделать ревью решений ДЗ-05 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на ревью ДЗ-01.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Параллельные вычисления
Использование многопоточности, паттерны многопоточных приложений, асинхронный подход к решению задач, LockFree техника, особенности атомарных операций в C++.
Многопоточность
использовать потоки в своих приложениях;
решать основные проблемы многопоточности;
использовать инструменты стандартной библиотеки.
14 сентября, 20:00 — 21:30
Шаблоны 5
объяснить многопоточные паттерны;
использовать для решения задач.
17 сентября, 20:00 — 21:30
Асинхронное программирование
объяснить разницу между многопоточностью, параллельностью и асинхронностью;
выбирать подходящее решение для своей задачи;
использовать возможности стандартной библиотеки.
21 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-08. Многопоточная асинхронная обработка команд. 1. Выполнить задание описанное в 08.homework.pdf
2. Опционально. На acm.timus.ru решить 3 любые задачи с уровнем сложности от 501 до 550.
3. Опционально. Предоставить своё ревью на решения ДЗ-06 от двух коллег (которые его сделали).
4. Опционально: Предоставить ревью на РЕВЬЮ ДЗ-04.
Lockfree DS
разобраться в том, что такое lock-free подход;
видеть сценарии его использования;
читать lock-free код.
24 сентября, 20:00 — 21:30
Атомарные типы данных
использовать атомарные операции в своём коде;
разобраться в принципах и стоимости их работы.
28 сентября, 20:00 — 21:30
Сеть
Основные принципы сетевого взаимодействия, использование библиотеки Boost.Asio
Сетевое взаимодействие
объяснить, зачем нужна сеть в программах на C++,
объяснить, как решать возникающие проблемы.
1 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-09. Асинхронная сетевая обработка команд. 1. Выполнить задание описанное в 09.homework.pdf
2. Опционально. На acm.timus.ru решить 2 любые задачи с уровнем сложности от 551 до 600.
3. Опционально. Предоставить своё ревью на решения ДЗ-07 от двух коллег (которые его сделали).
4. Опционально: Предоставить ревью на РЕВЬЮ ДЗ-05.
Асинхронный ввод/вывод
использовать библиотеки для работы с сетью;
выбирать подходящие инструменты.
5 октября, 20:00 — 21:30
Хранилища
Различные системы хранения данных - РСУБД и NoSQL системы, схема mapreduce для обработки большого количества данных, ORM системы для автоматизации.
РСУБД
использовать хранилища данных в своих проектах.
15 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-10. outer join. 1. Выполнить задание описанное в 10.homework.pdf
2. Опционально. На acm.timus.ru решить 2 любые задачи с уровнем сложности от 601 до 650.
3. Опционально. Предоставить своё ревью на решения ДЗ-8 от двух коллег (которые его сделали).
Key Value
разобраться в том, что же такое NoSQL;
выбирать решение под задачу.
19 октября, 20:00 — 21:30
Много данных
разобраться в идеологии map reduce;
немного поэкспериментировать.
22 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-11. mapreduce. 1. Выполнить задание описанное в 11.homework.pdf
2. Опционально. На acm.timus.ru решить 2 любые задачи с уровнем сложности от 651 до 700.
3. Выложить свою реализацию на ревью.
4. Опционально. Предоставить два своих ревью на ДЗ-09.
ORM
разобраться, зачем нужны ORM,
применять их в своих приложениях.
26 октября, 20:00 — 21:30
ML
Задачи, которые решаются с помощью алгоритмов машинного обучения.
Dlib. Кластеризация
разобраться, зачем нужно машинное обучение;
решать базовые задачи ML;
читать документацию Dlib.
29 октября, 20:00 — 21:30
Dlib. Классификация
разобраться с принципами классификации;
решать задачу классификации.
2 ноября, 20:00 — 21:30
Dlib. Регрессия
разобраться с формулировкой и решение задачи регрессии.
5 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-12. Недвижимость. 1. Выполнить задание описанное в 12.homework.pdf
2. Выложить свою реализацию на ревью.
3. Да и хватит на этом. Пора приступать к проекту.
Проектная работа
Заключительная часть курса о программировании на С++ посвящена проектной работе.
Мало что доставляет столько же удовольствия, как самостоятельно реализованный проект на выбранную самостоятельно тему на основе знаний, полученных на курсе.
В процессе написания (и даже в процессе выбора темы) можно получить консультации преподавателей.

При удачном стечении обстоятельств (в основном, при наличии должного усердия со стороны студента) проект станет достойным примером кода, который можно будет показывать потенциальным работодателям в качестве портфолио. Таким образом обучение программированию завершится большой практической работой, и вы будете гордиться тем, что сделали своими руками.
Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
9 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Проектная работа. Преполагаемые этапы выполнения:
1. Проработанные требования к реализации
2. Планируемая архитектура
3. Полная итоговая реализация.
Сдавать можно как по частям, так и сразу итоговый вариант.

Не обязательно придерживаться указанному плану.
Консультация по проектам и домашним заданиям
получить ответы на вопросы по проекту, ДЗ и по курсу.
12 ноября, 20:00 — 21:30
Защита проектных работ
защитить проект и получить рекомендации экспертов.
16 ноября, 20:00 — 21:30
Подведение итогов курса
узнать, как получить сертификат об окончании курса, как взаимодействовать после окончания курса с OTUS и преподавателями, какие вакансии и позиции есть для выпускников (опционально - в России и за рубежом) и на какие компании стоит обратить внимание.
19 ноября, 20:00 — 21:30

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

Сергей Кольцов
VisionLabs
Senior Developer С++ VisionLabs

Работает программистом уже почти 10 лет. Заинтересовался языками программирования ещё в школе. Начинал почти как и все в ту пору - с Delphi и Borland C++. Так что был заранее обречён на выбор профессии.

Работал как в крупных компаниях (Яндекс, Luxoft), так и в небольших организациях.

С преподаванием впервые столкнулся в школе, когда объяснял логарифмы одноклассницам. В дальнейшем в рамках рабочих обязанностей выполнял менторские функции с коллегами. На позиции руководителя группы разработки консультации членов команды занимают около 30% времени.

Окончил МГТУ им. Н.Э. Баумана в 2011 году, факультет "Информатика и системы управления".
Преподаватель курсов:
Разработчик C++