Современные информационные технологии/3. Программное обеспечение

К.т.н. Дорофеев А.С., Рязанов Е.В.

Национальный исследовательский Иркутский государственный технический университет, Россия

Система проверки решения задач по программированию в режиме реального времени

Согласно Федеральному государственному образовательному стандарту, бакалавр, обучающий по направлению «Информатика и вычислительная техника», должен изучить дисциплину «Программирование», входящую в базовую (общеобразовательную) часть профессионального цикла учебного плана, и обладать определенными профессиональными компетенциями, в числе которых: осваивать методики использования программных средств для решения практических задач (ПК-2), разрабатывать интерфейсы «человек-ЭВМ» (ПК-3), разрабатывать компоненты программных комплексов (ПК-5) и др. Изучение курса «Программирование» также предполагает получение определенных знаний, навыков и умений, определяемых ФГОС.

Стандартная учебная группа состоит в среднем из 25 студентов. По каждой из основных тем/разделов дисциплины (разветвляющийся и циклический вычислительные процессы, массивы, строки, модульное программирование, рекурсивные алгоритмы, динамическая память и др.) студенты выполняют лабораторные работы. За учебный год таких работ необходимо выполнить порядка десяти. Лабораторные занятия проходят в компьютерном классе, оснащенном мультимедийной техникой. Таким образом, преподаватель может  наглядно демонстрировать работу в среде программирования, построение алгоритмов и методы их отладки.

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

В Иркутском государственном техническом университете, на кафедре вычислительной техники факультета кибернетики разработана система, позволяющая в режиме on-line проверять тексты программы и выдавать определенные ответы. Возможные варианты ответа проверяющей системы:

1) Решение принято.

2) Неправильный ответ. Вероятная причина: неверный алгоритм.

3) Ошибка представления данных. Решение выдало неправильно сформированные выходные данные.

4) Превышен лимит времени – решение не уложилось в отведённое время. Вероятные причины: неоптимальный по скорости алгоритм; ошибка в алгоритме, приведшая к зависанию программы.

5) Превышен лимит памяти – решение запросило больше памяти, чем отведённый лимит. Вероятные причины: неоптимальный алгоритм.

6) Ошибка исполнения – исключительная ситуация в решении или ненулевой код выхода процесса. Вероятные причины: ошибка в решении, отсутствие «return 0» в программе на C/C++; решение использует слишком много памяти; класс Java не содержит метод main().

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

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

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

Все отправленные на проверку решения «ставятся в очередь» и проверяются с использованием распараллеливания проверки на несколько компьютеров, объединенных в кластер, что значительно сокращает время ответа (ранее решения проверялись в порядке поступления одним сервером).

Класс окна: sun-awt-X11-XFramePeer

Рис. 1. Форма отправки решения для проверки системой.

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

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

Класс окна: sun-awt-X11-XFramePeer

Рис .2. Результаты автоматической проверки решения

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

В настоящее время система поддерживает следующие языки программирования: Java, C, C++, Pascal с применением систем программирования: Eclipse, Code::Blocks, Free Pascal IDE и Delphi.

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

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

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

Литература:

1. Федеральный государственный образовательный стандарт высшего профессионального образования по направлению подготовки 230100 «Информатика и вычислительная техника» (квалификация/степень «бакалавр»), утвержден приказом Министерства образования и науки Российской Федерации о№553 от 09 ноября 2009 г.

2. Образовательная программа дисциплины «Программирование», Дорофеев А.С., Иркутский государственный технический университет, 2013 г.

3. Дорофеев А.С., Рязанов Е.В., Егорова Н.Н. Об опыте проведения олимпиад по программированию с использованием системы on-line проверки решений // Труды IV Всероссийской конференции «Винеровские чтения». Часть III. – Иркутск: ИрГТУ, 2011. – С. 67 – 71.