АВТОМАТИЗАЦИЯ ОЛИМПИАД ПО ПРОГРАММИРОВАНИЮ

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

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

Учитывая это, на стадии проектирования было решено выделить следующую функциональность системы:

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

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

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

Преимущества же автоматизированного подхода очевидны:

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

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

Назад | На главную | Вперед



Copyright © 2004-2024. Все права защищены.