Углубленное программирование на С++

Весна 2020

Цель курса — Научить слушателей писать эффективный код на C++ для решения практических задач в области высоконагруженных систем, работающих под Linux.

Описание
Подробнее
Чему научитесь
Основы разработки высоконагруженных сетевых сервисов под Linux. Базовое проектирование систем. Основы отладки, тестирования, конфигурирования приложений.
Подробнее

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

Владислав Смирнов Владислав Смирнов

Backend developer @ top.mail.ru

Александр Бадьин Александр Бадьин

Программист БЮ Поиск Mail.ru.

Программа

занятие Часы в ауд. + сам. работа

Лекция №1: Введение в Linux, общий обзор архитектуры C++ проекта.  
+ ДЗ №1

Введение в Linux, общий обзор архитектуры C++ проекта.
Домашнее задание №1: ДЗ № 1
Введение в Linux, общий обзор архитектуры C++ проекта.
4 ак. ч. + 4 ак. ч. СР

Лекция №2: Основы проектирования ПО (архитектура, SOLID). Exception safety  
+ ДЗ №2

Основы проектирования ПО (архитектура, SOLID). Exception safety
Домашнее задание №2: ДЗ № 2
Основы проектирования ПО (архитектура, SOLID). Обработка ошибок, обработка сигналов.
4 ак. ч.

Лекция №3: Сетевое взаимодействие в Linux.  
+ ДЗ №3

Сетевое взаимодействие в Linux.
Домашнее задание №3: ДЗ № 3
Эхо-сервер
4 ак. ч.

Лекция №4: Мультиплексирование ввода/вывода в Linux.  
+ ДЗ №4

Мультиплексирование ввода/вывода в Linux.
Домашнее задание №4: ДЗ № 4
Переделать предыдущее дз так, чтобы оно обрабатывало соединения через epoll
4 ак. ч.

Рубежный контроль №1: РК № 1  

РК № 1
4 ак. ч.

Лекция №5: Процессы. Потоки. Корутины.  
+ ДЗ №5

Процессы. Потоки. Корутины.
Домашнее задание №5: ДЗ № 5
Объединить наработки предыдущего дз и практикума по корутинам таким образом, чтобы реализовать фреймворк для HTTP-сервера
4 ак. ч.

Лекция №6: Резерв (IPC, shared_memory)  
+ ДЗ №6

IPC, shared_memory

 
Домашнее задание №6: ДЗ № 6
Работа с сервером
4 ак. ч.

Рубежный контроль №2: РК № 2  

РК № 2
4 ак. ч.

Лекция №7: Работа с файлами.  
+ ДЗ №7

Работа с файлами.
Домашнее задание №7: ДЗ 7
Сделать серверу конфиг (INI, JSON). Прологировать исключительные ситуации в лог файл. Сделать access_log. С помощью фреймворка реализовать HTTP-сервер, который умеет искать по большому файлу и отдавать JSON-данные.
4 ак. ч.

Лекция №8: Резерв. Тестирование кода.  

Резерв. Тестирование кода.
4 ак. ч.

Рубежный контроль №3: РК № 3  

Экзамен
4 ак. ч.

РАСПИСАНИЕ

Полное расписание