Проходил 20 февраля в 20:00

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

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

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

О курсе

Разработчик C++
Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр). В курсе «Разработчик C++» будут рассмотрены как вводные понятия, такие как инструменты автоматизации, STL, нововведения 11 и 14 стандартов; так и более сложные: ...
Программа курса
1
Введение
2
Архитектура
3
Параллельные вычисления
4
Сеть
5
Хранилища
6
ML
Занятие 1: Тест платформы
Проверяем как работает вебинарная
Занятие 2: Система сборки: build, test and deploy.
Поиск распространяемых пакетов. Кастомный модуль для наших пакетов.
ДЗ
Сборка и публикация пакета. Написать программу выводящую на консоль единственную строку

Hello, World!

Сформировать готовый для установки deb-пакет со скомпилированной программой и выложить его в репозиторий.
Прислать ссылку на репозиторий в github и ссылку на репозиторий с
пакетом.
Будет здорово, но не обязательно
Добавить версионность в пакет и сообщение.
Запустить на этапе сборки тесты.
Может пригодиться
Выложить исходные тексты в репозиторий на github.
Залогиниться на https://travis-ci.org/ и включить для своего репозитория
автоматическую сборку.
Залогиниться на https://bintray.com/ (For an Open Source Account и аккаунт
github). Создать новый репозиторий - имя произвольное, тип Debian, Default
Licenses любая. После создания отредактировать включив GPG sign.
Создать в созданном репозитории новый пакет - имя произвольное,
ссылка на контроль версии может быть указана как - (просто чтобы было
заполнено).
По ссылке https://bintray.com/profile/edit в пункте API Key скопировать
ключ. В настройках репозитория в https://travis-ci.org создать переменную,
например BINTRAY_API_KEY, и в качестве значения API Key. Это
позволит не указывать явно ключ в исходниках.


Пример на github:
https://github.com/vvz-otus/hw02.cpp01_2
Только ваш проект называться будет helloworld (а не cpp01_2:)
Занятие 3: Server mode: построение сервера автосборки.
Занятие 4: Широкоиспользуемые фичи C++11 стандарта. rvalue и lvalue ссылки. Move semantic. Variadic Templates. POD. Лямбда-функции. Кортежи.
ДЗ
Переписать старый код на новый манер, Набор данных для тестирования.
Занятие 5: Рассмотрим полезные нововведения 14 стандарта.
Занятие 6: Вглубь реализации умных указателей.
Подводные камни и оптимизации.
ДЗ
Переписать код со встроенными указателями на вариант с умными..
Занятие 7: Идея аллокаторов.
Стандартный аллокатор и его недостатки. Различные методы управлением памятью: достоинства и недостатки.
Занятие 8: Что это и зачем? Как выглядит в C++: макросы и шаблонная магия. Примеры. Type traits в STL. SFINAE
Занятие 9: Принципы проектирования ПО
UML. Принципы: SoC, DRY, YAGNI, KISS, TDA, LoD, SOLID
ДЗ
По интерфейсу рисуем диаграмму, по диаграмме - алгоритм. Опционально примеры удачного применения в своей практике ПП.
Занятие 10: GRASP. Часть 1
Рассмотрим: Indirection, Low Coupling, Polymorphism, Protected Variations.
ДЗ
Ссылки на материалы для самостоятельного изучения.
Занятие 11: GRASP. Часть 2
Рассмотрим: Creator, Controller, Pure Fabrication, Information Expert, High Cohesion
ДЗ
Решаем фрагмент прикладной задачи используя изученные подходы..
Занятие 12: Шаблоны GoF. Часть 1.
Порождающие шаблоны проектирования.
ДЗ
Ссылки на материалы для самостоятельного изучения.
Занятие 13: Шаблоны GoF. Часть 2.
Структурные шаблоны проектирования.
ДЗ
Решаем фрагмент прикладной задачи используя изученные подходы..
Занятие 14: Шаблоны GoF. Часть 3.
Поведенческие шаблоны проектирования. 1 часть
ДЗ
Ссылки на материалы для самостоятельного изучения.
Занятие 15: Шаблоны GoF. Часть 4.
Поведенческие шаблоны проектирования. 2 часть
ДЗ
Решаем фрагмент прикладной задачи используя изученные подходы..
Занятие 16: Антипаттерны
Разберем антипаттерны программирования (кодирования), ООП, проектирования и антипаттерны в других областях
ДЗ
Ссылки на материалы для самостоятельного изучения.
Занятие 17: STL. Часть 1.
Структуры данных STL
ДЗ
Реализуем алгоритм используя разные структуры. Оцениваем читаемость и эффективность..
Занятие 18: STL. Часть 2
Алгоритмы
ДЗ
Ссылки на материалы для самостоятельного изучения.
Занятие 19: Boost. Часть 1
Контейнеры
ДЗ
Создаем набор повседневных утилит..
Занятие 20: Boost. Часть 2
Алгоритмы
ДЗ
Ссылки на материалы для самостоятельного изучения..
Занятие 21: Многопоточность
Потоки. Критические секции и методы синхронизации: мьютексы, семафор, условные переменные, барьеры. Пулы потоков.
ДЗ
Реализуем алгоритм максимально задействовав все имеющиеся ядра CPU..
Занятие 22: Шаблоны 5
Concurrency pattern. Active Object, Balking, Barrier, Double-checked locking, Guarded suspension, Leaders/followers, Monitor Object, Reactor, Read write lock, Scheduler, Thread pool, Thread-local storage.
ДЗ
Ссылки на материалы для самостоятельного изучения.
Занятие 23: Асинхронное программирование
Архитектура асинхронных сервисов. Низкоуровневая поддержка асинхронного выполнения кода.
ДЗ
Читаем RSS нескольких сервисов..
Занятие 24: Lockfree DS
Неблокирующие структуры данных и алгоритмы. BOOST Lockfree
ДЗ
Ссылки на материалы для самостоятельного изучения..
Занятие 25: Сетевое взаимодействие
Сокеты. Протоколы: TCP и UDP. Сериализация. HTTP. Json. Zmq. Protobuf.
ДЗ
Клиент и сервер для реализации внешнего kv хранилища..
Занятие 26: Асинхронный ввод/вывод
Библиотеки и практики работы с неблокирующей передачей данных
ДЗ
Ссылки на материалы для самостоятельного изучения..
Занятие 27: РСУБД
Использование РСУБД. Подключение и работа с БД
ДЗ
Высокоуровневый клиент для работы с pg.
Занятие 28: Key Value
Идея NoSQL. Aerospike, redis, leveldb
ДЗ
Ссылки на материалы для самостоятельного изучения..
Занятие 29: Много данных
Map reduce
ДЗ
На реальном примере выявить навигационные запросы..
Занятие 30: ORM
ООП при работе с базами данных. Паттерны DAO и Repository
ДЗ
Ссылки на материалы для самостоятельного изучения..
Занятие 31: Dlib. Часть 1.
Кластеризация, тематическое моделирование.
ДЗ
Разбить заголовки прочитанных rss на группы.
Занятие 32: Dlib. Часть 2.
Регрессия
ДЗ
Ссылки на материалы для самостоятельного изучения..
Занятие 33: Dlib. Часть 3.
Классификация
ДЗ
На реальном примере выявить поведение характерное для ботов..

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

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