Начало занятий 22 февраля

Разработчик C++

Общая стоимость: 40 000 ₽
В месяц: 9 500 ₽
4 часа в неделю
5 месяцев
О курсе

Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр).
В курсе «Разработчик C++» будут рассмотрены как вводные понятия, такие как инструменты автоматизации, STL, нововведения 11 и 14 стандартов; так и более сложные: асинхронное программирование, шаблоны проектирования, архитектуры распределенных высокодоступных сервисов.

Программа курса
1
Введение
2
Архитектура сетей
3
Параллельные вычисления
4
Сеть
5
Хранилища
6
ML
Занятие 1: Система сборки: build, test and deploy.
Поиск распространяемых пакетов. Кастомный модуль для наших пакетов.

ДЗ

Сборка пакета из простого приложения.
Занятие 2: Server mode: построение сервера автосборки.
Занятие 3: Широкоиспользуемые фичи C++11 стандарта. rvalue и lvalue ссылки. Move semantic. Variadic Templates. POD. Лямбда-функции. Кортежи.

ДЗ

Переписать старый код на новый манер, Набор данных для тестирования.
Занятие 4: Рассмотрим полезные нововведения 14 стандарта.
Занятие 5: Вглубь реализации умных указателей.
Подводные камни и оптимизации.

ДЗ

Переписать код со встроенными указателями на вариант с умными..
Занятие 6: Идея аллокаторов.
Стандартный аллокатор и его недостатки. Различные методы управлением памятью: достоинства и недостатки.
Занятие 7: Что это и зачем? Как выглядит в C++: макросы и шаблонная магия. Примеры. Type traits в STL. SFINAE
Занятие 8: Принципы проектирования ПО
UML. Принципы: SoC, DRY, YAGNI, KISS, TDA, LoD, SOLID

ДЗ

По интерфейсу рисуем диаграмму, по диаграмме - алгоритм. Опционально примеры удачного применения в своей практике ПП.
Занятие 9: GRASP. Часть 1
Рассмотрим: Indirection, Low Coupling, Polymorphism, Protected Variations.

ДЗ

Ссылки на материалы для самостоятельного изучения.
Занятие 10: GRASP. Часть 2
Рассмотрим: Creator, Controller, Pure Fabrication, Information Expert, High Cohesion

ДЗ

Решаем фрагмент прикладной задачи используя изученные подходы..
Занятие 11: Шаблоны GoF. Часть 1.
Порождающие шаблоны проектирования.

ДЗ

Ссылки на материалы для самостоятельного изучения.
Занятие 12: Шаблоны GoF. Часть 2.
Структурные шаблоны проектирования.

ДЗ

Решаем фрагмент прикладной задачи используя изученные подходы..
Занятие 13: Шаблоны GoF. Часть 3.
Поведенческие шаблоны проектирования. 1 часть

ДЗ

Ссылки на материалы для самостоятельного изучения.
Занятие 14: Шаблоны GoF. Часть 4.
Поведенческие шаблоны проектирования. 2 часть

ДЗ

Решаем фрагмент прикладной задачи используя изученные подходы..
Занятие 15: Антипаттерны
Разберем антипаттерны программирования (кодирования), ООП, проектирования и антипаттерны в других областях

ДЗ

Ссылки на материалы для самостоятельного изучения.
Занятие 16: STL. Часть 1.
Структуры данных STL

ДЗ

Реализуем алгоритм используя разные структуры. Оцениваем читаемость и эффективность..
Занятие 17: STL. Часть 2
Алгоритмы

ДЗ

Ссылки на материалы для самостоятельного изучения.
Занятие 18: Boost. Часть 1
Контейнеры

ДЗ

Создаем набор повседневных утилит..
Занятие 19: Boost. Часть 2
Алгоритмы

ДЗ

Ссылки на материалы для самостоятельного изучения..
Занятие 20: Многопоточность
Потоки. Критические секции и методы синхронизации: мьютексы, семафор, условные переменные, барьеры. Пулы потоков.

ДЗ

Реализуем алгоритм максимально задействовав все имеющиеся ядра CPU..
Занятие 21: Шаблоны 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.

ДЗ

Ссылки на материалы для самостоятельного изучения.
Занятие 22: Асинхронное программирование
Архитектура асинхронных сервисов. Низкоуровневая поддержка асинхронного выполнения кода.

ДЗ

Читаем RSS нескольких сервисов..
Занятие 23: Lockfree DS
Неблокирующие структуры данных и алгоритмы. BOOST Lockfree

ДЗ

Ссылки на материалы для самостоятельного изучения..
Занятие 24: Сетевое взаимодействие
Сокеты. Протоколы: TCP и UDP. Сериализация. HTTP. Json. Zmq. Protobuf.

ДЗ

Клиент и сервер для реализации внешнего kv хранилища..
Занятие 25: Асинхронный ввод/вывод
Библиотеки и практики работы с неблокирующей передачей данных

ДЗ

Ссылки на материалы для самостоятельного изучения..
Занятие 26: РСУБД
Использование РСУБД. Подключение и работа с БД

ДЗ

Высокоуровневый клиент для работы с pg.
Занятие 27: Key Value
Идея NoSQL. Aerospike, redis, leveldb

ДЗ

Ссылки на материалы для самостоятельного изучения..
Занятие 28: Много данных
Map reduce

ДЗ

На реальном примере выявить навигационные запросы..
Занятие 29: ORM
ООП при работе с базами данных. Паттерны DAO и Repository

ДЗ

Ссылки на материалы для самостоятельного изучения..
Занятие 30: Dlib. Часть 1.
Кластеризация, тематическое моделирование.

ДЗ

Разбить заголовки прочитанных rss на группы.
Занятие 31: Dlib. Часть 2.
Регрессия

ДЗ

Ссылки на материалы для самостоятельного изучения..
Занятие 32: Dlib. Часть 3.
Классификация

ДЗ

На реальном примере выявить поведение характерное для ботов..
Расписание
Дата и время
Событие
Группа
C++-2017-12
19 февраля, понедельник
20:00 — 21:30
Многопоточность
Потоки. Критические секции и методы синхронизации: мьютексы, семафор, условные переменные, барьеры. Пулы потоков.
C++-2017-12
C++-2017-12
22 февраля, четверг
20:00 — 21:30
Шаблоны 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.
C++-2017-12
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
Преподаватели
Дмитрий Шебордаев
Руководитель отдела разработки технологий в 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 в дополнении к разным средствам разработки.
Работодатели