День открытых дверей по курсу «C++ Developer. Professional» 20.02.2018 в 20:00 | OTUS >
Скидка 10% на Подписку до 31.03!
Цены на странице указаны без учета скидки
Смотреть
Проходил 20 февраля 2018 года в 20:00

День открытых дверей
Разработчик С++

День открытых дверей онлайн

Хотите узнать, почему OTUS – больше, чем просто образовательный портал?
Как OTUS дает возможность стать частью сообщества профессионалов и сделать новый шаг по карьерной лестнице?
Почему учиться – не обязанность, а удовольствие и почему тесное сплетение теории и практики в обучении дает эффект синергии?
Приходите к нам на День Открытых Дверей. Формат проведения – онлайн – подключиться можно из любой точки мира!

Запись

О курсе

C++ Developer. Professional
135 000 ₽
5 месяцев
Начало 29 апреля

Апгрейд навыков под потребности топовых IT-компаний и решение актуальных вызовов

После обучения вы

  • Сможете получить повышение или сменить место работы: на курсе вас научат нюансам программирования на С++, которые отличают разработчика уровня Middle от Junior. Более 3500 вакансий на рынке для разработчиков С++.
  • Прокачаете свои навыки в сообществе профессионалов:

- преподаватели - практики с большим опытом коммерческой работки …

Программа курса
Модуль 1
Современный C++
Модуль 2
Архитектура
Модуль 3
Параллельные вычисления
Модуль 4
Сеть
Модуль 5
Хранилища
Модуль 6
ML
Модуль 7
Проектная работа
Современный C++
CI/CD. C++11. C++14. C++17. Управление памятью. Шаблонная магия
Система сборки: build, test and deploy // ДЗ
познакомиться;
объяснить формат работы;
обсудить формат взаимодействия;
объяснить зачем нужна автоматизация сборки;
расшифровывать аббревиатуру CI/CD;
подготовить стенд для выполнения самостоятельных работ.
29 апреля, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-01. Сборка и публикация пакета..
Создаем сборочную ферму, которая будет обеспечивать автоматическую сборку наших проектов и запуск тестов с помощью GitHub Actions.


Что требуется сделать:


1. Выполнить задание, описанное в 01.homework.pdf

2. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com с реализованным проектом и настроенным workflow для github actions с историей успешных сборок;
- ссылку на релиз на github для вашего проекта.
Особенности C++11. auto, lambda, tuple // ДЗ
освежить основы по C++11 (пригодится дальше по курсу);
рассмотреть новые фичи C++11 (тоже пригодится);
обсудить особенности, которые важно учитывать.
6 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-02. Фильтрация IP-адресов.
Реализуем утилиту для эффективной сортировки и фильтрации лога IP-адресов.

Продолжаем пользоваться сборочной фермой для публикации пакета.


Что требуется сделать:
1. Выполнить задание, описанное в 02.homework.pdf
2. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com с реализованным проектом и настроенным workflow для github actions с историей успешных сборок;
- ссылку на релиз на github для вашего проекта.
Особенности C++11. Move, variadic templates
освежить основы по C++11 (пригодится дальше по курсу);
рассмотреть новые детали;
обсудить особенности, которые стоит учитывать.
13 мая, 20:00 — 21:30
Сравнение C++11/C++14 с С++ 03
освежить знания по C++14;
рассмотреть новые детали;
обсудить особенности С++ 14, на которые стоит обратить внимание.
15 мая, 20:00 — 21:30
Реализация умных указателей
рассмотреть правило: "взял память - верни, когда больше не нужна";
объяснить, как следовать этому правилу;
разобраться с разными типами умных указателей.
20 мая, 20:00 — 21:30
Идея аллокаторов // ДЗ
объяснить важность стратегий аллокации памяти;
использовать разные аллокаторы;
разобраться, как реализовать свой аллокатор;
объяснить, как расширяется std::vector, и почему именно так.
22 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-03. allocator.
Реализуем собственный STL-совместимый аллокатор, используем его в стандартных контейнерах. Пишем свой контейнер, поддерживающий параметризацию аллокатором по аналогии с STL.


Что требуется сделать:


1. Выполнить задание описанное в 03.homework.pdf


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


3. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com с реализованным проектом и настроенным workflow для github actions с историей успешных сборок;
- ссылку на релиз на github для вашего проекта.
- ссылку на аккаунт на acm.timus.ru со списком принятых задач.
Шаблонная магия // ДЗ
перестать бояться шаблонов;
пообещать себе перестать пользоваться макросами;
прочитать STL;
работать с документацией.
27 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-04. SFINAE + Doxygen.
Применяем полученные знания о шаблонах, реализуя перегруженные шаблонные функции с помощью механизма SFINAE. Подключаем к своей сборочной ферме утилиту doxygen.


Что требуется сделать:


1. Выполнить задание описанное в 04.homework.pdf


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


3. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com с реализованным проектом и настроенным workflow для github actions с историей успешных сборок;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач.
Обзор C++17. Constexpr lambda. Fold expression. Attributes. Type deduction
разобраться с основными нововведениями С++ 17;
объяснить в каких случаях они используются;
обойти несколько спорных моментов.
29 мая, 20:00 — 21:30
Обзор C++17. If constexpr. Structured bindings. Statements with initializer. std::filesystem
разобраться с основными нововведениями С++17;
рассмотреть кейсы использования;
обсудить несколько тонких моментов;
пользоваться новым стандартом языка.
3 июня, 20:00 — 21:30
Обзор С++20. Ranges, модули, концепты, format
Узнать о нововведениях в стандарте С++20
5 июня, 20:00 — 21:30
Обзор С++20/23. Корутины, expected, generator, stacktrace
Узнать о стандарте С++20; узнать о стандарте С++23
10 июня, 20:00 — 21:30
Архитектура
Принципы проектирования ПО, GRASP, шаблоны GoF, STL, Boost
Принципы проектирования ПО // ДЗ
разобраться, зачем нужны принципы;
пользоваться принципами,
прочитать UML диаграммы.
17 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-05. Editor.. В это самостоятельной работе применяем полученные знания про шаблоны, реализуем функционал вывода IP-адреса в общем виде, подключаем к своему проекту doxygen и генерируем документацию.


Что требуется сделать:


1. Выполнить задание описанное в 05.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. Выложить на ревью свои решения ДЗ-02, ДЗ-03 и ДЗ-04.


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


5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com с реализованным проектом и настроенным workflow для github actions с историей успешных сборок;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач
- ссылки на выполненные ревью
GRASP
обращать внимание на архитектурные детали кода;
улучшать метрики кода;
находить ошибки в коде коллег.
19 июня, 20:00 — 21:30
Шаблоны GoF. Порождающие
прочитать паттерны проектирования;
использовать паттерны;
объяснить ценность экспериментов.
24 июня, 20:00 — 21:30
Шаблоны GoF. Структурные // ДЗ
прочитать паттерны проектирования;
использовать паттерны;
объяснить ценность экспериментов.
26 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-06. Matrix.. Реализуем бесконечную разреженную матрицу, используя паттерн Proxy(Заместитель).


Что требуется сделать:


1. Выполнить задание, описанное в 06.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;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Шаблоны GoF. Поведенческие. Command, Interpreter, Iterator, Mediator, Memento, Chain of responsibilily
прочитать паттерны проектирования;
использовать паттерны;
объяснить ценность экспериментов.
1 июля, 20:00 — 21:30
Шаблоны GoF. Поведенческие. Observer, State, Strategy, Template method, Visitor
прочитать паттерны проектирования;
использовать паттерны;
объяснить ценность экспериментов.
3 июля, 20:00 — 21:30
STL. Контейнеры // ДЗ
рассмотреть контейнеры STL;
объяснить, какие типы контейнеров есть в STL;
настраивать поведение контейнеров.
15 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-07. Парсер пакетных команд.
Создаем утилиту для парсинга и комплексного логгирования пакетных команд. Стремимся к снижению зависимостей между модулями.


Что требуется сделать:


1. Выполнить задание, описанное в 07.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. Сделать ревью решений ДЗ-05 двух коллег (которые его выполнили).


4. Опционально: сделать ревью на РЕВЬЮ ДЗ-05 (отзыв о выполненном ревью).


5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
STL. Алгоритмы
разобраться, почему алгоритмов в STL так много;
объяснить, зачем нужны алгоритмы в STL;
использовать алгоритмы.
17 июля, 20:00 — 21:30
Бонус. Красно-чёрные деревья
перечислить правила размещения элементов в красно-чёрном дереве;
выполнить балансировку красно-чёрного дерева;
выполнить удаление элементов из красно-чёрного дерева.
22 июля, 20:00 — 21:30
Boost. Разное
объяснить философию проекта Boost;
прочитать документациию Boost,
выбирать и применять библиотеки.
24 июля, 20:00 — 21:30
Boost. Паттерны проектирования // ДЗ
рассмотреть Boost;
посмотреть на реализацию паттернов проектирования;
расширить знания про библиотеку.
29 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-08. Boost. Создаем полезную утилиту для быстрого поиска дублирующихся по содержимому файлов, практикуясь в использовании библиотеки Boost


Что требуется сделать:


1. Выполнить задание, описанное в 08.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. Опционально. Сделать ревью решений ДЗ-06 двух коллег (которые его выполнили).


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


5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Бонус. Хэш-функции и хэш-таблицы
создавать хэш-функции;
вычислять хэш-значения для строк;
добавлять данные в хэш-таблицы.
31 июля, 20:00 — 21:30
Параллельные вычисления
Использование многопоточности, паттерны многопоточных приложений, асинхронный подход к решению задач, LockFree техника, особенности атомарных операций в C++.
Многопоточность
использовать потоки в своих приложениях;
решать основные проблемы многопоточности;
использовать инструменты стандартной библиотеки.
5 августа, 20:00 — 21:30
Шаблоны 5
объяснить многопоточные паттерны;
использовать для решения задач.
7 августа, 20:00 — 21:30
Асинхронное программирование // ДЗ
объяснить разницу между многопоточностью, параллельностью и асинхронностью;
выбрать подходящее решение для своей задачи;
использовать возможности стандартной библиотеки.
12 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-09. Многопоточная асинхронная обработка команд.
Обобщаем код из задания про пакетную обработку команд, обеспечивая
- многопоточную обработку;
- декомпозицию утилиты на библиотеку и клиентскую часть.


1. Выполнить задание описанное в 09.homework.pdf


2. Опционально. На acm.timus.ru решить 3 любые задачи с уровнем сложности от 501 до 550.


3. Опционально. Предоставить своё ревью на решения ДЗ-07 от двух коллег (которые его сделали).
Lockfree DS
разобраться в том, что такое lock-free подход;
видеть сценарии его использования;
прочитать lock-free код.
14 августа, 20:00 — 21:30
Атомарные типы данных
использовать атомарные операции в своём коде;
разобраться в принципах и стоимости их работы.
19 августа, 20:00 — 21:30
Сеть
Основные принципы сетевого взаимодействия, использование библиотеки Boost.Asio
Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
21 августа, 20:00 — 21:30
Сетевое взаимодействие // ДЗ
объяснить, зачем нужна сеть в программах на C++,
объяснить, как решать возникающие проблемы.
26 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-10. Асинхронная сетевая обработка команд. Завершаем декомпозицию утилиты пакетной обработки, реализуя решающий ту же задачу асинхронный сервер на основе Boost.Asio.


1. Выполнить задание описанное в 10.homework.pdf


2. Опционально. На acm.timus.ru решить 2 любые задачи с уровнем сложности от 551 до 600.


3. Опционально. Предоставить своё ревью на решения ДЗ-07 от двух коллег (которые его сделали).
Асинхронный ввод/вывод
использовать библиотеки для работы с сетью;
выбирать подходящие инструменты.
28 августа, 20:00 — 21:30
Хранилища
Различные системы хранения данных - РСУБД и NoSQL системы, схема mapreduce для обработки большого количества данных, ORM системы для автоматизации.
РСУБД // ДЗ
использовать хранилища данных в своих проектах.
9 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-11. outer join. Создаем многопоточный сетевой сервис, обрабатывающий SQL-подобные запросы


1. Выполнить задание описанное в 10.homework.pdf


2. Опционально. На acm.timus.ru решить 2 любые задачи с уровнем сложности от 601 до 650.


3. Опционально. Предоставить своё ревью на решения ДЗ-8 от двух коллег (которые его сделали).
Key Value
разобраться в том, что же такое NoSQL;
выбирать решение под задачу.
11 сентября, 20:00 — 21:30
Много данных // ДЗ
разобраться в идеологии map reduce;
немного поэкспериментировать.
16 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-12. mapreduce. Реализуем обобщенную систему запуска задач MapReduce и утилиту для поиска минимального уникального префикса множества строк на ее основе.


1. Выполнить задание описанное в 11.homework.pdf


2. Опционально. На acm.timus.ru решить 2 любые задачи с уровнем сложности от 651 до 700.


3. Выложить свою реализацию на ревью.


4. Опционально. Предоставить два своих ревью на ДЗ-09.
ORM
разобраться, зачем нужны ORM;
применять их в своих приложениях.
18 сентября, 20:00 — 21:30
ML
Задачи, которые решаются с помощью алгоритмов машинного обучения.
Инференс ML моделей в C++
разобраться, зачем нужно машинное обучение;
решать базовые задачи ML;
прочитать документацию Dlib.
23 сентября, 20:00 — 21:30
Интеграция с ML библиотеками // ДЗ
разобраться с формулировкой и решение задачи регрессии.
25 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-13. Компьютерное зрение. Реализуем инференс одной из ML моделей компьютерного
зрения для классификации изображений.

1. Выполнить задание описанное в 12.homework.pdf
2. Выложить свою реализацию на ревью.
3. Да и хватит на этом. Пора приступать к проекту.
Проектная работа
Заключительная часть курса о программировании на С++ посвящена проектной работе.
Мало что доставляет столько же удовольствия, как самостоятельно реализованный проект на выбранную самостоятельно тему на основе знаний, полученных на курсе.
В процессе написания (и даже в процессе выбора темы) можно получить консультации преподавателей.

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

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

F.A.Q.: Наиболее часто задаваемые вопросы:

Нужно ли оплачивать обучение до Дня открытых дверей, если я хочу гарантированно попасть в группу?
Да, мы рекомендуем заранее оплатить обучение, чтобы гарантированно попасть в группу. В период проведения Дня открытых дверей резко возрастает количество желающих обучаться, поэтому может случиться так, что к окончанию Дня открытых дверей мест в группе не останется
Кто будет проводить День открытых дверей?
Проводить День открытых дверей будет преподаватель курса.
Как принять участие в Дне открытых дверей?
Для того, чтобы принять участие в Дне открытых дверей, оставьте свой e-mail в поле регистрации на мероприятие. Перед началом Дня открытых дверей мы пришлем вам ссылку, пройдя по которой, вы сможете присоединиться к вебинару.
Какие вопросы будем обсуждать на Дне открытых дверей?
На дне открытых дверей мы поговорим о проекте OTUS (о программе курса, почему мы не принимаем в группы новичков, почему учиться у нас интересно, но сложно), карьерных перспективах выпускников (почему вероятность карьерного роста у лучших студентов стремится к 100%), учебном процессе (оплатах, оценке знаний, сертификатах и прочих аспектах). Также ведущий мероприятия с радостью ответит на все ваши вопросы.