александр рубцов
Практикум по алгоритмам
О курсе
Модули будут состоять из нескольких тем, объединённых программисткой тематикой. Считается, что сами алгоритмы уже изучены в рамках курса алгоритмов, поэтому базовая часть курса будет посвящена реализации изученных алгоритмов. Будет значительная часть «творческих» задач, предполагающих разработку алгоритмов и выбор структуры данных для задач, в которых исходно неясно какое решение нужно выбрать. Сложные задачи такого типа будут в основном в сквозных контестах.
Контест по каждой теме модуля стандартно длится две недели. При этом, на каждой неделе будут идти очные занятия, на которых будут обсуждаться аспекты реализации, изучаться темы, уместные на данный момент для практических задач. В процессе занятий будут также разбираться (как правило частично) задачи из текущих регулярных контестов: обсуждаться, что именно и как планировалось реализовать.
Модуль заканчивается контрольным контестом, в котором будет не очень много не очень сложных задач по пройденным темам, но которые необходимо сдать очно или хотя бы в онлайн-режиме.
Команда курса
Александр Рубцов
Лектор
Александр Кульков
Ассистент
Программа курса
Введение. Базовые навыки, культура программирования и написания кода
Жадные алгоритмы, индуктивные функции, онлайн-алгоритмы, рекурсивные алгоритмы, динамическое программирование сверху.
Базовые структуры данных
Структуры данных.

Реализации:
Стековый калькулятор • Очереди с приоритетами через кучи • Коды Хаффмана в виде кучи • Деревья поиска
Базовые алгоритмы на графах
Поиск в ширину, поиск в глубину, топологическая сортировка, динамика на DAG.
Поиск кратчайших путей
Дейкстра, Беллман-Форд, Флойд-Уоршелл, Прим и Крускал.
Динамическое программирование
Дополнительные структуры данных
Деревья отрезков, Фибоначчиевы кучи, Декартовы деревья.