+7 (812) 703-02-02 info@hse.spbstu.ru Rutube

Введение в олимпиадное программирование

C 8 класса | 12 занятий | Очно или онлайн

Длительность курса: 66 ак. часов (12 занятий по 4 ак. часа + 18 часов домашней работы)

О чём курс

Олимпиады по программированию перестали быть спортом для высокоодарённых школьников. Обилие олимпиад по программированию и информатике, дающих те или иные преимущества при поступлении в вузы приводит к тому, что из-за отсутствия баллов за индивидуальные достижения (олимпиады) школьник уступает в конкурентной борьбе другим абитуриентам. Навыки быстрого и надёжного программирования в условиях стресса востребованы и на ЕГЭ.

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

Решение задач на контестере (сайте для проведения олимпиад, где высланные решения проверяются автоматически) в формате соревнования не только полезно, но и интересно, азартно. А если речь идёт о задачах из коллекции АИШ, накопленной за долгие годы проведения олимпиад и тренировок, — ещё и весело. При этом преподаватель курса готов помочь, если что-то не ладится, дать подсказку, показать полезный приём. Блиц-разбор задач проходит на следующем занятии и/или доступен в виде файла.

Язык курса — Python: именно на нём даются примеры и пояснения. При желании учащиеся могут отсылать на контестер и решения на других языках программирования (С#, C++).

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

Об эффективности курса (он существует с 2017 года, изменяясь и обновляясь) говорят успехи его выпускников: высокие результаты на олимпиадах и на ЕГЭ, поступление в Политех, ИТМО, на IT-направления других вузов.

Чему научим

Знания и представления:

  • Спортивное (олимпиадное) программирование как жанр.
  • История состязаний программистов, типы, правила (классические контесты, ВСОШ, профильные олимпиады).
  • Принципы работы контестеров.
  • Интерфейс автопроверяемой задачи.
  • Списки, множества, словари в олимпиадных задачах.
  • Организация перебора значений.
  • Оценка вычислительной сложности алгоритма.
  • Жадные алгоритмы.
  • Приёмы динамического программирования.
  • Приёмы решения задач, сводящихся к графам.
  • Особенности ЕГЭ-программирования.
  • Техника тестирования задачи.

Умения и навыки:

  • Работа с контестерами.
  • Работа с условием задачи, оценка сложности и трудоёмкости.
  • Организация данных при решении задачи.
  • Написание понятного, компактного и надёжного кода.
  • Подготовка тестов и отладка программы.
  • Использование справочной информации при решении задач.
  • Тактика на олимпиадах различных форматов.

Занятие 1

Введение. Олимпиады и контестеры

  • История состязаний программистов.
  • Типы олимпиад, их правила.
  • Контестеры – программы для автоматической проверки решений.
  • Организация ввода и вывода в автопроверяемых задачах.
  • Знакомство с контестером КИТпро.
  • Пробный турнир «Муму-олимпиада».

Занятие 2

Анализ условия задачи

  • Примеры формулировки условия задачи в олимпиадах разных типов.
  • Работа с условием задачи (на примере задач «Муму-олимпиады»).
  • О-большое: первое знакомство.
  • Работа с пакетом задач.
  • Турнир «Бисер-олимпиада» - задачи разных жанров с компактным кодом.

Занятие 3

Математика в программировании

  • Примеры применения математики для решения олимпиад (по мотивам «Бисер-олимпиады»).
  • Составление оглавления «Справочника по математике для программистов».
  • Интернет-ресурсы по математике для тех, кто «знал, но забыл».
  • Турнир «MathWay-олимпиада».

Занятие 4

Структурированные данные в олимпиадных задачах

  • Повторение: классификация данных.
  • Индексированные данные (строки, кортежи, списки): возможности и уязвимости.
  • Обработка данных по ходу ввода.
  • Накопители, счётчики, списки счётчиков.
  • Турнир «ДА-олимпиада».

Занятие 5

Решение задачи как трансформация данных

  • Данные «между входом и выходом» (на примере «ДА-олимпиады-1»).
  • Сортировка, обеспечение уникальности данных.
  • Хэшируемые данные (множество, словарь).
  • Турнир «ДА-C--олимпиада» и дополнительные задачи (уровень ВСОШ-муниципальный, уровень ЕГЭ).

Занятие 6

Практикум: решение задач в неформальной постановке

  • Что делать, если задача не похожа на задачу.
  • Турнир «Мексиканские негодяи» - проверочная работа по первой части курса.

Занятие 7

Тестирование программы

  • Тесты «чёрного ящика» и «белого ящика».
  • Создание тестов (на примере задач турнира «Мексиканские негодяи»).
  • Вырожденные и предельные тесты.
  • Турнир «Олимпиада ПроТеста».

Занятие 8

Перебор вариантов как метод поиска решения

  • Перебор с параметром, с несколькими параметрами. Индуктивный перебор. Перебор через рекурсию. 
  • Использование комбинаторных итераторов.
  • Турнир «Винегрет-олимпиада».

Занятие 9

Эффективность алгоритма по времени и памяти

  • Понятие вычислительной сложности алгоритма. 
  • Вычислительная сложность некоторых классических алгоритмов. 
  • Ограниченность возможностей полного перебора. 
  • Задачи ЕГЭ, требующие эффективных алгоритмов. 
  • Турниры «Дж-олимпиада», «Винни-Пух- олимпиада» (по выбору учащегося).

Занятие 10

Классические алгоритмы олимпиадного программирования

  • Жадные алгоритмы.
  • Основы динамического программирования.
  • Поиск в графах.
  • Обзор справочных материалов по конкретным приёмам и алгоритмам.
  • Турниры «Вовочкина олимпиада», «Графская олимпиада» или сборник «ЕГЭ-задачи» (по выбору учащегося).

Занятие 11

Турнир-тренировка к экзамену

  • Краткие рекомендации по тактике турнира.
  • Турнир «Мексиканские негодяи – 2».

Занятие 12

Итоги курса

  • Экзамен: турнир «Мартовские КИТы – ретро».
  • Подведение итогов курса.
  • Методика самостоятельных тренировок по спортивному программированию.

Стоимость

30 800 ₽

2 566 ₽ за занятие

Социальные скидки для многодетных и других категорий семей.
Скидки по акциям.
Оплата материнским капиталом.
Можно оформить налоговый вычет по расходам на обучение - 13%.

Как поступить

Для тех, кто еще не учится в АИШ:

  • Вступительное тестирование

Для уже обучающихся в АИШ:

  • Семестр 2. Структурное программирование на языке Python – промежуточная аттестация не менее 80 баллов или итоговая оценка не ниже «отлично».
  • Семестр 3. Практикум по программированию на Python и старше - промежуточная аттестация не менее 70 баллов или итоговая оценка не ниже «хорошо».
  • Семестр 3. Практикум программирования на C# и старше - промежуточная аттестация не менее 70 баллов или итоговая оценка не ниже «хорошо».
  • Семестр 2. Процедурное программирование на С/С++ - промежуточная аттестация не менее 70 баллов или итоговая оценка не ниже «хорошо».
  • Линейка «Python для юных программистов» Семестр 4. Первые шаги в олимпиадном программировании на Python- промежуточная аттестация не менее 80 баллов или итоговая оценка не ниже «отлично».
Тест № АИШ-341 Вступительный тест для обучения на семестре "Введение в олимпиадное программирование"

Необходимые знания и умения для успешного прохождения тестирования:

  1. Базовые математические знания, основы математической культуры.
  2. Опыт процедурного программирования на языке Python, С++, C# или Pascal:
    • Типы данных, преобразование типов.
    • Операторы консольного ввода и вывода, присваивания.
    • Операторы для организации циклов и ветвлений.
    • Массивы и стандартные алгоритмы работы с ними (поиск, нахождение максимума, сортировка, сдвиг и т.п.).
    • Создание процедур и функций, способы передачи данных между подпрограммами.
    • Владение приёмами работы со строками (выделение и поиск подстроки).
    • Знание классических численных алгоритмов (НОД, выделение цифр числа).

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

Для сдачи теста предоставляется 1 попытка.

Как записаться на занятия

Академия информатики для школьников в цифрах

21 год

успешной работы
в Политехническом университете Петра Великого

10

направлений обучения

83

учебные программы

2 800

школьников
проходят обучение
ежегодно

151

выпускник АИШ
в 2025 году поступил
в Политехнический университет

4

учебные площадки

36

компьютерных классов