Studying in IT
July 2011 21

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

From Sandbox
В Петрозаводском государственном университете уже более 10 лет идет подготовка и участие студентов в ACM и других олимпиадах. Участие идет небезуспешное, наши команды показывают хорошие результаты. Регулярно в Петрозаводске проводятся сборы сильнейших команд, участников финала ACM, в том числе и с участием зарубежных команд. Также, несколько раз в год проводятся локальные сборы для наших студенческих команд. Чтобы осуществлялась преемственность поколений, надо работать со школьниками. Работа ведется уже давно, практически столько же, сколько со студентами. С 2002 года почти каждый год организуются сборы для школьников. Ниже подробно описано, как сейчас в Петрозаводске ведется подготовка школьников к олимпиадам по программированию и как организованы летние сборы. Кому интересно — добро пожаловать под хабракат.

Работа в течение учебного года.

2 года назад было решено начать массовую подготовку школьников Карелии. Сейчас складывается следующая программа подготовки детей:

1 год обучения:
В октябре набирается группа около 100 человек. Приглашаются ученики 6-7 классов, хотя другие классы тоже допускаются. Мне все равно, в аудитории сидит 100 или 120 человек. После начала занятий начинается естественный отсев за счет того, что некоторым становится неинтересно, другие понимают, что не могут вытянуть предлагаемый темп. Детям читаются лекции по 2 пары в неделю. Обучение начинается с основ, объяснения того, что такое алгоритм, понятия переменной и других элементарных вещей. При этом обучение ведется в очень высоком темпе. Изначально объясняются основы программирования на примере блок-схем. Рассматриваются элементарные задачи, такие как: задача о фальшивой монете, выбор максимального из 2,3,4, последовательности чисел. Также на блок-схемах изучаются линейные массивы. На этот материал уходит около 2,5 месяцев. После блок-схем переходим к изучению языка С++. После 3-4 занятий по С++ у детей начинаются практические занятия в дисплейных классах. К этому моменту остается немногим менее половины учеников. Для практических занятий дети делятся на 2 группы примерно по 20-25 человек. Поначалу приходится работать по 2-3 человека за компьютером, но ускоряется отсев детей, которые понимают, что им слишком тяжело дается написание программ. Детям предлагается первоначальный набор из 15 простых задач. Те, кто решает предложенный набор, получают доступ в автоматическую тестирующую систему и следующий набор из 100 задач. На написание первых 15 задач обычно уходит около 1-2 месяцев (март-апрель). Тем временем на лекциях дальше читается С++. ООП не рассматривается. После окончания изучения языка переходим к изучению базовых алгоритмов: поиск минимума/максимума в массиве; линейный, бинарный поиск элемента; сортировки пузырьком, подсчетом, слиянием, быстрая сортировка; генерация перестановок; список, очередь; К концу года остается 10-15 детей, освоивших программу, и 5-7 с трудом справляющихся с ней. Те, кто освоил программу, приглашаются на летние сборы и все желающие приглашаются на следующий учебный год.

2 год обучения:
Состав группы остается почти неизменным после первого года. Те, кто справился с первым годом, переходят на второй. В течение года читаются лекции по основным алгоритмам, и на практических занятиях в дисплейных классах дети решают задачи соответствующей тематики. Примерный набор тем, которые рассматриваются: структуры данных; поиск и сортировка; пирамида и быстрая сортировка; динамическое программирование; графы; геометрия; комбинаторика; длинная арифметика; битовые операции.

3 год обучения
Группы 3-го года обучения пока не существует, есть планы. Планы заключаются в том, что последовательную лекционную программу смысла строить нет, надо, чтобы закрепились имеющиеся навыки. Для этого предполагается действовать в следующих направлениях:
1. каждое воскресенье проводить тренировочный контест. Некоторые контесты сделать тематическими, некоторые из разного набора задач. После контеста – разбор задач, а на неделе после этого – лекция на соответствующую тематику, если задачи были тематическими. Таким образом, получается, что ученик сначала обдумывает задачу и ищет решение на основании имеющегося у него опыта, потом сразу после контеста получает правильное решение задачи, а спустя несколько дней – лекцию, к материалу которой он уже подготовлен.
2. С каждого школьника требовать прорешивание задач на онлайновых серверах.
3. Школьникам предлагается объединиться в команды, каждой команде назначается персональный тренер, который направляет команду в нужном направлении.

После 3-го года школьник по этой программе будет заниматься до поступления в университет.

Летние сборы.

Карельская летняя компьютерная школа — мероприятие, которое организует Клуб творчества программистов Петрозаводского государственного университета для школьников, которые в Клубе занимаются подготовкой к олимпиадному программированию. Проходит она в поселке Эссойла в 70 км. от Петрозаводска. В этом году школа проходила с 28 июня до 8 июля, и это было уже в 8 раз.

Программа сборов примерно одинакова из года в год. 25 детей провели 10 дней в п. Эссойла в 70 км от г. Петрозаводска. Распорядок каждого дня был примерно таким:
7:30 Подъем, умывание
7:50 зарядка
8:30 завтрак
9:15-13:15 решение задач
13:30 обед
14-18 лекции/разбор задач
18:00 ужин
19:00 — 20:00 дорешивание
после ужина свободное время или организованные развлечения.
22:30 мягкий отбой: дети должны находиться в комнатах или умываться.
23:00 жесткий отбой: определение кандидатур на внеочередное дежурство на следующий день.

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

Как мы живем в плане быта? Живем в благоустроенном здании интерната. Во время учебного года тут живут дети из окрестных поселков, откуда тяжело ежедневно ездить на автобусе. Летом на эти 10 дней здание отдают нам. Немного тесновато, приходится задействовать учебные классы, используя их в качестве жилых комнат. Мальчики живут в комнатах по 7-9 человек. Проблемы это вызывает только для преподавателей, когда надо после отбоя заставить всю эту ораву угомониться и перестать болтать. Едим в школьной столовой, занимаемся в классах школы. Расстояние между зданиями школы и интерната около 300 метров.

Какой возраст детей? 4-11 классы. Разброс очень сильный. Проблем не создает, дети имеют сходные увлечения, примерно одинаковый уровень подготовки в этом направлении, что позволяет им общаться на равных, невзирая на разницу в возрасте.

Как мы занимаемся? Занятия проводятся в форме лекций, в форме тренировочных олимпиад. Тематика занятий та же самая, что в течение учебного года: задачи на спортивное программирование, лекции по математике и алгоритмам. Чтобы разнообразить учебу, я младшим детям рассказал немного про ООП. Хотел рассказать про MS .NET, C# чтобы они могли побаловаться с программами с графическим интерфейсом, но не успел. О том, что не успел — не жалею, дети чуть-чуть побольше отдыхали.

Что мы делаем кроме решения задач и сидения на лекциях? Одна из задач этой летней школы — делать из детей единый коллектив, который дальше будет формировать Клуб. Это достижимо только через совместные мероприятия. В первые же минуты после приезда в этом году я услышал звуки гитары. Кстати, гитар в этом году у нас 4 штуки, включая одну мою. Во второй вечер играли в мафию 20 игроков. Позже я достал привезенный комплект для игры Го. В Го дети обычно с удовольствием играют между собой или пытаются переиграть меня. В субботу организовали полосу препятствий, для преодоления которых требуется коллективная работа. После полосы препятствий пикник, костер, песни под гитару. Устроили детям поездку в зоокомплекс, расположенный неподалеку. Викторина на то, кто больше назовет языков программирования, операционных систем.

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

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

Копирайты: часть идей организации и некоторые наборы задач были взяты из ЛКШ. Многие студенты, которые преподают в летней Карельской школе, бывали в ЛКШ как учениками, так и в роли преподавателей.

Кто за все это платит? Финансируется проведение КЛКШ за счет Министерства образования Карелии. Кроме того перечисляется небольшая родительская плата, около 4 тыс. рублей. Работа преподавателей в течение учебного года оплачивается за счет учреждений дополнительного образования детей, а также за счет ПетрГУ. Те суммы, которые платятся за работу, абсолютно не покрывают затрачиваемых преподавателями усилий, поэтому размер преподавательского состава в Клубе невелик. Хочется сказать большое спасибо тем людям, которые работают в основном на своем энтузиазме.

Какие есть у нас проблемы?
1. Школьный подход у детей к обучению – «растолкуйте нам» вместо того, чтобы самим стараться понять.
2. Большой отсев. В основном отсев происходит на первом году, но и потом в течение нескольких лет до университета многие теряют интерес.
В качестве решения для уменьшения отсева на первом году я планирую выкладывать на сайте материалы лекций и проверочные вопросы, чтобы родители, школьные учителя информатики могли бы у ребенка невзначай поинтересоваться как дела и как он усваивает материал. Умные дети отваливаются, не поняв какую-нибудь мелочь, а я не могу это отследить. При аудитории около 100 человек у меня не хватает опыта, чтобы контролировать всех индивидуально, если это в принципе возможно. Уже договорились с группой учителей о специальном семинаре для них. Может, это поможет.

+69
2.7k 27
Comments 32
Top of the day