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

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


Домашние задания
Информацию по контестам и подробности разбалловки можно получить на странице здесь
Структура оценивания
Темы курса разбиты на модули. Каждый модуль состоит из прохождения контестов (сдачи задач в виде программного кода в тестирующей системе). Контесты делятся на следующие типы.

Регулярные. Проходят согласно программе лекций, стандартно длятся две недели. Содержат базовые задачи, решение которых позволяет закрепить текущие навыки.

Сквозные. Проходят в течение всего модуля (или нескольких). Задачи сквозных контестов как правило охватывают сразу несколько тем или содержат нетривальную часть, связанную с разработкой алгоритмов или выбора структуры данных.

Контрольные. Контрольные контесты проходят в конце модуля, проходят во время занятий и длятся ровно три часа (или больше, если позволит расписание). Предполагается прохождение контеста в режиме реального времени, присутствуя в аудитории. В случае невозможности личного присутствия, допускается онлайн прохождение контеста вне аудитории, но тогда за контест начисляется 50% баллов, а остальные 50% перераспределяются на зачётный контест.

Зачётный контест. Контест, который проходит в самом конце курса. Скорее всего будет проходить в отдельное время. Те, кто пропускал очные контрольные контесты могут компенсировать на нём баллы за офлайн-сдачи.Также зачётный контест позволяет всем желающим набрать бонусные 15% к оценке. Прохождение зачётного контеста возможно исключительно при личном присутствии.

Регулярные и сквозные контесты будут в сумме давать 60% оценки, контрольные—40%, зачётный—15% (бонусные). Также могут быть бонусные баллы за некоторые задачи из регулярных и сквозных контестов. Для получения оценки за курс необходимо либо очное участие хотя бы в 50% контрольных контестов, либо участие в зачётном контесте, в котором возможно только очное участие.

Внимание! На этом курсе нулевая толерантность к списыванию. В случае обнаружения списывания факта списывания от набранных баллов отнимается 20% за каждый факт списывания (если поймали на списывании 2 раза—отнимается 40%) у всех участников.
Материалы лекций