Введение

PC² — это система управления соревнованиями по программированию, разработанная в Калифорнийском государственном университете в Сакраменто для поддержки деятельности ACM в области компьютерного программирования, и в частности, Международного студенческого конкурса программирования ACM (ACM ICPC). Она использовалась для проведения Всемирных финалов ACM ICPC в 1990 году и с 1994 по 2009 год. В 2010 году Всемирные финалы ACM ICPC перешли на использование Kattis, автоматизированной системы обучения, разработанной в KTH; однако PC² продолжает использоваться для проведения большого числа региональных соревнований ACM ICPC по всему миру.

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

Конкурс по программированию имеет правила и методы оценки представленных решений. Далее представлен общий обзор конкурса с использованием PC2. Конкурс по программированию – это соревнование, в котором команды представляют судьям решения (компьютерных программ) для заданных задач. Командам предлагается набор задач, которые необходимо решить за ограниченное время (например, от 8 до 13 задач за 5 часов). Судьи выносят вердикт "принято" или "не принято" по представленным решениям. Рейтинг команд формируется на основе решенных задач, времени их отправки и количества попыток, предпринятых для решения каждой задачи. Судьи используют "черное ящик" тестирование, при котором команды не имеют доступа к тестовым данным. PC2 управляет соревнованиями по программированию как на одной площадке, так и на нескольких. Он предоставляет командам возможность входить в систему, тестировать решения, отправлять их на проверку и просматривать вердикты судей. PC2 предоставляет судьям возможность запрашивать решения команд (с сервера PC2), запускать/выполнять их и выносить вердикт. Модуль таблицы результатов PC2 вычисляет и генерирует рейтинги и статистические веб-страницы (HTML/XML). PC2 легко устанавливается на Linux/Linux-подобные системы и MS Windows и не требует прав суперпользователя (root) для установки или использования, что делает его привлекательным выбором для пользователей, не имеющих таких прав.

Использование и пользовательский опыт

PC2 использовался на финале Международного студенческого конкурса программирования ACM с 1994 по 2009 год. Он также применялся в сотнях региональных конкурсов ICPC по всему миру. Система непрерывно используется на региональном конкурсе ACM Pacific Northwest с 1989 года, а также на многих других региональных конкурсах ICPC, включая конкурсы в Африке и Аравии, многочисленные конкурсы в Азии и несколько конкурсов в США. На сегодняшний день это наиболее широко используемая система управления соревнованиями для региональных конкурсов ICPC. PC2 используется на Африканском и Арабском конкурсе студенческого программирования (ACPC) каждый год с момента его основания, более 25 лет назад. ACPC включает в себя ряд региональных конкурсов, в том числе отдельные конкурсы студенческого программирования в Саудовской Аравии, Нигерии, Омане, Южной Африке, Того, Марокко, Кувейте, Алжире, Иордании, Палестине, Катаре, Бенине, Египте, Ливане, Эфиопии, Тунисе, Бахрейне, Судане, Сирии и Анголе. Каждый из этих региональных/национальных конкурсов использует PC2; многие региональные конкурсы формируются из субрегиональных конкурсов, которые также используют PC2. Победители каждого регионального конкурса выходят в чемпионат ACPC, где также используется PC2. ACPC также спонсирует различные дополнительные конкурсы, включая "ACPC Kickoff", "ACPC for Girls", "ACPC for Teens" и "ACPC for Seniors"; все эти конкурсы также используют PC2. Региональный конкурс по программированию ACM (ранее ACM) в районе Большого Нью-Йорка в Северной Америке использует PC2 уже более 20 лет. В Большом Нью-Йорке PC2 использовался различными способами на протяжении многих лет, включая односайтовые, многосайтовые и веб-клиентские решения для команд. Судьи в регионе Большого Нью-Йорка предпочитают PC2 другим системам управления соревнованиями, поскольку она обеспечивает им максимальную гибкость при оценке представленных работ участников. Работы могут оцениваться вручную или с использованием автоматической компьютерной оценки. Зачастую судьи предпочитают оценивать некоторые задачи вручную, и PC2 предоставляет такую возможность. Кроме того, команда разработчиков PC2 оперативно отвечала на вопросы и помогала в решении возникающих проблем. PC2 используется на конкурсе ACM Mid Atlantic Programming Contest уже несколько лет. В предыдущие годы системные администраторы имели ограниченный успех с программой из-за ее распределенной природы. На каждом месте проведения конкурса работал сервер PC2, который должен был инициировать и принимать Java RMI. Использование центрального центра обработки данных осенью 2005 года не выявило никаких проблем. В 2014 году PC2 вышел из строя через 3 часа 45 минут после начала конкурса, не позволяя командам получать подтверждения о своих отправках. Судьи не смогли восстановить отправки, и конкурс завершился без объявления победителя. Потребовалась неделя, чтобы попытаться восстановить эти отправки. Аналогичный сбой произошел в 2016 году. Системные администраторы решили установить веб-плагин для PC2, который затем не выдержал нагрузки. Начало соревнований было задержано на 90 минут. Команды не смогли отправить свои решения, и директор конкурса в спешке искал обходной путь, позволяющий командам сохранять решения с указанием времени для последующего рассмотрения. В 2013 году операторы системы не ввели правильные имена команд, оставив команды без информации о турнирной таблице (таблице результатов). Операторы системы не смогли исправить имена команд во время конкурса. Из-за этих инцидентов организаторы региона рассматривают возможность перехода на альтернативную систему, такую как Kattis, которая является официальной системой, используемой ACM для мирового финала ICPC. С введением версии 9 (версия на основе сокетов) большинство проблем с брандмауэрами, связанных с версией 8, были решены.

Краткая история пересмотра

ВерсияГодОсновные функцииЯзык реализации1.01989Первый релиз MS DOS, связь через дискетыTurbo Pascal2.01990Многосайтовый режим через KermitTurbo Pascal4.2B1994Поддержка LANTurbo Pascal6.11996Windows версияVisual Basic7.01998Windows, FreeBSD или Linux; связь через Java RMIIBM VisualAge для Java8.02004Полная переработка кодаEclipse Java9.02008Администрирование для одного сайта, улучшенная безопасность и контроль конфигурации, связь через сокетыJava9.12009Автоматическая оценка, фильтрация запусков/уточнений, внешний API, импорт данных ICPC, нативный LAFJava9.22012Сервер без графического интерфейса, улучшения безопасности, администрирование серверов, новые опции конфигурации, генерация отчетовJava9.32015Конфигурация соревнований через YAML, генератор событий CLICS, переключение профилей соревнований, веб-интерфейс, поддержка нескольких тестовых случаев и больших файлов данных, судья без графического интерфейса, отправка запусков через командную строку, встроенный веб-сервер с поддержкой JSON-табло CLICS, новые опции конфигурацииJava9.42016Улучшенный импорт конфигурации соревнований; поддержка автоматического запуска соревнований; расширенные REST Web ServicesJava9.52017Поддержка валидаторов ввода и вывода CLICS; дополнительные REST Web Services; расширенная функциональность API; табло без графического интерфейсаJava9.62019Поддержка "прокси" для серверов за файрволом; поддержка групп задач соревнований; улучшения конвейера оценки; расширенная поддержка взаимодействия с ICPCTools; улучшенная поддержка конфигурации соревнований с использованием YAML-файлов; поддержка вывода событий в формате JSONJava9.72021PC2 теперь с открытым исходным кодом на GitHub, с полной документацией на веб-странице PC2 и в Wiki PC2; поддержка пользовательской настройки графического интерфейса; совершенно новый веб-интерфейс для команды, устраняющий необходимость использования существующего веб-сервера; автоматическая обработка операций заморозки табло; поддержка так называемого "теневого режима"; дальнейшие улучшения конвейера оценки и поддержки конфигурации YAML; улучшенная поддержка спецификаций ICPC "CLICS" для API соревнованийJava9.82022Поддержка форматирования названий команд на табло; значительные улучшения поддержки "теневого режима"; улучшения веб-интерфейса для команды; возможность объединения образцов и секретных файлов данных; исправления и улучшения веб-сервисов Event Feeder для дополнительной совместимости с CLICS; улучшения производительности и макетов графического интерфейса; поддержка дополнительных средств редактирования для администратора. Java

Другие применения

PC² – это аббревиатура от Paderborn Center for Parallel Computing, института Падерборнского университета, Германия (http://www.upb.de/pc2).