Разработчик 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.
Классификация
ДЗ
На реальном примере выявить поведение характерное для ботов..
Расписание
Дата и время
Событие
Группа
C++-2017-12
26 февраля, понедельник
20:00 — 21:30
Асинхронное программирование
Архитектура асинхронных сервисов. Низкоуровневая поддержка асинхронного выполнения кода.
C++-2017-12
C++-2017-12
1 марта, четверг
20:00 — 21:30
Lockfree DS
Неблокирующие структуры данных и алгоритмы. BOOST Lockfree
C++-2017-12
C++-2018-02
2 марта, пятница
20:00 — 21:30
Server mode: построение сервера автосборки.
C++-2018-02
C++-2017-12
5 марта, понедельник
20:00 — 21:30
Сетевое взаимодействие
Сокеты. Протоколы: TCP и UDP. Сериализация. HTTP. Json. Zmq. Protobuf.
C++-2017-12
C++-2018-02
6 марта, вторник
20:00 — 21:30
Широкоиспользуемые фичи C++11 стандарта. rvalue и lvalue ссылки. Move semantic. Variadic Templates. POD. Лямбда-функции. Кортежи.
C++-2018-02
C++-2017-12
8 марта, четверг
20:00 — 21:30
Асинхронный ввод/вывод
Библиотеки и практики работы с неблокирующей передачей данных
C++-2017-12
C++-2018-02
9 марта, пятница
20:00 — 21:30
Рассмотрим полезные нововведения 14 стандарта.
C++-2018-02
C++-2017-12
12 марта, понедельник
20:00 — 21:30
РСУБД
Использование РСУБД. Подключение и работа с БД
C++-2017-12
Преподаватели
Дмитрий Шебордаев
Руководитель отдела разработки технологий в Rambler&Co
Получил образование по специальности «Прикладная математика» в Московском государственном университете экономики статистики и информатики.
Начинал рядовым разработчиком в компании, автоматизирующей процессы розничной торговли. Автор одной из самых популярных систем в РФ и бывших республиках. Не прекращая активной деятельности в разработке, прошёл путь до руководителя. Последние несколько лет работает в области информационного поиска в крупной российской ИТ-компании. Остаётся верен своей профессии свыше 20 лет. Читает образовательные курсы по специальности.
Василий Зазнобин
Разработчик со стажем больше 20-ти лет.
Работал в таких компаниях как: Информзащита, где на заре своей карьеры разрабатывал инсталляционные программы систем защиты; CBOSS, где принимал участие в развитии интеллектуальной телекоммуникационной сети, одной из задач была разработка SMS центра в части поддержки SMPP протокола; Технологический Центр Дойче Банка, где принимал участие в развитии инвестиционно-брокерского бизнеса, одной из задач было развитие серверной части брокерской системы торговли акциями, работающей на мировых инвестиционных площадках NYSE, NASDAQ, LSE, HKSE.
Продолжает работать в компании "Сбербанк-Технологии", где принимал участие в развитии розничного бизнеса в таких программах как Централизация, Надежность 99.99, где одной из задач было создание системы верификации фронтальной и резервной клиентских баз физических лиц.
Любит настольный теннис и разговоры о вселенной. Считает C++ языком программирования будущего. Эволюция привела язык к 14-му стандарту, которого мы и придерживаемся на нашем курсе.
Юрий Авраменко
Доцент кафедры информационных систем университета ИТМО, кандидат технических наук, иностранная степень доктора наук в технологии в области поддержки приниятия решений в проектировании процессов (DSc, Технический университет Лаппеенранты) специалист в области информационных технологий и программирования более 15 лет, практика по языкам программирования включает в себя Pascal, Fortran, Basic, C/C++, C#, PHP, Java в дополнении к разным средствам разработки.
Работодатели