Блог пользователя somersault

Автор somersault, 11 лет назад, По-русски

Всем привет.
В этом году я закончил один из сильных в ACM ВУЗов и, отдыхая летом дома, думал о предстоящей работе. Недавно получил предложение развивать олимпиадную информатику в одной из школ родного города. В связи с этим, интересно мнение сообщества (в первую очередь опытных тренеров/организаторов).

Бэкграунд

  1. Я играл за среднюю по уровню команду, пару раз съездили в Петрозаводск, в основном решали по фану. В команде хорошо натренировали ролевую тактику — я был математиком-алгоритмистом с дополнительной ответственностью за несколько алгоритмов. Писал на джаве, до того на си, до того на паскале.
    Два последних года удалённо тренировал две команды, в зимние и летние каникулы проводили мини-сборы. В итоге одна из команд (впервые с 2004 года) прошла на ВКОШП и взяла там диплом, два человека прошли на Всеросс, где один из них взял диплом; два диплома ИОИП.
  2. Масштаб города ~400k человек, примерно пять школ что-то делают в сторону олимпиадок. В регионе — чуть меньше миллиона. Регион довольно компактный, есть ещё пара заинтересованных городков. Есть целая одна закрытая ежегодная командная олимпиада, хоть и с ужасным уровнем, но лучше чем ничего.
  3. Школа, в целом, неплохая, со средним для провинции уровнем математики, скатившимся уровнем информатики, но хорошим — языков. Потенциал у учеников есть, но их не могут толком заинтересовать.
  4. Сейчас есть неплохой девятиклассник, съездивший в ЛКШ-В, постараюсь раскрыть его потенциал, но ясно, что с ним одним каши не сваришь. Остальные в пределах школьной программы.
  5. Локальные ВУЗы очень вялые и даже не участвуют в четвертьфинале :(

Вопросы

  1. Понятно, что надо будет усердно работать, и я к этому готов, но весь опыт у меня связан с олимпиадниками ненулевого уровня, потому до конца не понятно, с чего начинать. Какие будут по этому поводу советы? Какой язык порекомендуете? (я умею паскаль, си, джаву, могу попробовать питон)
  2. С какого возраста посоветуете начать вводить людей в олимпиады?
  3. Как оцените роль математики в этом процессе? По своему опыту скажу, что я начал с математики и, начав олимпиады по программированию в конце десятого класса, успел выйти на три школьных онсайта и даже взял диплом. Не исключено, что это совсем неправильный подход и мне просто повезло.
  4. Какие ещё действия стоит предпринимать для популяризации олимпиад и остальных полезных связанных результатов?

Любые материалы приветствуются.

Спасибо за уделённое время. Надеюсь, все советы будут полезны :)

  • Проголосовать: нравится
  • +22
  • Проголосовать: не нравится

»
11 лет назад, # |
Rev. 2   Проголосовать: нравится +2 Проголосовать: не нравится
  1. Я бы советовал Java/C++. Первая иногда тормозит, во втором есть много замечательных способов выстрелить себе в ногу. Pascal, имхо, довольно хорош для обучения — быстрый и всё проверяет, но не везде есть — надо обязательно проверять перед подготовкой к олимпиаде. А под Linux, например, раньше криво работал отладчик Free Pascal. Еще с недавнего времени в ЛКШ появился тренд использовать Python, как язык, учащий ставить пробелы и не отвлекаться на public static void main(String[] args) throws Exception. Мне кажется медленным (например, никто не гарантирует наличие хотя бы одной задачи, проходящей на питоне, в среднестатистическом Div1-раунде). Не буду делать заявлений "точно не надо" — лучше спросить у тех, кто пробовал. Возможно, педагогический эффект перевешивает остальные неудобства.
  2. Не могу ответить.
  3. Математика, имхо, очень важна. Даже не столько умение считать, сколько олимпиадные задачи (впрочем, отличники тоже отличаются от двоечников). В программировании требуется не только писать, но и читать и понимать, почему и как работает программа. Требуется наличие логики и умение строго рассуждать и понимание, что строгие рассуждения могут легко расходиться с "интуитивно очевидно, что". Математика этому способствует. К тому же простейшие задачи Div2 зачастую требуют только знания циклов/if и небольшого количества математики.
»
11 лет назад, # |
Rev. 3   Проголосовать: нравится +9 Проголосовать: не нравится

Тренировал когда-то людей с нуля, которые даже не знали язык (тоже в своем маленьком городке). На мой взгляд, главный совет для начинающего тренера — не переборщить (со сложностью материала), в остальном не вижу особой разницы по сравнению с неначинающими, наоборот вам же проще — весь материал точно знаете, даже если сами не супер-стар (я тренировал, когда вряд ли был уровня фиолетового на CF — и нормально, и то местами борщил со сложностью).

По вопросам:

[1]. Язык — C++. Паскаль уже точно неконкурентоспособен, Java и др. языки — слишком ООПшны, у начинающих школьников могут быть проблемы с восприятием этой концепции. По программе — проще всего задавать себе вопрос "чего они не знают, что им нужно в первую очередь" — и рассказывать.

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

Ну и конечно сейчас проще стало — куча ресурсов, где можно тренироваться.

[2]. Чем раньше тем лучше. Мне кажется, с 5-го класса — точно можно. Другое дело, не с каждым пятиклассником у вас получится, но это уже сами увидите =)

[3]. Ну, важно наличие "математического" мышления, имхо. Пытаться учить этому делу "лириков" точно не стоит. В остальном, по моему опыту, наличие какого-либо мега-бэкграунда не требуется. Собсно, решение алгоритмических задач будет в какой-то мере развивать и их математические способности + кто захочет серьезно развиваться в этом направлении — сами поймут на каком-то этапе, что математика определенного уровня нужна.

[4]. Соревнования невысокой сложности в школе, чтобы все желающие могли принять участие и что-то решить. Интереснее даже делать их не формата ACM/олимпиад, а что-то вроде "бои программ по решение крестиков-ноликов", "соревнование блэк-джэк/покер ботов", или вроде того. Так вы точно зацепите людей, которым интересно самостоятельно клепать что-то более-менее интеллектуальное на компьютере.

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