Олимпиадные задачи для детей
Чтобы записаться на направление
напишите нашим администраторам
Кому рекомендовано?

Ученикам, которым нравится решать задачи, и которые хотели бы попробовать себя в олимпиаде по программированию на Python или С++. Для этого нужно полностью пройти базу (условия, циклы, строки, списки, функции, причем на хорошем уровне). Возраст учеников от 12 лет. Особенно подходит старшеклассникам, которым скоро поступать в университеты.

Результат после прохождения?

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

Перспективы?

Лучшее понимание работы алгоритмов, решение задач. Подготовка и успешное участие в олимпиадах по программированию, что дает возможность поступать в университеты без экзаменов.

Основная цель курса состоит в формировании и развитии логического и творческого мышления в решении задач по программированию повышенной сложности.

Для достижения данной цели должны быть выполнены следующие задачи и требования:
- наличие у ребенка достаточной базы знаний в математике и применение этих знаний на практике;
- наличие пройденного хотя бы одного языка программирования по направлениям (Python, C++, C#, Java, JavaScript или других);
- умение свободно применять знания языка программирования на практике (условия, циклы, строки, списки, функции и другие структуры данных).

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

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

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

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

Важной составляющей курса является изучение наиболее распространенных подходов, алгоритмов, которые могут быть полезны для решения задач повышенной сложности, а также их практическое применение.
Содержание курса
На изучение данного направления на базовом уровне потребуется от 86 до 106 часов.
На изучение данного направления на углубленном уровне потребуется, соответственно, от 154 до 174 часов.
Модуль 1. Вступление (10-16 часов)
Среди задач модуля можно отметить следующие: бисер, журавлики, баскетбол, монетки, орешки и многие другие. 

Данный модуль является подготовкой к изучению направления. В этом модуле ребенок научится решать школьные олимпиадные задачи средней сложности при использовании базовых структур данных языка программирования.
Модуль 2. Решение задач повышенной сложности (24-40 часов)
Среди задач модуля можно выделить следующие: театральная площадь, неправильное вычитание, любимые палиндромы, восстановление трех чисел, опять двадцать пять и другие. 

Данный модуль позволит ребенку еще больше развить свое логическое мышление и поможет в решении школьных олимпиадных задач повышенной сложности при использовании стандартных возможностей языка программирования.
Модуль 3. Поиск в массиве. Алгоритмы сортировки массивов (20-32 часов)
Среди алгоритмов данного модуля будут рассмотрены следующие сортировки массивов: пузырьком, выбором, вставками, пирамидальная и быстрая, слиянием). 

Ребенок научится анализировать и оценивать сложность этих алгоритмов, а также найдет их практическое применение при решении задач. 
Модуль 4. Теория чисел (20-32 часов)
Среди рассматриваемых тем данного модуля можно выделить следующие: алгоритм нахождения НОД чисел, алгоритм нахождения обратного числа по модулю, шифрование и дешифрование информации при использовании алгоритмов аффинных преобразований по Цезарю и RSA.

В данном модуле ребенок познакомится с теорией чисел и модулярной арифметикой, научится переводить числа из одной системы счисления в другую и наоборот.
Модуль 5. Структуры данных (16-28 часов)
В данном модуле будут изучены следующие основные структуры данных – массив, список, очередь, стек. Особое внимание будет уделено таким структурам, как деревья, графы и хеш-таблицы. Среди рассматриваемых алгоритмов можно выделить следующие: алгоритм Дейкстры, алгоритм MD5 и другие.

Ребенок познакомится с алгоритмами, которые можно использовать для решения задач и реализует их на практике.
Модуль 6. Разные темы (10-16 часов)
В данном модуле будут рассмотрены рекурсивные и комбинаторные алгоритмы (изучены генераторы подмножеств заданного множества, сочетаний, перестановок и размещений). 

Ребенок найдет практическое применение этих алгоритмов при решении некоторых математических задач.
Модуль 7. Динамическое программирование (6-10 часов)
В данном модуле будут рассмотрены принципы динамического программирования на примере решения задач об укладке ранца, нахождении дистанции Левенштейна и других алгоритмов.

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