Ключевые слова: тестирующая онлайн система, обучение программированию, обучение
алгоритмизации, ИТ в образовании, инновационное образование, Цифровой Казахстан
Современными педагогами акцент на программирование часто делается при преподавании
дисциплин, связанных с алгоритмизацией и программированием [1]. Авторы статьи преподавали
несколько различных курсов связанных с данными направлениями компьютерных наук на всех
академических ступенях обучения – бакалавриат, магистратура, докторантура. Опыт показывает, что
большое число студентов находят практическую часть курсов достаточно сложной, в особенности те,
кто не имел раньше изучать программирование. По общему признанию, самым сложным моментом
при изучении является достижение понимания того, как составить программу для решения
определенной задачи и как применять тот или иной метод в различных ситуациях [2]. Обучающиеся
нуждаются в практическом опыте для понимания теоретических понятий и формирований
вычислительного мышления, часто отличающегося от их предыдущего опыта, однако необходимого
для изучения программирования [3]. Письменная и устная работа не может предоставить того уровня
освоения материала, который может быть достигнут только через практический опыт. Следовательно,
сбалансированный учебный курс со значительной долей практических занятий является ключом к
качественному преподаванию программирования.
Основным назначением курса, обучающего программированию на определенном языке или
технологии, является достижение рефлексии между лекционно-семинарской частью и лабораторными
работами. Однако на пути к достижению высокого обучающего эффекта существует множество
преград, так как качество результата обучения зависит от множества факторов. Одним из них является
тот факт, что обычно продолжительность курса достаточная для глубокого освоения материала, однако
количество практических занятий составляет меньшую долю относительно всей дистанции курса. С
другой стороны, обучающиеся часто ленятся писать весь программный код решения задач от начала
до конца, поэтому прибегают к копированию значительных частей кода из учебных примеров или у
одногруппников. Само по себе это не является критическим моментом, так как в реальной практике
программисты часто прибегают к использованию шаблонов и заготовок. Однако в случае
обучающихся, они не имеют возможности оценить корректность скопированного кода заранее из-за
недостатка знаний и опыта программирования, что ведет к неполному пониманию всей составленной
программы. Еще одним препятствием является количество кода, проверяемое преподавателем. Так как
размер кода решаемых задач от занятия к занятию имеет тенденцию к увеличению, нагрузка, связанная
с этим, ложащаяся на плечи проверяющего только возрастает. Это ведет к тому что преподаватель не
проверяет код построчно, что желательно для наилучшего качества оценки, а оценивает код «на общий
18
взгляд». Само собой, это порождает возможность ошибок при оценивании программного кода. Кроме
того, обучающиеся имеют особенность быстро распознавать метод проверки их кода преподавателем
и после нескольких итерации находят наименее трудозатратный для себя метод сдачи решаемых задач.
И если преподаватель применяет «общий взгляд» при проверке решения задач, это может привести к
учащению фактов плагиата со стороны обучающихся. В свою очередь это приведет потере интереса
обучающихся к программированию.
В сфере образования, с каждым годом все больше и больше внимания уделяется применению
информационных технологии при проведении образовательных реформ. Подтверждением тому
является государственная программа «Цифровой Казахстан на 2017–2020 года» [4]. Ключевой задачей
для преподавателей курсов программирования является поднятие энтузиазма и полностью отразить
методологию преподавания, в частности процесс обучения ориентированный на обучающегося.
Смешанное обучение, являющиеся новой формой преподавания, использующей информационный
технологии как важный компонент своей реализации [5]. Согласно результатам тестирования, метод
смешанного обучения дает более высокие результаты по сравнению с обучением лицом к лицу. В
данной работе описывается попытка внедрения схемы смешанного обучения с оцениванием
практических заданий через автоматизированную онлайн систему тестирования программного кода
обучающихся в реальном времени на базе популярной онлайн тестирующей системы. Удобство для
обучающихся заключается в возможности выгрузки решений практических заданий в любое удобное
для них время, а для преподавателя в снижении трудоемкости проверки работ своих учеников. Кроме
того, при тщательном подборе практических заданий усиливается контроль за выполнением заданий
обучающимися, процесс оценивания делается более прозрачным для студентов, что в итоге
благотворно влияет на общее качество преподавания курса программирования и алгоритмизации.
Наиболее актуальные на момент публикации статьи тестирующие онлайн системы представлены в
таблице 1. Они предназначены для хостинга собственного соревнования по программированию. Все
эти системы обладают функционалом для компиляции и запуска на исполнение компьютерных
программ на распространенных языках программирования. Код программы отправляется через
программный интерфейс системы в текстовом виде, после чего проверяется ее корректность на
исполнение с помощью тестовых входных данных. Задача описывается таким образом, чтобы были
детально и четко определены входные и выходные данные. В интерфейсе системы пользователь
выбирает требуемую задачу, читает ее постановку, примеры входных и выходных данных и
прикрепляет свое решение в виде текстового файла. Отправленный исходный код обычно запускается
в соответствующей языку среде исполнения с ограничениями по времени выполнения, памяти, размеру
исходного кода и т.д. В зависимости от количества пройденных тестовых наборов данных решения
оцениваются в процентах. Обычно решение должно пройти все тесты, чтобы быть засчитанным как
корректное, так как тестирующие онлайн системы обычно применяются в олимпиадах и соревнованиях
по программированию. В случае описываемой тестирующей системы для целей учебного курса
требуемый процент успешно пройденных тестов был снижен до 50%. Тестирующая система ранжирует
пользователей по количеству решенных задач и затраченного на каждую из них времени.
Таблица 1 – Наиболее актуальные тестирующие онлайн системы
№
Название
системы
Язык
платформы
С
открытым
исходным
кодом
Количество
поддерживаемых
языков
программирования
Год
выпуска
1
A+ [6]
Английский
Да
Мало
2017
2
Cloud Coder [7]
Английский
Да
Средне
2012
3
Code Runner
(плагин для
Moodle) [8]
Английский
Да
Много
2016
4
DOMjudge [9]
Английский
Да
Много
2004
5
eJudge [10]
Русский
Да
Много
2005
6
SIO2 [11]
Мультиязычная
Да
Средне
2012
7
TestMyCode [12]
Английский
Да
Мало
2013
8
Tsinghua Online
Judge [13]
Китайский
Нет
Средне
2012
9
Web-CAT [14]
Английский
Да
Много
2003
19
В ходе анализа выбор пал на систему eJudge [10]. Авторы задались целью использовать ее в качестве
вспомогательного инструмента для автоматического оценивания заданий выполненных
обучающимися. Критериями при этом были: поддержка русского языка, большая гибкость при
настройке и даже доработке под свои нужды системы, активность команды разработчиков системы.
Таким образом, eJudge является полноценной автоматизированной тестирующей онлайн системой,
позволяющей пользователям подготавливать и проводить олимпиады и соревнования по
программированию в онлайн режиме согласно правилам, утвержденным ACM ICPC [15]. Система
активно поддерживается и постоянно выпускаются обновления. Кроме того, система регулярно
используется крупнейшими российскими онлайн площадками для проведения олимпиад по
программированию и алгоритмизации.
Помимо описанного выше главного преимущества тестирующей онлайн системы, заключающейся
в возможности преподавателю и его ассистентам оценивать практическую работу обучающихся
автоматически, в ходе использования системы во время занятий были выявлены несколько других
преимуществ. Во-первых, преподаватель может проверять корректность решений, отправленных
обучающимся с высокой точностью. Если преподаватель подготовил полный набор тестовых случаев
для определенной задачи с покрытием всех граничных случаев исходя из постановки задачи, то
вероятность принятия неверного решения стремиться к нулю. Во-вторых, время, затрачиваемое
преподавателем на оценивание решений задачи обучающимися, значительно уменьшается.
Следовательно, сэкономленное время может быть потрачено на увеличение количества вариантов
учебных заданий или улучшения их качества. В-третьих, обучающиеся получают практически
мгновенный ответ на вопрос корректности своего решения задачи. В работе авторов из Национального
университета Сингапура приводится детальное описание крайне успешного применения тестирующей
онлайн системы в учебном процессе для дисциплины связанных с алгоритмами и структурами данных,
соревновательным программированием [16]. Другие авторы представили детальный обзор случаев
применения тестирующих онлайн систем в образовательных целях через анализ нескольких систем
[17]. Авторы [18] также подготовили более свежий обзор доступного программного обеспечения,
посвященного автоматическому оцениванию решений программных заданий с акцентом на детальное
описание их особенностей и различных сценариев использования, что крайне интересно с
образовательной точки зрения. В свою очередь, авторы [19] дали краткое описание того как они
расширили архитектуру стандартной тестирующей онлайн системы для разработки функционала
далеко перешагивающего за простое оценивание решений обучающихся. Их система предоставляет
полезные отзывы пользователям о качестве их кода на семантическом уровне в форме понятных
человеку советов, попутно объясняя причины ошибок в коде с примерами их устранения. Такой подход
к преподаванию дисциплин, связанных с алгоритмизацией и программированием может значительно
повлиять на процесс обучения [20]. Интересной идеей по построению компьютерных игр, которые
интегрируются в тестирующую онлайн систему для того чтобы быть более привлекательными для
пользователей описан в работе [21].
Тестирующая онлайн система была применена при преподавании курсов по алгоритмам и
структурам данных, клиент-серверным приложениям в Казахском национальном университете имени
аль-Фараби, г. Алматы. Обобщая вышесказанное можно выделить следующие преимущества при
использовании тестирующих онлайн систем в учебном процессе:
1)
Развитие навыков критического мышления у обучающихся;
2)
Формирование новой категории методов оценивания с повышенной обратной связью и
точностью;
3)
Стимулирование интереса к процессу и результату программирования;
4)
Оперативное получение отзыва от системы и преподавателя.
Как и при любой замене человеческого труда автоматизированным, использование тестирующих
онлайн систем в учебном процессе имеет свои недостатки. Так, обычно тестирующая система может
оценивать корректно или нет решение задачи и, в случае необходимости выдавать информацию об
ошибке без объяснения причин ее возникновения и путей решения. От обучающихся требуются
неплохие навыки отладки программ и критического мышления, так как крайне сложно для
преподавателя охватить все аспекты при написании постановки учебной задачи. Таким образом, если
обучающиеся столкнутся с непреодолимой проблемой или недостижимыми результатами при
написании программ, они вынуждены будут обратиться к преподавателю за помощью. Однако здесь,
преподаватель имеет возможность просмотреть решение отправленное обучающимся в систему
удаленно для определения ошибок при написании программного кода. Затем, преподаватель может
20
объяснить обучающемуся его ошибки непосредственно во время занятий. Также некоторые
обучающиеся из категории неуспевающих имеют склонность к плагиату исходных кодов других
обучающихся для сдачи заданий, решаемых во внеклассном режиме. В таких ситуациях хорошо
помогает увеличение количества вариантов задании. Здесь играет роль тот фактор, что успевающие
обучающиеся обычно отказываются делать задания своих одногруппников, если они не совпадают с
их собственными.
Достарыңызбен бөлісу: |