Алгоритмы и эффективные вычисления

Алгоритмы используются практически во всех областях computer science. В ходе обучения слушатели познакомятся:

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

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

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

Для кого

Программа будет полезна всем, кто интересуется computer science и хочет понимать принципы реализации алгоритмов, а не пользоваться готовыми, как черным ящиком. Также программа поможет подготовиться к собеседованию в IT-компанию и поступлению в магистратуру технических специальностей.

Для успешного прохождения программы необходимы знакомство с одним из распространённых языков программирования (C++, Java, Python, Octave, Haskell) и базовые знания математики: доказательство от противного, доказательство по индукции, логарифм, экспонента.

Курсы программы

Алгоритмы: теория и практика. Методы
  • Жадные алгоритмы
  • «Разделяй и властвуй»
  • Динамическое программирование
Теоретическая информатика: сложность вычислений
  • Разрешающие деревья
  • Схемы из функциональных элементов
  • Пропозициональная логика
  • Переборные задачи и их сложность
  • Класс PSPACE
  • Ускорение перебора
Алгоритмы: теория и практика. Структуры данных
  • Базовые структуры данных
  • Очереди с приоритетом и системы непересекающихся множеств
  • Хеш-таблицы
  • Деревья поиска
Теоретическая информатика: вычислимость
  • Вычислимость
  • Программы и универсальные функции
  • Машины Тьюринга
  • Конвей и FRACTRAN
  • Ассоциативные исчисления

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

Александр Куликов

Доктор физико-математических наук. Старший научный сотрудник ПОМИ РАН, координатор и преподаватель Computer Science центра и Computer Science клуба. Один из авторов специализаций по алгоритмам и дискретной математике на платформах Coursera и edX.

Александр Шень

Кандидат физико-математических наук. Научный сотрудник Лаборатории фундаментальной информатики в Монпелье. Автор учебника «Программирование: теоремы и задачи» и многих других популярных книг по математике и программированию.

Вступительный экзамен

Для поступления на программу необходимо сдать вступительный экзамен, продемонстрировав, что вы имеете базовые навыки программирования и помните математику уровня первого курса технических специальностей.

Записаться на экзамен