Мещерякова Татьяна Алексеевна
Учитель информатики в Международной школе «Мирас»
„Автоматическая система
проверки решений задач по программированию”
В настоящее время число различных конкурсов
по предмету информатика и программирование для школьников и студентов постоянно
растет. Они поддерживаются учебными заведениями, потому что участие в них
позволяет сформировать у школьников и студентов интерес к информатике и
программированию, стимулирует стремление для познания специальностей соответствующего
профиля. Поддержка конкурсов и олимпиад осуществляется государством через
гранты Министерства образования и науки Республики Казахстан и компаниями,
специализирующимися на разработке программного обеспечения.
Происходит популяризация профессии
программиста как творческого труда, требующего высокой квалификации. На основе
олимпиад по информатике и программированию был предложен и развивается
соревновательный подход в образовании. Одним из важных отличий конкурсов и соревнований
по предметам информатика и программирование от большинства прочих является
автоматизация проверки работ участников. При этом проверка и подведение итогов
соревнований по программированию происходят в реальном времени. Первые системы
проверки решений были лишь вспомогательным инструментом, предназначенным для
поддержки жюри, осуществлявшего ручную проверку решений. С ростом числа
участников появилась необходимость в автоматической системе управления
соревнованиями.
С каждым днем компьютер и современные
информационные технологии занимают все большее место в учебном процессе. Это и
учебные материалы, доступные в глобальной сети, и различные компьютерные
лаборатории, моделирующие те или иные физические процессы и позволяющие
проводить виртуальные эксперименты.
С другой стороны, на данный момент
возможности компьютерных технологий существенно уступают человеку в оценке
усвоенных учеником знаний. Они не позволяют проверять правильность решений задач,
представленных в естественной форме, и не способны оценить процесс мышления.
Большинство подходов к оценке усвоения материала базируется на тестах, что
вряд ли можно назвать хорошим способом проверки знаний.
Школьная программа обучения предусматривает
обучение школьников программированию ЭВМ. Ученики
могут составлять прикладные компьютерные программы во время практических и
лабораторных занятий по математическим и техническим дисциплинам, закрепляя
практические навыки решения задач по этим предметам.
Выполнение заданий с помощью составления
прикладных программ на «непрограммистских» предметах создает некоторые
трудности в проверке этих заданий. Как справедливо заметить,
важной особенностью проверки компьютерных программ является то, что «сами
тексты созданных программ или алгоритмов — решений задач, проверять гораздо
труднее, чем решения … задач по математике или физике. Опыт показывает, что для
этого требуется большое число проверяющих — специалистов по программированию
высокой квалификации, взаимно контролирующих друг друга, и несколько дней
работы … иногда проверка текста программы вообще невозможна».
Иногда преподаватель, проверяющий прикладные компьютерные программы, может
попросить ученика объяснить соответствие алгоритма работы его
программы с исходным текстом и, таким образом, несколько облегчить процесс
проверки. На практике же обычно работоспособность программы оценивается не по
ее внутренней структуре, а по результатам ее работы. Если же преподаватель проверяеть задачи в неурочное
время, то часто не имеет
возможности услышать комментарии ученика по алгоритму ее выполнения и проверяет ее
только по результатам работы программы.
Исходя из сказанного выше, видно, что выходом
из данной ситуации могло бы стать тестирование результатов работы программы с
возможным последующим анализом кода программы. Также процесс проверки
результатов работы компьютерных программ можно автоматизировать, в отличие от
процесса анализа исходных текстов. Таким образом, возникает проблема автоматизированного
тестирования программ.
В части решения вышеуказанных задач особое
внимание необходимо уделить программному комплексу Contester.
Contester - это система для проведения турниров и
индивидуального решения задач по олимпиадному программированию (спортивному
программированию). Система содержит условия задач - от легких до олимпиадных -
и возможность проверки решений на большинстве современных языков: C++, Object
Pascal, Java и языках .NET: C#, J# и Visual Basic. Contester работает на
Windows и на Linux.
Таким образом „Автоматическая система
тестирования решений” Contester пришёл в обучение программированию из конкурсов
и олимпиад , в течение последних несколько лет популярность его неуклонно
растёт. Польза, а в случае обучения олимпиадному программированию на высоком
уровне и необходимость – применения контестера очевидна и связана с двумя его
основными качествами: автоматизированностью и онлайн-функционированием. Первое
позволяет в разы ускорить процесс проверки решений и сделать её значительно
более достоверной (тестирование на наборах из десятков разработанных заранее
тестов за секунды), второе позволяет работать с системой удалённо. Для
преподавателя это возможность сэкономить время, затрачиваемое на тестирование
решений обучающихся вручную. Для обучающихся Contester,
с одной стороны, гарантирует, что правильное решение будет оценено по
достоинству, с другой – лишает соблазна схалтурить, написать «бутафорское»
решение.
О плюсах Contester можно сказать много и это оправданно,
роль автоматической проверки в обучении программированию сложно переоценить.
Отсюда растущая популярность, приводящая к внедрению Contester
там, где он до сих пор не использовался и увеличению его роли там, где он
успешно применяется. В первом случае, когда Contester используется как дополнение и работа с ним
занимает небольшую часть времени обучающихся, ход обучения существенно не
меняется: наблюдается в основном упомянутое ранее ускорение проверки и в
некоторой степени привыкание к чётким условиям и форматам ввода-вывода. Во
втором же случае, когда роль Contester в обучении повышается, соответственно
повышается и влияние особенностей такой формы обучения как на обучающихся, так
и на преподавателя.
Данная система проверки решений задач по
программированию, позволяет автоматизировать данный процесс и снизить труд
преподавателя по просмотру исходных текстов решений задач. Система обеспечивает
независимость и объективность проверки. Она предоставляет преподавателю и учащимся
удобные средства просмотра статистики сдачи решений. Система способствует
выработке у обучаемого навыков тестирования программ. Кроме этого система может
быть успешно использована при реализации тестирующих модулей в сетевых
учебно-методических комплексах.