• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

ACM/ICPC: зачем студентам олимпиады по программированию?

Густокашин Михаил Сергеевич

Центр студенческих олимпиад: Директор

 
Заварин Сергей Сергеевич

Факультет компьютерных наук: аналитик, аспирант факультета журналистики МГУ им. М.В. Ломоносова

 
Панкратьев Антон

доцент МГУ им. М.В. Ломоносова

 
Христенко Олег

технический координатор Открытого кубка им. Е.В. Панкратьева по программированию

 

Наиболее массовым и известным соревнованием по программированию среди учащихся в вузах является Международная студенческая олимпиада по программированию (ICPC). Впервые она состоялось в 1977 г. в рамках конференции АСМ по информатике. С тех пор олимпиада ежегодно проводится под эгидой ассоциации вычислительной техники (АСМ).

ACM/ICPC – командное студенческое соревнование, что накладывает определенные ограничения на состав участников: допускаются студенты вузов или аспиранты первого года обучения не старше 24 лет, каждая команда состоит из трех человек. Студентам нельзя участвовать больше двух раз в финальной стадии и больше пяти раз в региональном отборе.

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

Российские вузы впервые приняли участие в олимпиаде только в 1993 г., когда в ее географии был образован Восточно-Европейский регион. Начиная с 2000 г. российские команды становились чемпионами турнира одиннадцать раз: один раз победила команда Саратовского государственного университета (СГУ), четыре раза – Санкт-Петербургского государственного университета (СПбГУ), шесть раз – Университета ИТМО.

Представители других российских вузов также стабильно занимают высокие места. Например, команда Московского государственного университета им. М.В. Ломоносова (МГУ) впервые приняла участие в финале ACM в 1996 г. С тех пор команды МГУ пять раз становились вице-чемпионами мира и были награждены золотыми медалями, один раз завоевали серебро, а также шесть раз становились бронзовыми призерами.

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

Практически во всех вузах ключевым этапом подготовки являются практические наработки по решению близких к олимпиадным задач. К примеру, в Высшей Школе Экономики (ВШЭ) процесс подготовки к олимпиадам выстроен следующим образом: самые сильные студенты пишут одну или две тренировки в режиме настоящей олимпиады с соблюдением всех правил олимпиады, где предлагаются задачи с соревнований прошлых лет. После тренировки либо проводится подробный разбор задач, либо предоставляются образцы авторских решений для самостоятельного изучения студентами.

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

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

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

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

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

Во-первых, олимпиада вовлекает и мотивирует человека писать много кода, и в результате он пишет его быстро и без ошибок. Это очень полезно в дальнейшей профессиональной деятельности. Когда этот человек придет устраиваться на работу, где будет проходить собеседование, например, на должность разработчика, то ему предложат решить те же самые олимпиадные задачки. Если у него в наличии окажется соответствующий опыт, он легко получит желаемую должность.

Во-вторых, в целом, достижения на этих соревнованиях являются показателем сильных интеллектуальных способностей студента. За время своего участия в соревнованиях ACM студенты приобретают навыки нахождения оптимальных решений достаточно сложных задач, что помогает им в дальнейшем успешно обрабатывать большие объемы данных, с которыми им приходится сталкиваться при работе над реальными проектами.

Конечно, есть немало умных людей, которые привыкли долго и тщательно обдумывать решение задачи. Они могут решить какую-то сложную научную задачу, но на олимпиаде на это отведено мало времени, а это стресс – зачастую люди без соответствующего опыта не могут работать в таких условиях.

В-третьих, безусловно, престиж. Участники олимпиад тратят колоссальный объем сил и времени, но медаль международных соревнований – это отличный результат, который повышает привлекательность выпускника вуза в глазах потенциальных работодателей. К примеру, спонсором финалов ACM/ICPC регулярно является компания IBM, которая предлагает денежный приз победителям турнира, а также стажировку или работу членам команд, завоевавших золото.

Все вышеперечисленное выгодно отличает студентов-олимпиадников, повышая их конкурентоспособность на рынке труда.

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

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

Более того, во многих университетах существует практика, когда участники соревнований впоследствии начинают там преподавать или становятся тренерами студенческих команд – это еще один вариант развития, помимо работы в ведущих IT-компаниях. Возможность профессионально заниматься любимым делом и после окончания университета также является серьезным подспорьем для участия в олимпиадном движении.