Русский English
V международная конференция
«РАЗВИТИЕ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ В РОССИИ, СТРАНАХ БЫВШЕГО СССР И СЭВ»
Россия, Москва, НИУ ВШЭ, 6–8 октября 2020 года
Предоставление докладов на английском языке
Двадцатилетний опыт проведения олимпиад по программированию

Двадцатилетний опыт проведения олимпиад по программированию

Аннотация

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

Ключевые слова: обучение программированию, олимпиады по программированию, тестирование знаний, система тестирования NSUts.

I. Введение

В мире проводится много олимпиад по программированию. Среди них наиболее значимые –международный студенческий чемпионат ACM-ICPC (Association for Computing Machinery – International Collegiate Programming Contest http://icpc.baylor.edu), Google Code Jam, Hash Code, TopCoder Open и VK Cup. Немаловажную роль играют и денежные призы. Например, первая тройка победителей Google Code Jam получают вознаграждение в размере от $1000 до $15 000, а команда победитель ACM-ICPC – $10000.

Обычно специалисты в области информационных технологий (ИТ) довольно рано начинают свою профессиональную деятельность. Это обеспечивается ранней подготовкой в школе и на первых курсах в вузах и колледжах. Изучение фундаментальных дисциплин в области информационных и сетевых технологий играет важную роль в становлении разработчиков и исследователей в данной области. Раннему выявлению талантливой молодёжи способствует проведение школьных и студенческих олимпиад по программированию различных уровней. В СО РАН накоплен богатый опыт проведения подобных олимпиад как на базе научно-исследовательских институтов, так и на базе НГУ.

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

С 2000 года НГУ совместно с Институтом систем информатики им. А. П. Ершова при поддержке ИТ-компаний, заинтересованных в специалистах высокого уровня, проводят Открытую Всесибирскую олимпиаду по программированию им. И.В. Поттосина, которая является одним из наиболее важных и эффективных средств выявления одаренных школьников и студентов.Олимпиада является также площадкой, на которой проводится подготовка студенческих команд к международным соревнованиям различного уровня. Олимпиада способствует изучению студентами дополнительных тем по информатике и программированию, слабо представленных в программах учебных курсов. Эти темы зачастую используются в решении наукоемких задач ИТ производства, что привлекает лучших студентов в эту область. Участники и победители олимпиад по программированию становятся тренерами по подготовке команд школьников и студентов.

Ведущие научные школы академических институтов СО РАН обеспечивают высокий научно-методический уровень олимпиады. Жюри олимпиады сотрудничает с представителями других вузов России, которые являются преподавателями и тренерами своих команд.

Для проведения этой олимпиады и школьных олимпиад различного уровня была разработана система автоматизированной проверки заданий. Работа по ее созданию началась в НГУ в 1998 году [1], когда был написан скрипт из 1000 строк на языке Perl, и закончилось системой NSUts, которая эксплуатируется в настоящее время. Опыт использования всех поколений систем, которые были созданы в НГУ, а также изучение систем, имеющихся в России и за рубежом, позволил сформулировать требования к системам автоматизированной проверки решений [2-3].

В НГУ накоплен большой опыт использования автоматизированной системы тестирования NSUts в учебном процессе для проверки знаний студентов младших курсов. В работе [4] представлены различия между требованиями к олимпиадным системам и требованиями к системам поддержки обучения.

II. Командные спортивные соревнования

Первый в мире чемпионат по командному программированию, ACM-ICPC, был проведен в США в 1977 году, а российские команды стали выступать на нем, начиная с 1993 года, команда НГУ с 1999 года. Сейчас же российские команды – лидеры, получают призовые места на большинстве крупнейших контестов по олимпиадному программированию.

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

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

Участники соревнований по спортивному программированию должны мыслить нешаблонно, иначе быстро решить олимпиадную задачу не получится. Они регулярно тренируются, в результате чего развивается навык быстро принимать решения и находить нестандартный подход. А это ценится многими работодателями, в первую очередь, представителями крупнейших технологических компаний мира, таких как Facebook, Google, Microsoft, Huawei, Яндекс.

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

Сегодня по всей России действуют школы и кружки по спортивному программированию, а летом и зимой проводятся образовательные интенсивы и сборы для старшеклассников. Традиционно несколько раз в году организовываются сборы по спортивному программированию Петрозаводским государственным и университетом МФТИ, участники которых решают те же задачи, что и финалисты чемпионата ACM-ICPC. С 2000 года Новосибирский государственный университет проводит Открытую Всесибирскую олимпиаду по программированию им. И.В. Поттосина. Отборочный интернет-тур и вторая номинация очного тура этой олимпиады проводятся по правилам ACM-ICPC. Каждый год в этой олимпиаде участвует более 1000 студентов и школьников.

Студенты НГУ занимаются спортивным программированием с 1997 года. В 1999 они впервые вышли в финал ACM-ICPC. Команда НГУ с тех пор четырнадцать раз выходила в финал, а в 2007 году в Токио завоевала «серебро». С 2000 по 2018 годы сборные команды НГУ вошли по результатам в ТОР-5-50 сильнейших команд в мире наряду с такими мировыми лидерами, как Массачусетский технологический институт, Стэнфордский университет, Калифорнийский университет в Беркли и Токийский университет, Национальный университет Сингапура.

В НГУ регулярно проводятся тренинги отдельно для команд, которые занимаются спортивным программированием не первый год и участвуют в олимпиадах различного уровня, для команд младших курсов и школьников. Тренерами этих тренировок являются «бывшие олимпиадники», сами когда-то участвующие в финалах ACM-ICPC, а сейчас они преподают в НГУ и работают в крупных ИТ-компаниях.

Для такой работы требуется много времени, ведь главное – развить искусство решения задач. Тренер должен вывести студентов на такой уровень, чтобы они могли хорошо выступать на любых олимпиадах по спортивному программированию. Для начала студентов нужно обучить классическим алгоритмам, и одновременно добиваться высокого уровня техники программирования и, наконец, научить придумывать неординарные решения. Хороший «спортивный» программист должен быть в состоянии написать 100-200 строк алгоритмически насыщенного кода за полчаса, причём так, чтобы программа заработала абсолютно верно почти сразу.

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

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

В марте-апреле 2020 года состоялась первая всероссийская программа интенсивной подготовки по спортивному программированию и искусственному интеллекту «Фестиваль RuCode», подготовленная МФТИ, НГУ и другими российскими университетами в партнерстве с Фондом развития Физтех-школ и при поддержке Фонда президентских грантов. Все мероприятия этого фестиваля прошли в режиме онлайн: открытый онлайн-курс, интенсивы по искусственному интеллекту и спортивному программированию, а также чемпионат, в котором приняли участие 793 команды – 2000 человек. В итоге во всех этапах фестиваля приняли более 10 тысяч школьников, студентов и выпускников вузов из 80 регионов России. Более того, к фестивалю присоединились участники из 58 стран.

Преподаватели и организаторы НГУ провели очень большую работу как по подготовке, так и по проведению фестиваля RuCode. Сотрудниками деканата и преподавателями факультета информационных технологий, входящих в состав оргкомитета фестиваля, была проведена предварительная подготовка по расселению иногородних команд, по подготовке классов для чтения лекций и проведения контестов, по организации курсов интенсивов для сибирских команд на базе НГУ, велась переписка с командами, зарегистрированными на курсы, были подготовлены приглашения для иногородних участников.

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

Но для лекторов и тьюторов работа оказалась гораздо труднее по сравнению с тем, если бы все проходимо в очном режиме. Читать лекции, используя планшет, технически сложнее и надо к этому приспособиться. Преподаватели ФИТ НГУ, тренеры команд НГУ Степан Гатилов и Александр Стененко читали онлайн-лекции из дома для участников из городов от Омска до Иркутска. Шесть преподавателей и магистрантов НГУ работали во время проведения контестов и чемпионата фестиваля, после лекций проводилось распределение участников по виртуальным классам для решения контестов.

Ссылки на записи лекций и разборов задач, выложенных на Youtube, указаны на олимпиадном сайте НГУ[1].

III. Открытая всесибирская олимпиада по программированию им. И.В. Поттосина

Идея проводить Открытую Всесибирскую олимпиаду по программированию возникла неожиданно: в 2000 году, когда команда НГУ впервые участвовала в финале ACM-ICPC в Орландо и заняла 15 место из 64. Мы с директором ИСИ СО РАН Игорем Васильевичем Поттосиным пришли на прием к ректору НГУ Николаю Сергеевичу Диканскому с предложением создать свою олимпиаду, чтобы подтянуть уровень сибирских команд. Он сразу одобрил наше предложение и в дальнейшем всегда оказывал поддержку этой олимпиаде.

Игорь Васильевич Поттосин являлся одним из ярких и ведущих профессионалов в области программирования в Новосибирске. С ним связаны легендарные проекты Альфа, Алгибр, Альфа-6, Эпсилон, Бета, Сократ, которые велись в ВЦ СО АН СССР.

Сейчас Открытая Всесибирская олимпиада по программированию им. И.В. Поттосина – это крупнейшее студенческое ИТ-событие в России. Она привлекает к НГУ мировые брэндовые компании, и кроме со-финансирования со стороны этих компаний, несомненно, способствует мотивации студентов к обучению в НГУ. Олимпиада позволяет выявить одаренных молодых людей, вносящих затем существенный вклад в развитие современных компьютерных технологий в России, и является ступенью в подготовке команд к самому престижному студенческому чемпионату мира по программированию АСМ-ICPC, а это повышает уровень команд НГУ и вызывает интерес всех сильнейших вузов к участию в ней. Олимпиада помогает профессиональному росту студентов, усиливает их самостоятельную работу, способствует достижениям, которые они могут включить в свое резюме, что привлекает абитуриентов к НГУ.

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

По положению олимпиады она проводится в два тура: первый, отборочный интернет-тур проходит заочно по традиционным правилам международного студенческого чемпионата АСМ-ICPC. Второй тур – очный, состоит из двух номинаций. Первая номинация очного тура проводится по правилам, напоминающим Marathon Match на TopCoder, участникам предлагается одна игровая или исследовательская задача на пять часов работы. Как правило, для этой номинации разрабатывается оригинальный проект, а также интерфейс и модули, которые позволяют встраивать решения участников в интерфейс, визуализировать и проигрывать их на сайте олимпиады или в отдельном приложении. Вторая номинация проводится по правилам чемпионата мира АСМ-ICPC. В олимпиаде участвуют студенты и школьники из более чем 30 регионов страны и 20 стран.

Приведем некоторые цифры и даты последней проведенной олимпиаде. 29 сентября 2019 года проведен интернет-тур XX Открытой Всесибирской олимпиады по программированию им. И.В. Поттосина. К проведению интернет-тура были разработаны и реализованы 11 оригинальных задач. Задачи отличались между собой по сложности и тематике. Для каждой задачи подготовлены тесты, программы-чекеры и написаны решения на языках программирования C++ и Java. Сделаны замеры скорости решения каждой задачи на каждом из приведенных языков программирования. Также написаны неправильные решения, чтобы отсечь подобные решения участников по времени. Если решение участника не удовлетворяет указанному в условии задачи времени исполнения, то оно автоматизированной системой тестирования NSUts не принимается. Таким образом, неэффективные решения не учитываются.

Задачи интернет тура и второй номинации очного тура были переведены на английский язык. Таким образом в олимпиаде смогли участвовать и зарубежные команды. По задачам интернет-тура параллельно в системе Яндекса был проведен этап Открытого кубка им. Е.В. Панкратьева под названием Евразия. 29 сентября 2019 г. задачи интернет тура решали 370 команд из 96 университетов и 70 школ 24 стран: России, Армении, Бангладеш, Бразилии, Вьетнама, Германии, Грузии, Белоруссии, Индии, Испании, Китая, Киргизии, Латвии, Литвы, Польши, Румынии, Сингапура, США, Узбекистана, Украины, Хорватии, Швейцарии, Южная Корея, Японии. Результаты интернет-тура представлены на сайте олимпиады.

Очный тур прошел с 1 по 4 ноября 2019 года. В нем приняло участие 49 команд из Абакана, Барнаула, Екатеринбург, Иркутска, Казани, Кирова, Красноярска, Москвы, Минска, Новосибирска, Нижнего Новгорода, Омска, Перми, Рубцовска, Санкт-Петербурга, Томска, Улан-Удэ, Якутска. Результаты обеих номинаций и общие результаты тура представлены на сайте олимпиады.

Для проведения I номинации была выполнена специальная настройка автоматизированной системы тестирования NSUts. I номинация была проведена 2 ноября 2019 г. Командам требовалось написать программу управления летательным аппаратом для простой однопользовательской игры. Каждый участник разрабатывает свою программу и набирает очки в игре независимо от остальных участников. Жанр игры: «вертикальный скролл-шутер». В силу необычности первой номинации, участникам рекомендовалось в течение тура задавать вопросы жюри. В условии задачи описано моделирование игры, языки программирования, игровой API, ограничения, система отправки и оценки, предоставлен архив с материалами и описаны шаги для быстрого знакомства с материалами, сборка, запуска, отладка решений, выходные файлы, описано, как можно просмотреть игру из системы тестирования NSUts, предоставлен визуализатор.

II номинация проведена 3 ноября 2019 г. Для нее были разработаны и реализованы 11 оригинальных задач. Для каждой задачи подготовлены тесты, программы-чекеры и написаны решения на языках программирования: C++ и Java.

В таблице 1 приведена статистика олимпиады за последние 10 лет. 

Высокий уровень подготовки этой олимпиады объясняется, в частности, преемственностью знаний. Ведь именно здесь работал академик Андрей Петрович Ершов, один из основателей теоретического и системного программирования в СССР и создатель сибирской школы информатики.

Таблица 1.

 

Год

Количество команд интернет-тура

Количество участников с округлением

Количество команд очного тура

Количество вузов+школ

Количество

стран

1.

2010

259

760

49

96+23

7

2.

2011

301

870

49

95+29

7

3.

2012

253

850

48

78+21

6

4.

2013

228

680

51

82+12

8

5.

2014

341

1000

48

98+74

7

6.

2015

372

Более 1000

50

96+39

12

7.

2016

393

Более 1000

47

96+24

12

8.

2017

379

Более 1000

46

101+27

31

9.

2018

411

Более 1000

42

106+11

22

10.

2019

370

Более 1000

49

96+70

24

VI. Школьные олимпиады

НГУ традиционно проводит школьный, муниципальный, региональный этапы Всероссийской олимпиады школьников по информатике, полуфинал Всероссийской командной олимпиады школьников по программированию и совместно с СУНЦ НГУ Всесибирскую открытую олимпиаду школьников по информатике, которая входит в перечень РСОШ.

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

Школьники окунулись в напряженную и насыщенную неделю: два тура олимпиады, тестирование и разбор задач, культурная программа. Большой зал нового спорткомплекса НГУ было не узнать: в нем разместилось 210 компьютеров, предоставленных департаментом образования администрации Новосибирской области. По отзывам членов научного комитета и жюри олимпиады, которые побывали на многих олимпиадах, в том числе и международных, компьютерный зал был подготовлен на уровне мировых стандартов. На установку и тестирование оборудования ушло около десяти дней. Длина сетевого провода, соединяющего компьютеры, составляла почти четыре километра. В составе жюри и научного комитета – представители ведущих центров олимпиадного движения нашей страны: Москвы, Санкт-Петербурга, Петрозаводска, Саратова, Нижнего Новгорода, Ярославля, Новосибирска. Общее мнение выразил участник шести студенческих командных чемпионатов мира ACM-ICPC, ныне председатель жюри Всероссийской олимпиады школьников по информатике Андрей Станкевич (Санкт-Петербург). Он сказал, что олимпиада в Новосибирске стала эталоном Всероссийских олимпиад по программированию на ближайшие десять лет.

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

Эта олимпиада проводится для учащихся 7-11 классов в три этапа с ноября по март. Первый очный отборочный этап последней олимпиады был проведен 20 октября 2019 года, второй, заочный отборочный – с 25 декабря 2019 по 25 января 2020 г., третий, очный заключительный – 24 февраля 2020 года.

В период проведения очного этапа и после него были подведены итоги финала олимпиады, подготовлены списки победителей и призеров, проведены апелляции, выполнена публикация разбора задач на олимпиадном сайте, подготовлен отчет в РСОШ, подведена статистика, проведен анализ задач.

Кроме Новосибирского государственного университета, очный этап был проведен на следующих выездных площадках:

  • Алтайский край – г. Барнаул (МБОУ "Гимназия № 42");

  • Владимирская область – г. Гусь-Хрустальный (СОШ № 2);

  • Краснодарский край – г. Сочи (ОЦ СИРИУС)

  • Красноярский край – г. Дивногорск (МАОУ Гимназия 10), г. Зеленогорск (МБОУ "Лицей №174");

  • Иркутская обл. – г. Иркутск (Лицей № 36 ОАО «РЖД»)

  • Липецкая обл. – г. Елец (МБОУ лицей № 5)

  • Омская область – г. Омск (ОмГУ им. Ф.М. Достоевского);

  • Самарская обл. – г. Самара (Самарский лицей информационных технологий);

  • Сахалинская обл. – г. Южно-Сахалинск (Региональный центр оценки качества образования);

  • Свердловская обл. – г. Екатеринбург (МАОУ гимназия № 9)

  • Тюменская обл. – г. Тюмень (ГАОУ ТО «Физико-математическая школа»);

  • Челябинская обл. – г. Челябинск (МБОУ «ФМЛ №31 г. Челябинска»);

  • Республика Башкортостан – г. Уфа (ГБОУ Республиканский инженерный лицей-интернат);

  • Республика Бурятия – г. Улан-Удэ (Бурятский государственный университет);

  • Республика Мордовия – г. Саранск (ГБНОУ РМ "Республиканский лицей для одарённых детей");

  • Республика Татарстан – г. Казань (Казанский государственный энергетический университет);

  • Республика Саха (Якутия) – г. Якутск (ГБНОУ РС(Я) «Республиканский лицей-интернат»);

  • Ханты-Мансийский автономный округ – г. Ханты-Мансийск (Югорский физико-математический лицей-интернат);

  • Ямало-Ненецкий АО – г. Ноябрьск (МБОУ СОШ № 8);

  • г. Москва (школа № 444, школа № 2107, СУНЦ МГУ, ВШЭ, МФТИ);

  • г. Санкт-Петербург (Университет ИТМО);

  • Казахстан – г. Алматы (РФМШ).

Информационное обеспечение осуществлялось через информирование научной и педагогической общественности на конференциях и семинарах, размещение информационно-рекламных материалов о проведении олимпиады в средствах массовой информации. Кроме того, информацию об олимпиаде школьники и учителя получают по электронной почте с использованием баз данных рассылок ДИО-ГЕН, Новосибирской ассоциации лицеев и гимназий, а также ЦНИТ НСО. Во время проведения муниципального и регионального этапов Всероссийской олимпиады по информатике, представители оргкомитета Всесибирской олимпиады встречаются с педагогами – руководителями участников, рассказывают об олимпиаде и отвечают на вопросы.

Также для подготовки к олимпиаде школьники имеют возможность в тренировочных турах порешать задания различных школьных олимпиад прошлых лет в автоматизированной системе NSUts на олимпиадном сайте НГУ[2]. Там же доступны тренировки с задачами по темам программы углубленного изучения информатики. Выложены разборы задач. Для подготовки доступны учебные пособия [5-8].

На заключительном этапе участникам было предложено для решения 5 задач. Во время тура участники решали задачи и отправляли свои решения в жюри для автоматической проверки в системе NSUts. Все решения участников проверялись на полном наборе тестов, подготовленном заранее и залитым в систему тестирования, результаты проверки сразу же участникам сообщались.

Во время тура можно было отправлять на проверку неограниченное количество решений. По каждой задаче учитывалось лучшее решение каждого участника. Максимальная оценка за каждую задачу – 100 баллов. Система оценивания в каждой задаче была описана в ее условии. Общее количество баллов участника равно сумме его баллов по всем задачам.

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

По положению олимпиады по ее итогам лучшие участники были объявлены призерами и победителями. Суммарно не более 25% лучших по результатам участников заключительного этапа объявляются призерами и победителями олимпиады. В 2020 году в Заключительном этапе приняло участие 588 школьников, которые были отобраны по результатам первых двух этапов, 139 из них стали победителями и призерами Открытой Всесибирской олимпиады школьников по информатике.

V. Использование системы NSUTS

Все описанные выше олимпиады состоялись и получили известность, в том числе, и за счет использования автоматизированной системы тестирования NSUts. В работе [1] представлена архитектура системы NSUts, а в работах [2-3] – требования, предъявляемые к автоматизированным системам тестирования знаний.

Для понимания того, как используется система NSUts[3], коротко напомним об основных ее возможностях. Она является основным инструментом при проведении олимпиад по правилам ACM-ICPC и по правилам Всероссийской олимпиады школьников. Тестирование заданий в системе проводится для Win32 на языках C, C++, Java, Pascal, Pyton, C#. При сдаче задачи участники указывают язык программирования, это позволяет проводить тестирование программ на нескольких диалектах одного языка, например, Visual C и Borland C.

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

В реляционной СУБД хранятся очередь тестирования (рис. 3), рейтинг и задачи. Следует отметить, что в системе сохраняются все отправленные участниками решения вместе со временем их отправки. Это помогает выполнить апелляции, требующие перетестирования, и помогает исключить попытки мошенничества.

 Рис. 1. Интерфейс системы NSUts – выбор олимпиады. Материалы конференции SoRuCom-2020

Рис. 1. Интерфейс системы NSUts – выбор олимпиады

Как уже упоминалось, первая номинация Открытой Всесибирской[4] олимпиады по программированию им. И.В. Поттосина проводится по правилам соответствующим правилам таких соревнований, как Marathon Match на TopCoder. Для проведения таких соревнований в системе NSUts требуется выполнить специальную настройку. Например, разработчики Академии искусственного при поддержке Сбербанка5 подготовили для заочного этапа Всесибирской олимпиады школьников по информатике задачу по искусственному интеллекту, для решения которой потребовалось создать дополнительный тур и реализовать специализированный модуль для проверки этой задачи.

Систему NSUts можно использовать для промежуточного контроля знаний и умений по информатике и программированию [9]. Она может использоваться в высших и среднетехнических учебных заведениях, в школах на уроках информатики и при работе различных кружков для школьников. В НГУ система NSUts используется в дисциплине «Программирование» на младших курсах факультета информационных технологий и механико-математического факультета.

Рис. 2. Интерфейс системы NSUts – настройка набора задач для тура. Материалы конференции SoRuCom-2020

Рис. 2. Интерфейс системы NSUts – настройка набора задач для тура

Следующие свойства системы сделали пригодной ее для учебного процесса:

  • В системе NSUts реализована двухуровневая система организации данных. Олимпиады хранятся на верхнем уровне (рис. 1), второй уровень представляют туры олимпиады. В каждом туре имеется набор задач и тестов. Для олимпиад, проводимых по правилам ACM-ICPC, для каждой задачи указано время прохождения тестов. Применительно к учебному процессу олимпиаду можно рассматривать как практический учебный курс, а недельные или месячные задания на определенные темы, можно отнести к турам. На рис. 2 показана страница, на которой видна настройка задач одного из учебных туров. В таблице на рисунке для каждой задачи указано ее имя, имена входных и выходных файлов, ограничения по времени и памяти, которые отводятся для выполнения решения этой задачи, отдельно прописываются ограничения для языка Java. Также предоставляется возможность загрузки условий задач и тестов и их редактирования.

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

  • Самостоятельная работа студентов обеспечивается круглосуточной работой системы NSUts.

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

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

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

  • Исключить необъективность и предвзятость преподавателя можно заранее озвученным набором правил оценивания сданных заданий и выставления зачета.

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

Рис. 3. Интерфейс системы NSUts – очередь тестирования. Материалы конференции SoRuCom-2020

Рис. 3. Интерфейс системы NSUts – очередь тестирования.

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

VI. Выводы и заключение

На протяжении почти 50 лет сложилась практика подготовки кадров с учетом реальных потребностей заказчиков – институтов СО РАН и высокотехнологичных компаний. Участвуя в тренировках и олимпиадах, студенты знакомятся с разделами научных дисциплин, недостаточно представленными в вузовских курсах. Имея хорошую подготовку в области ИТ, студенты без труда находят работу в крупных ИТ-компаниях и в институтах СО РАН.

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

Открытая Всесибирская олимпиада по программированию им. И.В. Поттосина является одним из старейших командных соревнований по программированию в России. НГУ первым начал проводить специальный отборочный тур, первую номинацию, и уже в 2000 году участники, приглашённые на очный тур в Академгородок, предварительно прошли два круга отбора. При этом наличие двух квот, общей и региональной, обеспечивает и высокий уровень состава финалистов, и широкое представительство команд Сибири.

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

Все обозначенные выше мероприятия НГУ проводит с использованием системы NSUts. Разработка и использование нескольких поколений систем автоматической оценки заданий по программированию [4], позволила создать гибкую систему тестирования NSUts, которая применима для широкого спектра мероприятий: проведения олимпиад с большим количеством участников, практикумов по программированию, олимпиадных тренировок и др. Например, при проведении заключительного этапа Всесибирской открытой олимпиады школьников по информатике 24 февраля 2020 года для проверки решений участников было задействовано более 20 компьютеров, обработано около 14 000 посылок в реальном времени.

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

Примечания

1. Ссылки на записи лекций и разборов задач фестиваля RuCode: https://olympic.nsu.ru/files/youtube_links.pdf

2. Олимпиадный сайт НГУ по программированию: https://olympic.nsu.ru/

3. Система NSUts. URL: https://olympic.nsu.ru/nsuts-new/login.cgi

4. Сайт Открытой Всесибирской олимпиады по программированию имени И.В. Поттосина. URL: https://olympic.nsu.ru/widesiberia/2018/news

5. Академия ИИ для школьников при поддержке Сбербанка.URL: https://contest.ai-academy.ru/competition

Список литературы

  1. Иртегов Д.В., Нестеренко Т.В., Чурина Т.Г. Разработка систем автоматизированной оценки заданий по программированию // Журнал «Системная информатика» ISSN 2307-6410, No. 11 (2017) -C. 91-116

  2. Боженкова Е.Н., Иртегов Д.В., Киров А.В., Нестеренко Т.В., Чурина Т.Г. Автоматизированная система тестирования NSUts: требования и разработка прототипа // Вестник НГУ Серия: Информационные технологии. – 2010. – Том 08, Выпуск № 4. – С. 46-53. – ISSN 1818-7900

  3. Чурина Т.Г., Иртегов Д.В. Требования к автоматической системе тестирования знаний// Труды VI Международной конференция "Интеллектуальные технологии в образовании, экономике и управлении", декабрь 2009, Воронеж, с. 309-317.

  4. Иртегов Д.В., Нестеренко Т.В., Чурина Т.Г. Системы автоматизированной оценки заданий по программированию: разработка, использование и перспективы// Вестник НГУ. Серия: Информационные технологии. 2019. Т.17, № 2. С.6173. DOI 10.25205/1818-7900-2019-17-2-61-73

  5. Нестеренко Т.В., Чурина Т.Г., Основы программирования: учеб. пособие, Новосиб. гос.ун-т. – Новосибирск: ВКИ НГУ, ISBN978-5-4437-0473-9; 2015 г. – 150 с.

  6. Цикоза В.А. , Чурина Т.Г., Методы программирования: перестановки, поиск, сортировки. Часть 2: учеб. пособие / Новосиб. гос. ун-т, 2006, 59 с.

  7. Цикоза В.А. , Чурина Т.Г., Методы программирования: представление и кодирование информации. Часть 1 : учеб. пособие / Новосиб. гос. ун-т, 2003, 48 с.

  8. Чурина Т.Г., Нестеренко Т.В. Методы программирования: алгоритмы и структуры данных. Часть 3. Динамические структуры данных, алгоритмы на графах: учеб. пособие / Новосиб. гос. ун-т, 2014. – 216 с / ISBN 978-5-4437-0278-0

  9. Иртегов Д.В., Нестеренко Т.В., Чурина Т.Г. Системы автоматизированной оценки заданий по программированию: использование в учебном процессе// Труды семинара 12-й Междунар. Ершовской конф. по информатике (ПСИ'19) 2-3 июля 2019 г./ Ин-т систем информатики им. А.П. Ершова, Новосиб. гос. ун-т. – Новосибирск: ИПЦ НГУ, 2019. – С. 35-39.

Об авторе:

Татьяна Геннадьевна Чурина, tanch@iis.nsk.su,
Татьяна Викторовна Нестеренко, nest@iis.nsk.su,
Институт систем информатики СО РАН им. А.П. Ершова, Новосибирский государственный университет,
Новосибирск, Россия


Материалы международной конференции Sorucom 2020
автора 17.08.2022