 
        
        - •Введение
- •Порядок разработки олимпиадных задач
- •Общие требования к олимпиадным задачам
- •Формирование комплектов олимпиадных задач
- •Типы олимпиадных задач
- •Типы задач для 9 – 11 классов
- •Типы задач для 7 – 8 классов
- •Типы задач для 5 – 6 классов
- •Содержание олимпиадных задач
- •Математические основы информатики
- •Разработка и анализ алгоритмов
- •Основы программирования
- •Средства икт
- •Операционные системы
- •Основы технологии программирования
- •Методы вычислений и моделирование
- •Компьютерные сетевые технологии
- •Примеры олимпиадных задач
- •Рекомендации по проверке и оцениванию решений задач
- •Методика проверки решений задач участников
- •Система оценивания решений участников
- •Технология проверки решений участников
- •Список рекомендуемой литературы
- Коды Грея: подмножества, сочетания, перестановки ** 
- Таблицы инверсий перестановок ** 
- Разбиения на подмножества. Числа Стирлинга ** 
- Скобочные последовательности ** 
- Теория графов - Типы графов 
- Маршруты и связность 
- Деревья 
- Операции над графами * 
- Остовные деревья * 
- Раскраска графов * 
- Эйлеровы и гамильтоновы графы * 
- Покрытия и независимость ** 
- Укладка графов. Плоские (планарные) графы ** 
- Двусвязность графа. Мосты, блоки, точки сочленения ** 
- Связь ориентированных ациклических графов и отношений порядка. Транзитивное замыкание ** 
- Двудольные графы ** 
- Потоки и сети ** 
 
- Основы теории синтаксического анализа - Обратная польская запись 
- Синтаксический анализ простых выражений * 
- Регулярные выражения, конечные автоматы ** 
 
- Основы теории вероятностей - Понятие вероятности и математического ожидания * 
- Аксиомы теории вероятностей ** 
- Основы вычисления вероятностей ** 
 
- Основы теории игр - Понятие игры и результата игры 
- Простейшие игры 
- Простейшие стратегии игры * 
- Игры на матрицах ** 
- Решение игровых задач с использованием функции Гранди ** 
 
- Разработка и анализ алгоритмов- Алгоритмы и их свойства - Понятие алгоритма 
- Концепции и свойства алгоритмов 
- Запись алгоритма на неформальном языке 
 
- Структуры данных - Простые базовые структуры 
- Множества 
- Последовательности 
- Списки 
- Неориентированные графы * 
- Ориентированные графы * 
- Деревья * 
- Пирамида и дерево отрезков ** 
- Сбалансированные деревья ** 
- Хэш-таблицы и ассоциативные массивы ** 
- Бор ** 
 
- Основы анализа алгоритмов - Нотация О большое * 
- Стандартные классы сложности * 
- Асимптотический анализ поведения алгоритмов в среднем и крайних случаях * 
- Компромисс между временем и объемом памяти в алгоритмах ** 
- Использование рекуррентных отношений для анализа рекурсивных алгоритмов ** 
- NP-полнота ** 
 
- Алгоритмические стратегии - Алгоритмы полного перебора 
- "Жадные" алгоритмы * 
- Алгоритмы "разделяй и властвуй" * 
- Перебор с возвратом * 
- Эвристики ** 
 
- Рекурсия - Понятие рекурсии 
- Рекурсивные математические функции * 
- Простые рекурсивные процедуры * 
- Реализация рекурсии * 
- Рекурсивный перебор с возвратами ** 
 
- Фундаментальные вычислительные алгоритмы - Простые численные алгоритмы 
- Классические комбинаторные алгоритмы 
- Алгоритмы с подмножествами: генерация, восстановление по номеру и построение номера, генерация следующего и предыдущего (прибавление и вычитание единицы) 
- Алгоритмы последовательного и бинарного поиска 
- Алгоритмы с сочетаниями и перестановками (генерация, восстановление по номеру и построение номера, генерация следующего и предыдущего) * 
- Квадратичные методы сортировки (сортировка методом выбора, сортировка вставками) * 
- Сортировка подсчетом за линейное время * 
- Алгоритмы сортировки за время O(N log N) (быстрая сортировка, пирамидальная сортировка, сортировка слиянием) ** 
- Цифровая сортировка ** 
- Алгоритм вычисления номера слова в лексикографически упорядоченном множестве перестановок его символов ** 
- Арифметика многоразрядных целых чисел ** 
 
- Числовые алгоритмы - Разложение числа на простые множители 
- Решето Эратосфена * 
- Алгоритм Евклида * 
- Расширенный алгоритм Евклида. Способы реализации алгоритма без деления ** 
- Решение линейных сравнений с помощью алгоритма Евклида ** 
- Эффективная реализация решета Эратосфена (O(n)) ** 
- Эффективная проверка числа на простоту ** 
- Быстрые алгоритмы разложения чисел на простые множители. Ро-эвристика ** 
 
- Алгоритмы на строках - Поиск подстроки в строке. Наивный метод * 
- Алгоритмы поиска подстроки в строке за O(N+M) ** 
- Периодические и циклические строки ** 
- Алгоритм поиска нескольких подстрок за линейное время ** 
 
- Алгоритмы на графах - Вычисление длин кратчайших путей в дереве 
- Обход графа в ширину и в глубину 
- Способы реализации поиска в ширину (“наивный” и с очередью) * 
- Проверка графа на связность * 
- Алгоритмы поиска кратчайшего пути во взвешенных графах * 
- Топологическая сортировка графа, нахождение компонент сильной связности и построение диаграммы порядка ** 
- Циклы отрицательной длины – критерий наличия, поиск ** 
- Задача о синхронизации времени и задача о системе неравенств ** 
- Алгоритм поиска эйлерова цикла (в том числе лексикографически минимального) ** 
- Нахождение транзитивного замыкания графа ** 
- Алгоритмы нахождения взвешенных остовных деревьев ** 
- Алгоритмы отыскания компонент двусвязности, точек сочленения, мостов с помощью поиска в глубину ** 
- Алгоритм нахождения максимального паросочетания и минимального вершинного покрытия в двудольном графе ** 
- Поиск максимального потока в сети ** 
 
- Динамическое программирование - Основная идея динамического программирования. Рекурсивная реализация и развертывание в цикл * 
- Задачи с монотонным направлением движения в таблице * 
- Задача о рюкзаке – решение методом динамического программирования * 
- Оптимизация решения задачи динамического программирования на примере задачи о рюкзаке (исключение лишних параметров) ** 
- Восстановление решения в задачах динамического программирования ** 
- Общая схема решения задач динамического программирования ** 
 
- Алгоритмы теории игр - Динамическое программирование и полный перебор как методы решения игровых задач ** 
- Игры на ациклическом графе ** 
- Оценка позиций. Альфа-бета отсечение ** 
 
- Геометрические алгоритмы - Алгоритмы определения совпадения точек, лучей, прямых и отрезков 
- Представление точек, прямых и отрезков на плоскости * 
- Нахождение расстояний между объектами на плоскости ** 
- Алгоритмы определения пересечения отрезков на плоскости ** 
- Алгоритмы вычисления площади многоугольника с заданными координатами вершин. Случай целочисленной решетки (формула Пика) ** 
- Алгоритмы построения выпуклой оболочки (алгоритмы Грэхема и Джарвиса) ** 
- Окружности на плоскости, пересечение их с другими геометрическими объектами ** 
- Эффективный алгоритм нахождения пары ближайших точек на плоскости ** 
 
 
- Основы программирования- Языки программирования - Классификация языков программирования 
- Процедурные языки 
- Основы синтаксиса и семантики языков высокого уровня * 
- Формальные методы описания синтаксиса: форма Бэкуса-Наура ** 
- Объектно-ориентированные языки ** 
 
- Основные конструкции программирования - Переменные, типы, выражения и присваивания 
- Основы ввода/вывода 
- Операторы проверки условия и цикла 
- Функции и передача параметров * 
- Структурная декомпозиция ** 
 
- Переменные и типы данных - Концепция типа данных как множества значений и операций над ними 
- Свойства объявлений (связывание, область видимости, блоки и время жизни) * 
- Обзор проверки типов * 
 
- Типы структур данных - Примитивные типы 
- Массивы 
- Записи * 
- Стратегии выбора подходящей структуры данных * 
- Представление данных в памяти ** 
- Статическое, автоматическое и динамическое выделение памяти ** 
- Указатели и ссылки ** 
- Связанные структуры ** 
- Методы реализации стеков, очередей и хэш-таблиц ** 
- Методы реализации графов и деревьев ** 
 
- Механизмы абстракции. - Классы и объекты, замыкания * 
- Процедуры, функции и итераторы как механизмы абстракции * 
- Механизмы параметризации (ссылки и значения) * 
- Модули в языках программирования * 
 
- Особенности программирования фундаментальных алгоритмов. - Стратегии решения задач 
- Роль алгоритмов в процессе решения задач 
- Стратегии реализации алгоритмов * 
- Реализация рекурсии * 
- Стратегии отладки ** 
 
 
- Средства икт- Цифровая логика - Системы счисления 
- Компьютерная арифметика 
- Логические схемы * 
 
- Представление данных в памяти компьютера - Биты, байты и слова * 
- Представление числовых данных ** 
- Системы с фиксированной и плавающей точкой ** 
- Представление со знаковым битом и в дополнительном коде ** 
- Представление нечисловых данных (коды символов, графические данные) ** 
- Представление массивов и записей ** 
 
- Организация работы компьютера - Принципы фон Неймана 
- Управляющее устройство: выборка инструкций, декодирование и выполнение * 
- Набор инструкций и виды инструкций (манипуляция данными, управление, ввод-вывод) * 
- Форматы инструкций ** 
- Режимы адресации ** 
- Механизм вызовов и возвратов из процедур ** 
- Ввод-вывод и прерывания ** 
 
- Устройство памяти компьютера - Организация основной памяти и операции с ней 
- Иерархия памяти * 
- Кодирование данных, сжатие данных и целостность ** 
- Кэш-память ** 
 
- Взаимодействие и коммуникации - Интерфейс пользователя. Основы ввода-вывода информации. Основы скоростного клавиатурного ввода. 
- Введение в сетевые технологии 
- Внешняя память, физическая организация и устройства * 
- Прямой доступ к памяти ** 
 
 
- Операционные системы- Основы операционных систем - Роль и задачи операционных систем 
- Функционирование типичной операционной системы 
- Директории: содержимое и структура 
- Именование, поиск, доступ, резервное копирование * 
 
- Основные функции операционных систем - Абстракции, процессы и ресурсы * 
- Организация устройств * 
- Защита, доступ и аутентификация * 
 
- Управление памятью - Обзор физической памяти и аппаратного обеспечения, предназначенного для управления памятью * 
- Страничная и сегментная организации памяти ** 
- Кэширование ** 
 
 
- Основы технологии программирования- Программные средства и окружения - Среды программирования 
- Инструментальные средства тестирования * 
 
- Проверка соответствия программного обеспечения - Основы тестирования программ 
- Создание тестового плана и генерация тестов * 
- Тестирование методом "черного ящика" и "белого ящика" * 
- Тестирование элементов, интеграционное, системное тестирование и проверка соответствия ** 
 
 
- Методы вычислений и моделирование- Основы вычислительной математики - Основные методы вычислительной математики 
 
 
- вычисление периметра и площади плоских фигур 
- вычисление объема плоских фигур * 
- вычисление значения и корней функции * 
- Арифметика с плавающей точкой * 
- Вычисление функций с шагом. Метод сеток ** 
- Ошибка, устойчивость, сходимость** 
- Введение в моделирование - Понятия модели и моделирования 
- Основные типы моделей 
- Компоненты компьютерной модели и способы их описания: входные и выходные переменные, переменные состояния, функции перехода и выхода, функция продвижения времени * 
- Основные этапы и особенности построения компьютерных моделей * 
- Основные этапы использования компьютерных моделей при решении практических задач * 
 
- Компьютерные сетевые технологии- Сети и телекоммуникации. - Сетевые устройства 
- Среды передачи данных 
- Использование паролей и механизмов контроля доступа 
- Использование сетевых ресурсов 
- Сетевые архитектуры * 
- Вопросы качества обслуживания: производительность, восстановление после сбоев ** 
 
- Беспроводные сети. - Специфические проблемы беспроводных и мобильных компьютеров 
- Установка программ на мобильные и беспроводные компьютеры * 
- Беспроводные локальные сети и линии связи * 
 
 
Олимпиадные задачи для школьного и муниципального этапов Олимпиады должны отличаться тематическим разнообразием и давать возможность использовать в процессе их решения знания и умения, характерные для основных этапов решения задач с помощью компьютеров. В частности, такими этапами являются:
- формализация задачи; 
- выбор формального метода и разработка алгоритма решения задачи, включая оценку правильности и сложности алгоритма; 
- программирование алгоритма и отладка программы; 
- тестирование полученной программы. 
Очевидно, что чем выше уровень Олимпиады, тем сложнее предлагаемые задачи и больший уровень знаний и умений требуется от участников. Но совершенно не правильно считать, что эта сложность возрастает только за счет программирования. Программирование здесь, как и в информатике в целом, играет важную, но не определяющую роль, и названный выше перечень знаний и умений участников в гораздо большей степени охватывает другие разделы информатики как науки.
