Полный документ с описанием авторской образовательной программы «Основы программирования, классические алгоритмы и структуры данных, олимпиадное программирование» Краснодарской школы программирования можно скачать здесь: Образовательная программа.
Ниже представлено содержание программы.
Раздел 1 программы предназначен для широкого круга учащихся и ориентирован на учащихся без опыта изучения программирования или с минимальным опытом. Основной возраст освоения материала: учащиеся 5 — 7 классов общеобразовательной школы. Индивидуально могут быть отступления от этого возрастного ориентира как в сторону младшего, так и в сторону старшего возраста. Срок освоения данного раздела программы: от 1 до 3 лет в зависимости от возраста и индивидуальных особенностей учащихся. Набор учащихся осуществляется на общих основаниях по результатам отборочной сессии, которая обычно проходит в течение одной недели в июне на следующий учебных год (приглашаются школьники, перешедшие в 5 — 7 класс).
Раздел 1. Основы программирования
- Простейшие программы на C++, основные операции и ветвление
- Циклы
- Обработка числовой последовательности
- Одномерные числовые массивы
- Простейшие алгоритмы арифметики и теории чисел. Понятие сложности алгоритма, О-нотация
- Двумерные числовые массивы
- Строки
- Структуры, функции и рекурсия
- Одномерные числовые массивы: метод двух указателей
- Сортировка
- Основы комбинаторики. Перебор вариантов
- Формула включений-исключений
- Геометрия на прямой
- Введение в Python
- Длинная арифметика
Раздел 2 программы предназначен для школьников, освоивших на достаточном уровне материал Раздела 1 программы или владеющих программированием и решением задач по программированию на соответствующем уровне (в целом соответствующем уровню освоения материала Раздела 1). В рамках изучения раздела проводятся занятия по олимпиадному программированию: решение индивидуальных и командных олимпиад по соответствующим темам и соответствующего уровня сложности. Основной возраст освоения материала: учащиеся 7 — 10 классов общеобразовательной школы. Срок освоения материала: 1 — 3 лет в зависимости от возраста и индивидуальных особенностей учащихся.
Раздел 2. Классические алгоритмы и структуры данных. Олимпиадное программирование
- Линейные структуры данных
- Стек
- Очередь
- Дек
- Применение линейных структур для решения некоторых задач обработки массивов
- Введение в задачи на графах: методы обхода графа
- Представление графа
- Обход в глубину
- Обход в ширину
- Обход в ширину 0-1
- Бинарный поиск
- Конечные автоматы в обработке текстовых данных
- Индуктивные функции и динамическое программирование. Задача о рюкзаке.
- Игры и стратегии
- Более сложные алгоритмы арифметики и теории чисел
- Подсчёт количеств
- Двусвязные списки
- Корневая декомпозиция
- Представление множеств: хэширование
- Представление множеств: деревья
- Бинарное несбалансированное дерево
- АВЛ-дерево
- Красно-чёрные деревья
- B-деревья
- Префиксные суммы, дерево отрезков
- Префиксные суммы на одномерном числовом массиве
- Двумерные префиксные суммы
- Дерево отрезков:
- Построение
- Использование
- Обновление элементов
- Массовое обновление элементов
- Примеры применений
- Куча
- Система не пересекающихся множеств
Раздел 3. Более сложные алгоритмы и структуры данных
Раздел 3 является дополнительным разделом программы повышенной сложности и ориентирован на учащихся, на должном уровне владеющих материалом первых двух разделов. Также в качестве требований к учащимся для начала освоения данного раздела предъявляется требование наличия достаточного богатого олимпиадного опыта и наличия олимпиадных достижений (результаты на региональном этапе ВсОШ по информатике, результаты в олимпиадах РСОШ, результаты в олимпиаде ВКОШП). Основной возраст освоения материала: учащиеся 9 — 11 классов общеобразовательной школы. Срок освоения материала: 1 — 3 лет в зависимости от возраста и индивидуальных особенностей учащихся.
- Кратчайшие пути в графах
- Алгоритм Флойда
- Алгоритм Форда-Беллмана
- Алгоритм Дейкстры
- Декартово дерево
- Разреженные таблицы
- Поиск в тексте и в словаре
- Бор
- Сжатый бор
- Суффиксный бор
- Хэширование на строках
- Префикс-функция и Z-функция
- Алгоритм Ахо-Корасик
- Более сложные задачи на графах
- Поиск мостов
- Поиск точек сочленения
- Поиск наименьшего общего предка в дереве
- Диаметр дерева
- Центровая декомпозиция дерева
- Обход в ширину 1-k
- Трехдольность дерева, Задача комивояжера и понятие NP-полноты
- Вычислительная геометрия
- Выпуклые оболочки
- Многоугольники на плоскости
- Оптимизационные задачи
- Задача 2-SAT
- Паросочетания
- Потоки
- Методы оптимизации алгоритмов динамического программирования
- Метод двоичного подъема
- Метод выпуклой огибающей
- Персистентные структуры
- Более сложные теоретико-числовые алгоритмы и основы криптографии