2. Сопутствующая работа.
Цель предложенного подхода заключается в обучении студентов навыкам отладки, используя явные знания об ошибках, для которых уже найдено исправление. Мы обращаемся к ошибкам, которые позволяют скомпилировать и последующее выполнение программной системы (синтаксические ошибки и некорректные программы в данном исследовании не рассматриваются). По этой причине в данном обзоре литературы игнорируются исследования, связанные с ошибками студенческого компилятора. Обучение стратегиям отладки - сложная задача, требующая личных навыков и отношения, которые нелегко поддаются обучению и оценке [4, 9]. Например, Бёттхер и др. [9] представляют результаты двухлетней работы учебного подразделения по отладке программ на языке Java. Исследование показывает, что навыки отладки студентов соотносятся с некоторыми нетехническими навыками, такими как способность к систематической работе. Эти навыки плохо совершенствуются благодаря внедрению традиционных инструментов отладки и средств визуализации. Традиционные инструменты отладки обычно интегрируются в среду программирования и имеют общий набор функциональных возможностей. Некоторые примеры традиционных инструментов отладки приведены в [10]. Эти инструменты, по сравнению с предлагаемыми DTE, более полезны для поддержки экспертов-программистов (они предполагают, что пользователь понимает продвинутые темы и имеет опыт работы с инструментами отладки).
Обзор инструментов визуализации предлагается в [16]. Например, в [26] авторы описывают инструмент, который работает как отладчик, но ориентирован на обучение дереву минимального пролета. Он требует от пользователя ввода графика в виде матрицы, а затем позволяет пользователю шаг за шагом оптимизировать выполнение алгоритма. Инструмент также обрабатывает и отлаживает ошибку, допущенную пользователем. Более того, инструмент в [26] требует в качестве ввода матрицу, описывающую код, и таким образом предполагает, что пользователь знает код системы и может его представлять. В этом же исследовании авторы предлагают сравнить предлагаемый инструмент с другими существующими, сделав обзор подходов к отладочной визуализации. Другой инструмент онлайн-визуализации, названный Python Tutor, предложен Guo и др. [20].
Когда пользователи пишут свои программы в браузере, инструмент визуализирует текущее состояние структур данных в программе. Эти инструменты достаточно гибкие, так как они больше ориентированы на понимание кода, чем на обучение отладке, и больше ориентированы на обучение отладке в играх [28]. Эти игры, позволяющие получить измеримые результаты обучения и собрать большое количество данных о поведении учащихся, всегда используются для улучшения отладки онлайн-инструментов. Подобно предлагаемому нами инструменту, отладочные игры основаны на известных ошибках. В отличие от нашего подхода, игры не основываются на использовании какого-либо реального программного кода, но они поддерживают отладку предрасположенных к ошибкам студентов в качестве проблем. Пример отладочного подхода, основанного на играх, предложен в [13]. Авторы выбрали образы (Space Invaders) для представления различных концепций, которые программист должен знать, пытаясь понять поведение части кода.
Наконец, в недавней работе Luxton-Reilly и др. [31] предлагается Ladebug, инструмент, предназначенный для отладки навыков отладки. Тем не менее, Ladebug делает акцент на таких особенностях, как "всезнающая отладка", например, отступление назад, которые недоступны в повседневных отладчиках (обзор всезнающих инструментов отладки приведен в [31]). "Еще одной особенностью, которую оценили отладчики Ladebug'susers, было то, что они не так часто переключали точки остановы. Последнее не относится к студентам, которые обязательно должны были работать с точками остановы либо с классическим отладчиком, либо с DTE. Одной из общих черт между DTE и Ladebug является "поощряющее повторение", которое было "высоко оценено" со стороны студентов и является ключевым моментом DTE, позволяющим получить опыт отладки.
Со стороны преподавателя, Ladebug требует от преподавателя разрабатывать задания, которые включают в себя синтетические ошибки, в то время как DTE предоставляет фреймворк аннотаций, используя также реальные ошибки системы (это позволяет больше контроля в модуляции леса в зависимости от потребностей студентов). Ladebug работает над небольшими упражнениями по программированию. И наоборот, DTE стремится построить "отладочное мышление" [34], обеспечивая лучшее понимание структуры системы с ее компонентами и их взаимодействия, т.е. системных знаний, выделенных в [31], а также делая акцент на "эвристическом преобразовании", о котором шла речь в [15].
Повторное использование ошибочного исходного кода для поддержки начинающих программистов в задачах отладки. Background.