Учебные параллели

D

6...7 классы

Основы программирования

Вы изучите

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

Мы ожидаем, что вы

  • Умеете проводить простейшие математические рассуждения.
  • Знакомы с понятием алгоритма.
  • Не обязательно умеете программировать.
Что изучали в прошлом году
Работа со средой программирования. Ввод-вывод, работа с файлами. Целые типы данных, арифметические операции. Логический тип данных, логические операции. Стиль оформления программ. Циклы. Одномерные, многомерные массивы. Символы, строки. Написание функций, рекурсия. Признаки делимости. Остатки по модулю. Алгоритм Евклида. Квадратичные сортировки. Простые числа, делимость, факторизация числа за корень. Решето Эратосфена. Системы счисления. Понятие графа, его представление в программе.

C′

6...8 классы

Алгоритмы для начинающих

Вы изучите

  • Базовые алгоритмы теории чисел, комбинаторики, теории графов.
  • Базовые структуры данных.
  • Алгоритмы сортировки, в том числе быстрой.

Мы ожидаем, что вы

  • Владеете основами языка программирования: вводом-выводом, базовыми операторами и типами данных.
  • Имеете небольшой опыт решения задач, можете самостоятельно довести простейшие программы до рабочего состояния.
Что изучали в прошлом году
Простые числа, делимость, факторизация числа за корень. Решето Эратосфена. Стек. Очередь. Строки. Квадратичные сортировки. Бинарный поиск. Введение в динамическое программирование. Рекурсия. Комбинаторика: формулы для количества, перечисление всех элементов. Понятие графа, его представление в программе. Обход графа в глубину, в ширину. Сортировка слияниями.

C

7...9 классы

Базовые алгоритмы

Вы изучите

  • Базовые структуры данных.
  • Техники бинарного поиска, динамического программирования, хеширования.
  • Классические алгоритмы теории графов.

Мы ожидаем, что вы

  • Уверенно владеете основами языка программирования.
  • Имеете опыт решения задач.
  • Знаете базовые алгоритмы комбинаторики и теории чисел.
Что изучали в прошлом году
Стек. Очередь. Бинарный поиск. Введение в динамическое программирование. Наибольшая возрастающая подпоследовательность, наибольшая общая подпоследовательность. Куча, быстрая сортировка. Хеширование. Хеш-таблица. Понятие графа, его представление в программе. Обход графа в глубину, в ширину. Топологическая сортировка графа. Алгоритм Дейкстры. Алгоритм Флойда. Рекурсия, перечисление комбинаторных объектов. Определение комбинаторного объекта по номеру, и номера по объекту.

B′

7...10 классы

Практическое применение алгоритмов в олимпиадных задачах

Вы изучите

  • Применение и более глубокое изучение уже известных алгоритмов.
  • Практика решения задач с использованием нетривиальных приёмов и алгоритмов.

Мы ожидаем, что вы

  • Уверенно владеете основами языка программирования.
  • Знаете алгоритмы параллелей C′ и C.
  • Имеете опыт решения задач.
Что изучали в прошлом году
Сортировки. Жадные алгоритмы. Бинарный поиск. Тернарный поиск. События на прямой. Сканирующая прямая. Комбинаторика правильных скобочных последовательностей. Хеширование. Хеш-таблица. Обходы в глубину/в ширину на неявных графах. Алгоритм Дейкстры. Алгоритм Флойда. Алгоритм Форда-Беллмана. Техника двух указателей. Элементарная вычислительная геометрия: вектора, операции с ними, задание простейших геометрических объектов. Геометрия многоугольников, построение выпуклой оболочки множества точек.

B

8...10 классы

Алгоритмы и структуры данных

Вы изучите

  • Cтруктуры данных на основе деревьев.
  • Алгоритмы на строках и графах.
  • Продвинутые методы динамического программирования.
  • Задачи вычислительной геометрии.

Мы ожидаем, что вы

  • Уверенно владеете языком программирования.
  • Имеете опыт решения задач с применением алгоритмов.
  • Знаете основные алгоритмы на графах, алгоритм быстрой сортировки, основные структуры данных (стек, очередь, список, куча).
  • Уверенно владеете техниками перебора, динамического программирования.
Что изучали в прошлом году
Дерево отрезков. Разреженные таблицы. Декартово дерево по явному и неявному ключу. Наибольшая возрастающая подпоследовательность, наибольшая общая подпоследовательность. Динамическое программирование по подотрезкам. Динамическое программирование по подмножествам. Динамическое программирование по поддеревьям. Продвинутые применения обхода в глубину: топологическая сортировка, поиск мостов и точек сочленения. Алгоритм Дейкстры. Алгоритм Флойда. Алгоритм Форда-Беллмана. Алгоритм Прима. Алгоритм Краскала. Система непересекающихся множеств. Элементарная вычислительная геометрия: вектора, операции с ними, задание простейших геометрических объектов. Геометрия окружностей. Геометрия многоугольников, построение выпуклой оболочки множества точек. Эффективный поиск пары ближайших точек. Хеширование. Хеш-таблица. Алгоритм Кнута-Морриса-Пратта, Z-функция. Бор. Расширенный алгоритм Евклида. Обращение элемента по простому модулю. Понятие первообразного корня по простому модулю.

A′

9...10 классы

Алгоритмы и структуры данных++

Вы изучите

  • Примение алгоритмов и техник параллели B к решению задач.
  • Продвинутые алгоритмы: игры на графах, паросочетания, динамическое программирование по профилю.

Мы ожидаем, что вы

  • Решали сложные задачи и участвовали в олимпиадах.
  • Знакомы с темами параллели B: деревом отрезков, строковыми алгоритмами, алгоритмами на графах.
Что изучали в прошлом году
Динамическое программирование по подотрезкам. Динамическое программирование по подмножествам . Динамическое программирование по поддеревьям. Динамическое программирование по профилю и изломанному профилю. Практика решения сложных задач динамического программирования. Дерево отрезков. Дерево Фенвика. Декартово дерево. Применение структур данных вместе с техникой сканирующей прямой. Хеширование. Хеш-таблица. Алгоритм Кнута-Морриса-Пратта, Z-функция. Бор. Алгоритм Ахо-Корасик. Алгоритм Прима. Алгоритм Краскала. Система непересекающихся множеств. Паросочетания в двудольном графе, алгоритм Куна. Игры на ациклических графах. Ретроанализ. Игра в ним и функция Гранди. Геометрия окружностей. Геометрия многоугольников, построение выпуклой оболочки множества точек.

A

9...10 классы

Продвинутые алгоритмы и решение олимпиадных задач высокого уровня

Вы изучите

  • Решение многоходовых задач с использованием сложных алгоритмов и структур данных.
  • Продвинутые алгоритмы: потоки, игры на графах, LCA и центроидная декомпозиция дерева.
  • Практика написания контестов на время.

Мы ожидаем, что вы

  • Имеете значительный опыт решения задач и участия в олимпиадах.
  • Уверенно владеете алгоритмами параллели B, в том числе структурами данных.
Что изучали в прошлом году
Дерево отрезков. Персистентные структуры данных. Корневая оптимизация. Максимальный поток в графе. Алгоритм Диница поиска максимального потока. Поиск максимального потока минимальной стоимости. Игры на ациклических графах. Ретроанализ. Игра в ним и функция Гранди. Бор. Алгоритм Ахо-Корасик. Эффективный поиск наименьшего общего предка двух вершин в корневом дереве. Центроидная декомпозиция дерева. Динамическое программирование по подмножествам. Динамическое программирование по поддеревьям. Практика решения сложных задач динамического программирования. Применение структур данных в задачах динамического программирования. Практика решения сложных задач вычислительной геометрии. Практика написания индивидуальных контестов с ограниченным временем.

P

9...10 классы

Промышленное программирование

Параллель для тех кому интересно не только олимпиадное программирование.

Мы расскажем вам про unit-тестирование, проектирование, чистый код, TDD, git и другие вещи, которые не только встречаются каждый день в разработке, но и очень интересны сами по себе.

Вас ждёт работа над собственными проектами, где можно будет попробовать в деле новые знания. Кроме того мы попробуем парное программирование, посоревнуемся в написании ботов, поиграем в code-retreat.