Олимпиадное программирование стало набирать свою популярность еще в 2000х годах. На сегодняшний момент олимпиадное программирование имеет огромную популярность среди школьников старших классов, студентов технических специальностей и не только. Помимо самих занятий, а точнее «тренировок» каждый участник, или потенциальный участник достаточно много времени уделяет самоподготовке.
Сейчас в Internet огромное количество интернет ресурсов, предназначенных для самоподготовки. В основном эти ресурсы представляют собой архивы задач с онлайн системой проверки решений или же огромные теоретические справочники, книги. Вышеупомянутые архивы задач имеют один существенный недостаток. С их помощью пользователь не может изучать интересующий его материал, ему приходиться искать нужные данные в книгах и на страницах интернета. Мы поставили перед собой цель, разработать систему, которая может объединить подобные архивы задач, и теоретический материал. Но собрать все данные в одном месте не достаточно. Большинство задач, находящихся в архивах, задачи узкого диапазона знаний, а именно, решаются использованием одного-двух алгоритмов или приемов.
Наша идея заключается в том, что помимо условия задачи, пользователь системы должен получать:
информацию об алгоритмах решения;
краткое описание используемых алгоритмов;
ссылки на более подробное описание и разбор указанных алгоритмов (Wikipedia, Internet, ссылки на книги с указанием страниц/разделов);
примеры решения выбранной задачи на различных языках программирования.
Помимо связывания «теории» и «практики» мы поставили дополнительную задачу — сделать нашу систему удобной для использования с дружественным интерфейсом и позволяющую оперировать с информацией, при помощи наложения различных фильтров. Таким образом можно выделить несколько функций, которыми должна обладать система:
система должна являться банком задач по программированию;
система должна быть хранилищем теоретических знаний, необходимых для решения задачи;
система должна предоставлять пользователю разобранные примеры решений для более успешного обучения;
система должна быть удобна в использовании.
В ходе работы было выделено два основных класса объектов, а именно класс “Теория” и класс “Задача”, которые непосредственно связаны друг с другом. Конечно уже существует множество банков задач, поэтому так же были выделены классы “Решение” и “Алгоритм решения”, в которых пользователи, являющиеся редакторами, могут публиковать свои решения какой-либо задачи, а так же описывать ход своих рассуждений.
Используя, дополнительный модуль CMS Plone OntoEditor, созданный сотрудниками и студентами нашей кафедры, позволяющий в интерактивном, удаленном и визуальном режиме создать онтологию и наполнить ее знаниями, была создана семантическая сеть, моделирующая предметную область для нашей системы. Семантическая сеть представляет собой ориентированный граф, вершины которого соответствуют объектам предметной области, а дуги задают отношения между ними. Исходя из требований, предъявляемых к системе, были созданы необходимые классы объектов, для каждого были присвоены определенные свойства, а так же была определена связь между классами. Представление онтологии в окне редактора онтологий, входящего в состав OntoEditor, показано на рисунке (Рисунок 1).
Рисунок . Созданная онтология
Каждый класс онтологий определяется связями с другими классами онтологии. Так, к примеру, к одной теме может относится множество задач (Рисунок 2).
Рисунок . Пример класса «Задача» в онтологии
Нами создан web-сайт, использующий созданную онтологию для задания структуры хранения информационных ресурсов. На рисунке представлен пользовательский интерфейс для объекта, относящегося к классу «Задача» (Рисунок 3).
Рисунок . Реализация класса «Задача» с помощью контент-типа
В настоящий момент кроме задач организации информационных ресурсов, их хранения и редактирования, реализованы задачи классификации информационных ресурсов, их сортировки по уровню сложности, а также поисковый сервис с возможностью фильтрации задач по теме. Общий вид созданного нами сайта представлен на рисунке (Рисунок 4).
Рисунок . Раздел сайта «Задачи»
Разработка системы будет продолжена, с целью создания семантических сервисов, использующих созданную базу знаний для решения задач адаптивного управления веб-информационной системой.
СПИСОК ЛИТЕРАТУРЫ
Грегер .С. Э. Администрирование и интерфейс пользователя CMSPlone / С. Э. Грегер // Федер. агентство по образованию, ГОУ ВПО «УГТУ-УПИ им. первого Президента России Б.Н. Ельцина», Нижнетагильский технол. ин-т (фил.). - Нижний Тагил: НТИ (ф) УГТУ-УПИ, 2009.-140с.
Грегер С. Э. Сервер приложений "Zope". Учебное пособие для вузов. - М.: Горячия линия - Телеком, 2009. - 256 с.: ил.