Программа для проведения олимпиад по программированию

Обновлено: 05.07.2024

авторской программы элективного курса Н.Д.Угриновича «Исследование информационных моделей» (« Информатика. Программы для общеобразовательных учреждений. 2-11 классы: методическое пособие », Составитель М. Н. Бородин – М.: БИНОМ. Лаборатория знаний, 2010)

Описание состава учебно-методического комплекта:

«Исследование информационных моделей. Элективный курс» / Угринович Н.Д. – М.: БИНОМ. Лаборатория базовых знаний, 2006

«Преподавание курса «Информатика и ИКТ» в основной и старшей школе»: Методическое пособие для учителей / Угринович Н.Д. – М.: БИНОМ. Лаборатория базовых знаний, 2006

Угринович Н. Д. Model-CD. Версии 1.0, 2004, 2005, 2.0, 2006-2008: компьютерный практикум на CD-ROM. — М.: БИНОМ. Лаборатория знаний, 2006.

Составитель программы: Яковлев Н.М., учитель информатики

Принято на заседании школьного

методического объединения учителей математики и информатики

протокол от «____»______2014 г. № ____

Руководитель ШМО_________ Карартынян Л.И.

ЛАНГЕПАС, 2014

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

Рабочая программа по информатике для 9 класса МБОУ «Средняя общеобразовательная школа № 2» разработана на основе:

Федерального закона Российской Федерации «Об образовании в Российской Федерации» ( № 273-ФЗ от 29.12.2012);

Федерального государственного образовательного стандарта основного общего образования, утвержденного приказом Министерства образования и науки Российской Федерации от 17.12.2010 №1897;

Основной образовательной программы основного общего образования ЛГ МБОУ «СОШ №2» (приказ от 10.09.13 от № 409-о).

Авторской программы элективного курса Н.Д.Угриновича «Исследование информационных моделей»

Общие цели курса

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

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

Общая характеристика элективного курса

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

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

Элективный курс «Олимпиадное программирование» рассчитан на 70 часов для учащихся 10, 11 классов. Он базируется на программе по информатике для средней общеобразовательной школы и предполагает повышение уровня образования за счет углубленного изучения материала по теме «Программирование».

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

Место предмета в учебном плане

Согласно учебному плану школы, курс изучается группой обучающихся 10-11 классов, выбравших его для изучения по два часа в неделю. Всего 70 часов.

Распределение часов в течение учебного года по полугодиям

Количество часов

I полугодие

II полугодие

Итого за учебный год

Новизна рабочей программы

Основное отличие предлагаемого элективного курса заключается в том, кроме объектно-ориентированных языков дополнительно рассматривается язык программирования Pascal . Таким образом, рассмотрение материала элективного курса становится доступным на другой платформе.

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

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

Учебно-тематическое планирование

Всего часов

Основы объектно-ориентированного программирования

Построение и исследование информационных моделей c использованием систем объектно-ориентированного программирования, электронных таблиц и языка программирования Pascal

Требования к знаниям учащихся

 уметь создавать информационные модели объектов и процессов из различных предметных областей (математики, физики, химии, биологии, экономики и др.);

 уметь создавать компьютерные модели с использованием языков объектно-ориентированного программирования Visual Basic и Delphi , электронных таблиц Microsoft Excel , языка программирования Pascal ;

 уметь проводить виртуальные эксперименты с использованием компьютерных моделей и анализировать полученные результаты.

Содержание элективного курса
(70 ч, 2 ч в неделю)

1. Основы программирования – 24 часа

Алфавит языка программирования.

Событийные и общие процедуры. Операторы ветвления, выбора и цикла. Основные типы данных: переменные и массивы. Функции.

2. Основы объектно-ориентированного программирования – 18 часов

Объекты: свойства, методы, события.

Интегрированные среды разработки систем объектно-ориентированного программирования Visual Basic и Delphi . Визуальное конструирование графического интерфейса. Форма и управляющие элементы.

3. Построение и исследование моделей в системах объектно-ориентированного программирования и электронных таблицах - 28 часов

Моделирование как метод познания. Системный подход к окружающему миру. Основные этапы разработки и исследования моделей на компьютере. Два способа построения компьютерных моделей:

 с использованием систем объектно-ориентированного программирования Visual Basic и Delphi ;

 с использованием электронных таблиц Microsoft Excel и StarOffice Calc .

Построение и исследование физических моделей. Компьютерный эксперимент.

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

Биологические модели развития популяций: модели неограниченного роста, ограниченного роста, ограниченного роста с отловом, модели жертва-хищник.

Оптимизационное моделирование в экономике. Построение и исследование целевой функции.

Модели экспертных систем. Модель лабораторной работы по химии «Распознавание химических веществ».

Геоинформационные модели в электронных таблицах.

Модели логических устройств. Логические схемы сумматора и триггера. Решение логических задач.

Информационные модели управления объектами. Модели разомкнутых и замкнутых систем.

Система контроля освоения обучающимися элективного курса

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

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

Для контроля знаний используется рейтинговая система. Усвоение теоретической части проверяется с помощью тестов. Каждое практическое занятие оценивается по системе зачет/незачет.

Учебно-методическое и материально-техническое
обеспечение образовательного процесса

Программа курса обеспечивается:

«Исследование информационных моделей. Элективный курс» / Угринович Н.Д. – М.: БИНОМ. Лаборатория базовых знаний, 2006

«Преподавание курса «Информатика и ИКТ» в основной и старшей школе»: Методическое пособие для учителей / Угринович Н.Д. – М.: БИНОМ. Лаборатория базовых знаний, 2006

Угринович Н. Д. Model-CD. Версии 1.0, 2004, 2005, 2.0, 2006-2008: компьютерный практикум на CD-ROM. — М.: БИНОМ. Лаборатория знаний, 2006.

Для обучающихся:

Угринович Н.Д. Информатика и информационные технологии. Учебник для 10-11 классов. – М.: БИНОМ. Лаборатория знаний, 2004 г. – 512 с.

Угринович Н.Д. Практикум по информатике и информационным технологиям. Учебное пособие. – М.: БИНОМ. Лаборатория знаний, 2004 г. – 400 с.

Для учителя:

Основная литература

Угринович Н.Д. Исследование информационных моделей. Учебное пособие – М.: БИНОМ. Лаборатория знаний, 2004 г. – 183 с.

Волченков Н.Г. Программирование на Visual Basic 6. Учебное пособие. Часть 1, 2, 3. М.:ИНФРА-М, 2000.

Дополнительная литература

Угринович Н.Д. Информатика и информационные технологии. Учебник для 10-11 классов. – М.: БИНОМ. Лаборатория знаний, 2004 г. – 512 с.

Угринович Н.Д. Практикум по информатике и информационным технологиям. Учебное пособие. – М.: БИНОМ. Лаборатория знаний, 2004 г. – 400 с.

Образовательные ресурсы сети Интернет

Компьютерный практикум и построение формальных моделей

Основы объектно-ориентированного программирования на языке Visual Basic

1. Основы объектно-ориентированного визуального программирования:

 Объекты: свойства, методы и события.

 Графический интерфейс и событийные процедуры.

2. Система объектно-ориентированного программирования Visual Basic :

 Интегрированная среда разработки языка программирования Visual Basic .

 Этапы разработки проектов на языке Visual Basic .

 Создание первого проекта «Обычный калькулятор».

1.Проект-задание «Расположение формы и управляющих элементов».

2. Проект «Обычный калькулятор»

3. Переменные в языке программирования Visual Basic .

3. Проект «Переменные».

4. Функции в языке программирования Visual Basic :

 Функции преобразования типов данных.

 Функции ввода и вывода данных.

4. Проект «Перевод чисел».

Проект-задание «Мультисистемный калькулятор».

5. Проект «Инженерный калькулятор».

Проект «Строковый калькулятор».

Проект «Проверка знаний».

6. Проект-задание «Игра Баше».

5. Основные типы алгоритмических структур и их кодирование на языке Visual Basic :

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

Тестирующая система — это святая святых любого соревнования. Средоточие нервов турнира. Во многом от неё зависит успешное проведение тура, стабильная её работа может обеспечить спокойствие организаторам, а нестабильность — повышенную головную боль. Написание тестирующей системы — задача, достойная дипломной работы (на моей памяти на тестирующих систамах защитили уже 2 диплома). А написание действительно хорошей — и целой кандидатской.

Итак, из чего обычно состоит тестирующая система. В случае олимпиад, которые проводились в моём родном городе, — из компьютера с Turbo Pascal и бабушки-проверяльщицы. На более высоком уровне — всё уже гораздо веселей. С участниками олимпиады борется целый разношёрстный программный комплекс. Местами — очень кроссплатформенный, а местами — весьма специфический. Но всё это вместе позволяет провести тур хорошо и красиво.

Тестирующая система, что логично, имеет серверную и клиентскую часть. Серверная составляющая в случае NSUts написана на Perl-е. Собственно, выбор языка сильно долго не стоял. Поначалу ребята пытались оптимизировать ujudge (aka Великий и ужасный Goplan), но после того, как на отборочном Всесиба 2008 года система опять помахала в воздухе лапками, слово Ruby в кругу НГУшных олимпиадников было объявлено матерщинным. Было принято решение возродить систему Жени Четвертакова, которая долгое время справлялась со своими задачами, но была некогда заменена на более красивую и современную ujudge. Так что Perl сам напросился.

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

Клиентская часть состоит из программного комплекса:
1. WinKill – запуск программы с ресурсными ограничениями
2. Diff – посимвольное сравнение двух файлов
3. Noasm – поиск ассемблерных вставок
4. Estimator – программа, предназначенная для зачисления баллов за тесты
5. Набор bat-файлов для запуска компиляторов и программ
Про каждый элемент можно говорить очень долго, но слаженно они осуществляют проверку решений и выносят вердикт о том, верно ли решена задача. Параллельно тестирующих клиентов может быть запущенно несколько. Причём, их можно запускать параллельно не только на различных машинах, но и на одной машине с многоядерным процессором. Так же, Web-интерфейсов может быть много. Всё это многообразие объединяет одно — база данных MySQL, которая зачастую запускается вместе с Web-интерфейсом.

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

Получение решений участников олимпиады

Решения участников олимпиады хранятся на Web-сервере проведения олимпиады. На него возложен контроль максимального объёма кода решения, чтобы слишком большие решения пресекались ещё на стадии приёма. Список решений участников и параметры их запуска хранятся в базе данных.
Жизненный цикл работы изолирующей среды начинается с запроса тестирующего клиента к базе данных сервера олимпиады. В ответе на этот запрос клиент должен получить id номер хранящегося в базе сданного решения, в случае, если в базе есть решения для проверки. Если решений нет, то запрос должен быть повторён через некоторое время. Пауза между запросами необходима для того, чтобы излишне не нагружать базу данных.

Итак, у нас уже отсеялись слишком большие исходники. Зачем это делается? Можно просчитать ооооочень трудоёмкое решение минут за 5 на своём рабочем компьютере и загнать всё в одну большущую мапу в исходнике. А само решение будет выглядеть как read(a), write(res[a]). Вот такую хитрость мы уже обрезали.

Компиляция

Перед проверкой решения тестировщик должен собирать его программный код компилятором, определённым в параметрах, переданных от сервера. Чтобы удовлетворить требованиям безопасности, тестирующий клиент включает в себя урезанные версии библиотек компиляторов. Из компиляторов исключены потенциально опасные библиотеки для работы с операционной системой на низком уровне. Урезанные версии библиотек компиляторов только затрудняют доступ к сети и функциям WinAPI 32, однако у тестируемых приложений есть возможность использования библиотек через ассемблерные вставки. За это отвечает программа noasm. В случае, если будет найдено ассемблерное включение, программный код не будет скомпилирован, а, следовательно, потенциально вредоносный код не будет запущен, при этом сервер олимпиады будет оповещен об ошибке компиляции.

Запуск программ

Для программного управления ограничениями ресурсов и контролем доступа в ОС Windows доступна библиотека WinApi 32. Контролировать права доступа, ресурсы компьютера и работы процесса, было решено, при помощи WinApi 32. В ОС Windows создаётся специальная учётная запись пользователя с ограниченными правами доступа, чтобы обеспечить безопасный запуск с ограничениями собранной программы. Она имеет только одну рабочую директорию с монопольными правами доступа.

Контроль в момент исполнения

Программа WinKill запускает приложение и контролирует средствами WinApi ограничения среды исполнения (процессорное время, память и общее время работы программы).
Она перехватывает все исключения и ошибки выполнения, получает код возврата при завершении приложения. Она оповещает тестирующий модуль обо всех произошедших событиях. Если приложение попытается выйти за пределы ограничений, то оно будет немедленно завершено.
После завершения работы программы требуется сравнить выходные данные решения участника олимпиады с ответом жюри. Если программа WinKill по завершению вернула нулевой код возврата, тогда коммуникационный модуль запускает специализированную программу «чекер». Если такая программа не предусмотрена условием задачи, то выходные данные проверяются с помощью стандартной программы diff.

Возврат в исходное состояние.

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

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

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

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

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

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

Инсталляционный пакет для системы (1,6 Мб) скачать>>

Документация для тестирующей системы (11 Кб) скачать>>

Задачи по информатике для 8 класса (2,9 Мб) скачать>>

Задачи по информатике для 9 класса (3,6 Мб) скачать>>

Тестирующую систему TSystem я опробовал в работе с операционными системами Windows Xp и Vista. Никаких сбоев не наблюдалось. После установки и запуска необходимо указать где находится откомпилированный файл (расширение exe) и файл необходимый для проверки решения (xls).


После этого необходимо нажать кнопку "Test", после чего результат тестирования будет отображен в окне браузера.

Как видно из рисунка, из 9 тестов успешно пройдено только три, т.е. в решении задачи допущена ошибка.

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

Стал доступен svn-репозиторий системы для проведения олимпиад по программированию, которая разрабатывается в Самарском государственном техническом университете.

Основные возможности системы:

  • Автоматизированная проверка исходных текстов решения на наборе тестов.
  • Поддержка различных типов соревнований, причем новые типы соревнований могут подключаться в систему после ее установки.
  • Хранение информации о ходе соревнования, базы участников и их рейтинга.
  • Вычисление статистики по соревнованию.
  • Распределенная проверка решений, отправленных участниками, на нескольких проверяющих компьютерах.
  • Проверка решений на Windows- и Linux-системах.
  • Поддержка любых компиляторов путем задания их использования через шаблоны вызова из командной строки.
  • Мультиязычный веб-интерфейс с возможностью переключения языка пользователем.
  • Работа на любой платформе, на которой работает Java.

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

pcms теперь не нужен?

Велосипед не мой, попросили разместить. :-)



Чем оно лучше ejudge?

О, родной универ засветился на ЛОРе!


И еще вопрос к автору, если он здесь. Как там сделано Time Limit/Memory Limit в Linux? Нужно патчить ядро для этого, или найден способ обойтись без этого? Когда я пытался написать подобную штуку, то наткнулся на то, что TL не получается отмерять стандартными средствами с точностью больше секунды, а ML невозможно нормально отделить от падения (забыл какого сигнала).

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

Эх. А я 10 лет назад как-то так. По дедовски областную судил. Головой и руками.


Проблема что ждать надо по времени CPU, а не настоящему. Как вариант разве что очень часто делать проверки по таймеру.

> Проблема что ждать надо по времени CPU, а не настоящему.

И какова разница на счётных задачах при полной утилизации ядра?


А как time делает? Наверное что-то вроде clock подойдет.


> This project currently has no downloads.


> Проблема что ждать надо по времени CPU

RLIMIT_CPU. CPU time limit in seconds

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

проблема даже не сколько в TL а в security violation.

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


> Работа на любой платформе, на которой работает Java.

С этого надо было начинать и сразу же заканчивать.

Есть eJudge и Contester. Зачем еще один велосипед?


> Есть eJudge и Contester. Зачем еще один велосипед?

Начнем с того, что есть PC^2.

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

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


потому что больше ни на что наши университеты не способны, зачем спрашивать очевидные вещи?


Чем лучше сабж того же ejudge?


В том же CBOSS'е стояла ejudge, пока он не скопытился.


Да и на тимусе он же стоял, если не изменяет память.

я думал в политехе тока бухают на дне


>чтобы потенциальный пользователь не начал открывать левых файлов, сокетов и прочего.

Загнуть в lxc, например.


чем ejudge не угодил? I want to ride my bycicle.


простите, а Арно^WМигель-классик ожидается?


Многим лень поднимать постргесс из-за такой программулины.

катап в ней точне больше всех фрагов настреляет.

А накой вообще нужны эти олимпиады по программированию?


>Видели последние рекомендации по проведению школьного этапа олимпиады по информатике? Вынь и положь тестирование решений.

Так вроде бы так всегда было? По крайней мере у нас на олимпиадах ученики обязаны кроме текста программы письменно протестировать её. Хотя бы на черновике. И кажется мне, что это сделано на тот случай, если в комиссии никто толком программированием не владеет :) А так глянули - и всё понятно, где и как что делается. Ну и ошибки вроде виднее. На практическом туре, там проще, сразу за машиной ребёнок работает, преподы ток конечные результаты выполнения смотрят.
А вообще, по сабжу, вроде интересная штука, ток отсутствие каких-либо файлегов на страничке скачивания огорчает.


>А накой вообще нужны эти олимпиады по программированию?

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


> Dudge - это универсальная система для проведения олимпиад по программированию и другим предметам, написанная на Java и J2EE с использованием СУБД PostgresQL и распространяющаяся по лицензии GPL.

Холи мазер оф год. EJB! Там что банковские транзакции надо проводить с толстых клиентов?


> Начнем с того, что есть PC^2.

Кстати, pc^2 и pcms это родственные проекты?

Побеждает в олимпиаде тот, кто взламывает систему

> Работа на любой платформе, на которой работает Java.

меня всегда интересовало как добиться такого успеха?


> Побеждает в олимпиаде тот, кто взламывает систему

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


НГУ? Я у вас пару дней назад олимпиаду по информатике писал, иногда медленно компилировалось.


А как же педон? Или руби?


Система мне давала 5 баллов в одном случае, и 5 баллов в другом, если немного код изменишь. Я так и не понял, в чем ошибка, и вставил рандом и залил код. Получил 10 баллов, прошло.

Всем привет, я один из авторов Даджа (основной разработчик). Прежде всего, хочу сказать, что сейчас система находится в полуфабрикатном состоянии, так что просьба ее текущую отлаженность не судить строго - она изначально создавалась для проведения уютненьких олимпиад по программированию на факультете. Публикация о ней заметки на ЛОРе для меня стала неожиданностью. :)

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

И еще вопрос к автору, если он здесь. Как там сделано Time Limit/Memory Limit в Linux?

В данный момент - через rlimit (было решено для начала сделать самым простым способом).

> Публикация о ней заметки на ЛОРе для меня стала неожиданностью. :)

Меня один из сотрудников, если я правильно понимаю, кафедры попросил. По крайней мере факультета - точно. :-) Вообще я думал, что согласовано.

> ток отсутствие каких-либо файлегов на страничке скачивания огорчает.

> Меня один из сотрудников, если я правильно понимаю, кафедры попросил. По крайней мере факультета - точно. :-) Вообще я думал, что согласовано.

Да все нормально, он мне и прислал ссылку на эту ветку.

> А вообще, по сабжу, вроде интересная штука, ток отсутствие каких-либо файлегов на страничке скачивания огорчает.

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

> Холи мазер оф год. EJB! Там что банковские транзакции надо проводить с толстых клиентов?

Нет, это обычное веб-приложение. Это и является основным отличием Dudge'а от ejudge и большинства прочих систем - он разрабатывается как цельное веб-приложение (с плагинами для проверки на разных языках / валидирования решений, конечно), а не как лазаревско-франкенштейновский набор служб, сервисов и xslt трансформаций. Т.е. конечная цель разработки Dudge - чтобы преподаватель в университете или школе (при небольшой помощи сисадмина или ученика) мог просто поставить парой кликов Dudge на компьютер и проводить соревнования или лабораторные в уже готовом для этого веб-окружении с базой пользователей, его собственной базой задач, удобном веб-интерфейсе - без вникания во внутренности работы системы и всякие group_id и т.п.

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

чем оно лучше ejudge?

> чем оно лучше ejudge?

Тем, что вместо вот этого:

у нас уже сейчас требуется копирование четырех файликов в папку автодеплоя сервера приложений. (Ну, с точностью до пре-альфа недоработок, вроде редактирования полей-костылей в СУБД, которые мы еще не убрали)


В настоящее время информационные технологии проникают во все сферы жизни человека, оказывая огромное влияние на развитие общества. Растет число людей, у которых вызывает интерес программирование в качестве спортивной дисциплины. В России соревнования студентов по программированию проводятся с 1996 г., когда впервые был проведен полуфинал чемпионата мира по программированию, который также стал чемпионатом России по программированию [1]. С 2000 г. число различных соревнований по информатике и программированию для школьников и студентов постоянно растет.

Олимпиада по программированию — интеллектуальное соревнование по решению комплекта из задач на компьютере, для решения которых необходимо придумать и реализовать алгоритм, написав программный код на одном из языков программирования. Задача считается решённой, если составленная по коду участника программа выдает верный результат на всем наборе подготовленных тестов, которые заранее неизвестны никому кроме составителей. Для проведения подобных соревнований используются турнирные системы для проверки решений участников, а также обеспечения взаимодействия клиентов с сервером.

Сервер — это программа, запускаемая на отдельном ПК, и выполняющая определенные задачи. Для работы сервера обычно выделяется порт, к которому будет обращаться клиент для пользования его ресурсами.

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

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

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

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

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

На рис. 1.1 кратко приведены итоги сравнительного анализа при переходе от ручной к автоматизированной проверке решений участников с помощью тестирующей системы.


Рис. 1. Преимущества использования тестирующей системы

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

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

Таким образом, для эффективной работы пользователя от системы определены следующие потребительские свойства:

‒ доступность информации в реальном времени;

‒ наглядность информации, простота интерфейса;

‒ надежность сетевого взаимодействия;

‒ безопасность персональных данных;

‒ отсутствие возможности использования уязвимостей ПО;

‒ системы подсказок и обучения.

Сформированные описания (выполняемые функции) к требованиям, которым должна удовлетворять система автоматической проверки, ориентированная на использование в учебном процессе приведены в таблице 1.

Требования ктестирующей системе для проведения олимпиад по программированию

Свойство

Выполняемый функционал

Система устойчива к взломам; персональные данные защищены; информация передается по защищенному протоколу

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

Система работает в режиме реального времени; сервер быстро обрабатывает запросы и отправляет ответные данные.

Легко устанавливается и настраивается; интерфейс клиентской части интуитивно понятен для среднестатистического пользователя.

В настоящее время наиболее известными являются такие тестирующие системы, как Contester, Executor, PCMS2 и Ejudge.

Contester — это система для проведения турниров и индивидуального решения задач по олимпиадному программированию (спортивному программированию). Автор проекта «Contester»: Клопов Игорь Николаевич (Ковровская Государственная Технологическая Академия). Contester работает на Windows и на Linux. Поскольку система разработана до выхода Windows 7, то в полной мере она функционирует только на Windows XP и Linux. Также существует множество проблем с подключением к Contester современных сред разработки. Неполный функционал: любую задачу из архива можно использовать только в одном соревновании; поддерживает только ACM правила.

Executor — удобная тестирующая система под Windows. Из преимуществ: легконастраиваемость, интутивно-понятный интерфейс. Недостатками являются следующие ограничения: 16 задач, малофункциональность (нельзя вручную регистрировать участников). Чтобы устраивать командные и личные соревнования, нужно использовать две разные версии.

PCMS2 — кроссплатформенная тестирующая система, была написана на языке программирования java больше 10 лет назад для полуфинала чемпионата мира по программированию. Помимо Russian Code Cup эту систему также используют для проведения таких соревнований как NEERC (полуфинал чемпионата мира по программированию), Всероссийская олимпиада по информатике и Всероссийская командная олимпиада по программированию. Недостатками данной системы является отсутствие документации, отсутствие возможности проведения двух соревнований разного вида, отсутствует возможность дорешивания после окончания соревнования.

Ejudge — это полнофункциональная тестирующая система под Linux. Из плюсов: функциональная, очень защищенная система, поддерживает командные, личные олимпиады, а также виртуальное участие. Из недостатков: на Windows-машинах не работает.

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

Читайте также: