Tinkoff Generation

С чего начать?

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

Мы попросили учеников и преподавателей Тинькофф Поколения, поделиться своими историями старта, рассказать о ресурсах для подготовки и тренировки. А еще попросили дать несколько советов для начинающих

Статистика

Итак, вы каким-то из выше представленных способов или тем, который на картинке не представлен, решили попробовать себя в спортивном программировании. Что же дальше?

Какие курсы для начинающих

Чтобы начать заниматься алгоритмами, требуется иметь базовые навыки в программировании, быть знакомым хотя бы с одним языком программирования. Для знакомства с программированием могут помочь следующие образовательные проекты: Совет
Мы рекомендуем начать погружение в мир программирования с Питонтьютора. Здесь можно в доступной форме с большим количеством объяснений и примеров познакомиться с синтаксисом языка Python и базовыми алгоритмами. Это отличный сайт для старта, чтобы в целом понять, нравится ли сфера программирования.
Ресурс Информатикс является огромной базой различных олимпиадных задач, но кроме этого, на нем есть еще и записанные курсы с теорией и практическими заданиями. Наши ученики сами начинали с них и посоветовали курс по программированию на языке Python от Дениса Кириенко, а также сборник теоретических материалов по изучению разных языков.
У образовательного центра Сириус есть своя платформа с онлайн-курсами, которые регулярно запускаются, а расписание можно найти на сайте. Авторы курсов — преподаватели ведущих школ и вузов, действующие педагоги очных программ Сириуса. Тут можно найти как совсем вводные программы для начинающих изучать языки программирования, так и курсы уже по алгоритмам. Например, с 15 сентября открывается набор на курс по введению в C++
В курсе на базовом уровне освещаются практические основы программирования, а в ходе обучения предстоит решить множество небольших задач, охватывающих основные базовые конструкции языка C++. Задачи курса предоставил Денис Кириенко — член оргкомитета и жюри олимпиад по информатике и председатель региональной предметно-методической комиссии ВсОШ по информатике. А читает теорию Михаил Густокашин — директор центра студенческих олимпиад факультета компьютерных наук ВШЭ, методист московского Центра педагогического мастерства.
Это платные онлайн-курсы по многим темам, включая программирование. На некоторые из них можно пойти с нулевыми знаниями, а на выходе не только познакомиться с синтаксисом языка, но и создать свои первые серьезные проекты. Эти курсы больше направлены на разработку. Например, есть курс по Python или по C++.
Это онлайн-кружок по олимпиадному программированию. Делится на 3 уровня подготовки, на первом уровне (Beginners) для 5-7 классов преподают язык С++, это хорошая возможность начать заниматься программированием. Для тех, кто освоил программу первого года, есть возможность продолжить обучение на втором уровне (Advanced), где рассказывают продвинутые темы по C++.
Онлайн-школа для учеников 1-11 классов, в которой можно найти разнообразные курсы (платные) по школьным предметам и продвинутым темам. Есть курс по введению в программирование на Python, где в игровой форме можно познакомиться с базовыми для языка Python понятиями — переменными, условиями, циклами, структурами данных — и реализовать эти знания на практике.

Выездные школы и интенсивы

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

Сириус — уникальная площадка для школьников и студентов. Круглый год в центре проходят тематические образовательные и творческие программы, форумы и другие мероприятия, направленные на развитие и поддержку талантливых ребят.
Отзывы от наших детей: "Отличные условия проживания, питания, отдыха. Очень хорошие преподаватели. Отборные задачи: как тренировочные, помогающие лучше разобраться в теме, так и сложные олимпиадные. Очень классное сообщество, можно познакомиться с крутыми ребятами"
Совет
ЛКШ — старейшая и самая именитая школа по спортивному программированию для школьников. Для детей это возможность позаниматься с самыми восхитительными преподавателями, тренерами национальной сборной, жюри Всероса и перечневых олимпиад. Кажется, что все наши ученики-олимпиадники и преподаватели хоть раз приезжали в ЛКШ:)
ЛШКН для учащихся 8-10 классов направлена на подготовку к Всероссийской олимпиаде школьников и другим перечневым олимпиадам по информатике. Это проект ФКН ВШЭ, а сама школа проходит в Липецке на базе Центра поддержки одаренных детей «Стратегия». Наши преподаватели также принимают участие в этой школе.
ЛКЛ — лагерь как для тех, кто уже хорошо программирует и выигрывал олимпиады, так и для тех, кто начал программировать совсем недавно и осваивает азы. Лекции читают студенты ведущих российских университетов в области компьютерных наук (ВШЭ, ИТМО, МФТИ, СПбГУ, УрФУ), призёры и победители всероссийских и международных олимпиад.
ШОП Университета Иннополис — образовательные смены по подготовке к олимпиадам всероссийского и международного уровня по информатике, математике и робототехнике. Школа проходит летом (Летняя ШОП) и зимой (Зимняя ШОП).

Методические ресурсы для самостоятельного изучения алгоритмов

Павел Маврин — чемпион мира ACM ICPC 2004, руководитель школьных кружков по олимпиадному программированию, автор и жюри многих олимпиад. На его youtube-канале выложены лекции по алгоритмам и структурам данных, которые Паша читает студентам Университета ИТМО на 1 и 2 курсе. В них подробно и очень понятно разобраны основные и продвинутые темы. Также записи лекций можно найти, например, в канале Лекториума.
Совет
Алгоритмика — open-source ресурс с конспектами по алгоритмам и структурам данных, в которых подробно расписаны подробности реализации и приведены примеры. Статьи в большей степени написаны преподавателями и учениками Тинькофф Поколения.
Викиконспекты — образовательный ресурс, на котором содержатся коспекты по алгоритмам, дискретной математике, машинному обучению и многим другим Computer Science темам. В основе — платформа MediaWiki, поэтому Викиконспекты очень похожи на всем известную Википедию.
Это один из самых популярных ресурсов для знакомства с алгоритмами по работе со строками, алгебре, теории графов, геометрии и другим направлениям. Статьи не самые свежие, но достаточно подробные и с примерами в виде псевдокода.

Ресурсы для тренировок

И вот вы изучили синтаксис языков программирования, познакомились с некоторыми алгоритмами, а что дальше? Как выиграть олимпиаду, добиться успехов? Для этого надо много и упорно тренироваться.

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

Это один из самых известных сайтов, на котором проводятся соревнования по программированию. На нем регулярно проходят раунды — открытые для всех соревнования, на которых можно развить скиллы решения олимпиадных задач. Раунды делятся по уровню сложности, есть и образовательные для совсем новичков.
Информатикс — это ресурс, на котором собрано самое большое количество задач школьных олимпиад. Внутри него тестирующая система Ejudge, которая например используется и в контестах нашего кружка Тинькофф Поколения.
Timus Online Judge — это крупнейший в России архив задач по программированию с автоматической проверяющей системой. Основной источник задач для архива — соревнования Уральского федерального университета, Чемпионаты Урала, Уральские четвертьфиналы ICPC, Петрозаводские сборы по программированию.
Сайт содержит архив задач по олимпиадному программированию со встроенной проверяющей системой. Уровень задач значительно легче, чем на других подобных ресурсах. Поэтому большинство задач возможно решить после одного года обучения программированию. Средняя сложность задач немного ниже уровня районных олимпиад, что позволяет успешно готовиться к ним.
На нем можно найти архив регионального и заключительного этапов Всероссийской олимпиады и потренироваться в решении задач.
Совет