Как стать тренером по спортивному программированию и привить школьникам любовь к коду.

Как стать тренером по спортивному программированию и привить школьникам любовь к коду.

Время чтения: 3 мин

Как стать тренером по спортивному программированию и привить школьникам любовь к коду.

Время чтения: 3 мин

Кто может стать тренером

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

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

Как выстроить работу

Есть разные подходы, но в любом случае, не получится полностью отказаться от лекций. И тут учителю, тренеру, который сам не знает алгоритмы будет сложнее. Стоит разработать для школьников курс лекций, подобрать книги и/или онлайн лекции. Нужно понимать: на школьных соревнованиях стараются подбирать задачи, в которых важно продумывать хорошую идею — школьные задачи часто не требуют профессиональных структур данных и алгоритмов.

Последовательность работы кружка может быть следующая: лекция, решение задач, разбор задач, далее фаза, которую я сам люблю, это дорешивание. Ведь часто бывает, что школьники сдали задачу и получили «зачет», но если посмотреть на решение, то мы увидим громоздкий код, простыню текста. То есть они прошли все тесты, но предложили «некрасивое» решение. Разбор задач как раз призван показать школьникам наиболее изящное решение, а умение придумывать изящные решения в дальнейшем очень пригодится в студенческом спортивном программировании. Отдельно уважаю школьников, когда они находят время потом вечером перерешать задачу более изящно.

Формирование команд

При наборе команды необходимо учесть такой немаловажный факт, как язык программирования. Хотя если все участники сильные, но пишут на разных языках и готовы не читать программы, написанные друг другом, наверно, такая команда тоже может добиться успехов. Но гораздо правильнее, чтобы они варились вместе в одной культуре, писали код на одном языке программирования. Или хотя бы умели код своего друга править, «дебажить», исправлять при необходимости. Главные языки спортивного программирования это С++, Java, Python, C#, Kotlin.

Далее необходимо убедиться, что они по-человечески с друг другом сходятся. Школьники сильные в алгоритмике — это люди далеко не с самым простым характером. Нужно быть уверенным, что они не будут драться за один компьютер (на олимпиаде один компьютер на команду из трех человек), смогут распределить, кто когда пишет код, кто когда уходит из-за компьютера.

Темы для подготовки

Теория алгоритмов и структуры данных — более-менее стандартный курс молодого бойца. Полный список тем, которые встречаются на олимпиадном программировании можно найти на сайте informatics.mccme.ru. На нем размещены и курсы по программированию, и сборники задач по всем темам. В подготовке тематического плана обучения можно также ориентироваться на сайт hecs.info.

Если правильно поискать, то материалов для кружка бесконечно много.

Тренировки в классе

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

Онлайн тренировки

Культура онлайн виртуальных соревнований прекрасно развита. На сайте Codeforces можно подбирать задачки прошлых лет, формировать раунды и давать школьникам их прорешивать. Можно взять прошедшую олимпиаду и запустить виртуальный контест. И вот у тебя на 5 часов соревнование, лишь бы было свободное время. Школьники в процессе решения задач появляются в таблице результатов, как будто они участвовали в тот год и одновременно с остальными участниками. Полная симуляция и погружение. Например, прошел один час контеста, и ты видишь только те «плюсики», которые были заработаны другими командами именно за первый час в процессе соревнования. У школьника нет никакой дополнительной информации, он не может жульничать благодаря тому, что он живет в будущем. Поэтому, когда школьник участвует в таких виртуальных соревнованиях, он видит себя в рейтинге, свой объективный прогресс — это не может не мотивировать.

На Codeforces индивидуальные раунды проходят довольно часто, бывают и командные.

Виртуальные индивидуальные раунды есть и на Topcoder, правда задания там даются только на английском языке.

Где соревноваться

Есть несколько площадок с регулярными онлайн-контестами, раньше самой солидной из них считался Topcoder, но сейчас Codeforces определённо занимает главное место в этой нише. Многие площадки для своих пользователей ввели систему рейтинга, нечто аналогичное рейтингу Эло в шахматах. Есть система цветов, цвет присваивается каждому участнику. Чем выше рейтинг, тем команда или школьник выше по шкале цветов. Конечно, желание быть выше в рейтинге для школьника очень важно.

Как мотивировать?

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

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

Чтобы сообщить об ошибке, выделите текст и нажмите Ctrl+Enter
К комментариям
Подписаться
Комментариев пока нет