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

Весна 2020

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

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

Подробнее

7 домашних заданий, которые зависят друг от друга, код и знания из предыдущего домашнего задания нужны для реализации новых.

Подробнее

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

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

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 часа

Экзамен №1: Экзамен  

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