<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">A Video-Based Approach to Learning Debugging Techniques</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Viktor</forename><surname>Shynkarenko</surname></persName>
							<email>shinkarenko_vi@ua.fm</email>
							<affiliation key="aff0">
								<orgName type="institution">Ukrainian State University of Science and Technologies</orgName>
								<address>
									<addrLine>Lazaryana str. Dnipro</addrLine>
									<postCode>49010</postCode>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Oleksandr</forename><surname>Zhevaho</surname></persName>
							<email>o.o.zhevaho@ust.edu.ua</email>
							<affiliation key="aff0">
								<orgName type="institution">Ukrainian State University of Science and Technologies</orgName>
								<address>
									<addrLine>Lazaryana str. Dnipro</addrLine>
									<postCode>49010</postCode>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">A Video-Based Approach to Learning Debugging Techniques</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">CFEAED75FB68917F40753F03696622B2</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T18:46+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Software</term>
					<term>debugging</term>
					<term>visualization</term>
					<term>constructive-synthesizing modeling</term>
					<term>programming education</term>
					<term>software engineering</term>
					<term>video-based learning</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>The presented research in line with the contemporary trend in education -microlearning, which involves using short videos to teach coding techniques and enhance the efficiency of the learning process. Microlearning is characterized by a student-centered approach, facilitates better knowledge retention, requires less time for learning, and allows for learning anytime and anywhere. Building on previous studies that developed a constructive-synthesizing model and corresponding software to track and analyze programmers' activities during coding and debugging in the Visual Studio environment, this paper introduces a developed system for visualizing debugging processes based on log file data to improve the effectiveness and efficiency of programming education. The tool reconstructs debugging sessions as videos with synchronized timestamps and explanatory comments, illustrating the sequence of actions during debugging and offering explanations and recommendations for improving the debugging process. The comments help students understand the logic behind specific debugging actions and provide tips on alternative approaches, fostering a deeper understanding of debugging strategies. During an experiment in the form of a debugging olympiad, log files contain all the information about the debugging processes was collected. The developed visualization system was tested based on this experimental data, confirming the accuracy of the tool in reconstructing sessions and generating appropriate comments. This concept of visualizing debugging processes has significant potential for improving the methods of teaching and learning debugging, offering substantial benefits for both instructors and students. Instructors can analyze individual and group debugging sessions to identify common errors and adjust their teaching methods accordingly. This approach helps instructors provide more personalized assistance, thereby improving students' debugging skills. For students, the ability to review their debugging sessions and receive contextual feedback helps to develop critical thinking and self-improvement skills.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>Systematically checking programs for errors, identifying, and fixing them is the primary skill of software developers. Professional programmers spend between 20% to 40% of their time on debugging <ref type="bibr" target="#b0">[1]</ref>. This percentage is significantly higher for beginners as they make more mistakes while coding and therefore need to debug their code more frequently. Debugging training is often not given enough time, sometimes not even included in programming courses, and as a result, students are not familiar enough with debugging methods, concepts, and strategies that could potentially improve their debugging skills.</p><p>For example, novice programmers usually debug problematic programs without any plan. They tend to make changes randomly to reduce the difference between the erroneous and target programs, sometimes forgetting to revert incorrect modifications and introducing new bugs <ref type="bibr" target="#b1">[2]</ref>.</p><p>It is difficult for beginners to acquire excellent debugging skills simply by learning to write programs. Therefore, clear educational instructions should be provided to novices for learning effective debugging strategies. Debugging training should take place at an early stage so that novices do not attempt to debug their programs using improvised and non-systematic methods.</p><p>Although different debugging models may contain various subtasks, they can be grouped into four main categories: problem identification (comparing expected and actual program outputs), error localization, error correction, and solution verification. These four subtasks represent the fundamental steps developers usually face during debugging. Utilizing a systematic step-by-step approach to debugging will enhance debugging skills, increase debugging speed and accuracy, and reduce the number of introduced errors <ref type="bibr" target="#b1">[2]</ref>.</p><p>Many students require assistance with debugging to make progress when learning how to write programs. While personal interaction with students to give feedback on their programs is effective for their learning, it is becoming more challenging due to the increasing number of students and distance learning. Instructors cannot work synchronously with students to provide assistance when each student is learning at their own pace.</p><p>Online learning has significantly changed the way teaching is conducted, leading to a shift towards the use of new technologies. Videos have become one of the tools that teachers use to present educational content to their students. One way of using videos is to integrate them into lectures to visually illustrate concepts that may be hard to explain using only images and text.</p><p>There is a practical need to assist students with debugging, so that students' learning of programming wouldn't be complicated by their weakness in finding errors in programs.</p><p>We propose a new approach, a tool that will enhance teaching in introductory programming courses by providing students with debugging tips and teachers with a view to individual student learning trajectories.</p><p>The main idea of the approach is to create a comprehensive video visualization of the debugging process, using debugging process logs and supplementing them with visual hints. The comments serve as valuable annotations that help to understand the rationale behind specific actions taken during debugging and provide guidance on potential process improvements or alternative approaches.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Related work</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1.">Teaching Debugging</head><p>Despite the importance of debugging training, surprisingly little research focuses on debugging teaching strategies and developing debugging skills.</p><p>In a recent study, the relationship between programming experience and debugging behaviors in an introductory computer science course was investigated <ref type="bibr" target="#b2">[3]</ref>. The findings revealed that students with prior programming experience tended to focus more on fixing style errors, while novice students concentrated on syntax errors. This research underscores the significance of tailored pedagogical approaches to support novice programmers in developing effective debugging skills.</p><p>Based on the necessity of tailored approaches, several studies conducted the teaching evaluation of a systematic debugging process <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b3">[4]</ref><ref type="bibr" target="#b4">[5]</ref><ref type="bibr" target="#b5">[6]</ref><ref type="bibr" target="#b6">[7]</ref>. Many students are unfamiliar with the debugging process and strategies in general, and as a result, they use a trial-and-error approach. Teaching a systematic debugging process and other strategies during programming education can address this issue effectively. These studies developed a systematic debugging procedure based on the scientific method: observing the program's behavior, formulating hypotheses, testing them through experiments, and refining them as necessary until the cause is found. The research showed that the experimental group achieved significantly higher results in debugging tests, that demonstrate the usefulness and necessity of teaching debugging strategies.</p><p>Research emphasizes the importance of understanding students' debugging behaviors to tailor educational strategies effectively <ref type="bibr" target="#b7">[8]</ref>. The findings suggest that educators should encourage persistent trial-and-error efforts and provide timely interventions to support students facing difficulties. This approach aligns with the concept of productive failure, which reinterprets the challenges of debugging as valuable learning experiences <ref type="bibr" target="#b8">[9]</ref>.</p><p>Debugging develops a deep understanding and problem-solving skills in students. This perspective aligns well with educational theories emphasizing learning through iterative cycles of failure and correction <ref type="bibr" target="#b8">[9]</ref>. The research highlights that debugging is not merely a hurdle but a crucial part of the learning process, leading to significant educational gains when approached correctly. It provides a foundation for developing teaching strategies that leverage debugging to foster computational thinking and resilience in problem-solving.</p><p>In addition to theoretical insights, practical investigations into debugging strategies further also illuminate this area. For example, submission log data from an introductory Computer Science course were analyzed to investigate the debugging strategies of novice programmers <ref type="bibr" target="#b9">[10]</ref>. The research identified various debugging behaviors, including code deletions, comments, and print statements, and their relationship with relation to debugging efficiency. These insights into the debugging process can inform about the design and implementation of video-based learning environments aimed at enhancing students' debugging skills.</p><p>Furthermore, approaches aimed at supporting novice programmers in debugging tasks have emerged <ref type="bibr" target="#b10">[11]</ref>. Recognizing the challenges faced by beginners in effectively debugging code, we developed tool that provides targeted guidance from the failure site to the fault location. This approach helps novices navigate the debugging process by reducing the problem space and offering informed guidance based on previous bug fixes.</p><p>Collectively, these studies provide empirical arguments in favor of teaching debugging strategies and techniques, and that the process of learning to program can be significantly facilitated by an effective debugging process.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Feedback and visualization</head><p>Timely feedback is essential for guiding students as they independently work on programming exercises. Since it is becoming increasingly unrealistic to expect one-on-one interaction between teachers and students, researchers have been developing various automated systems to facilitate learning process and provide prompt feedback.</p><p>In the past, extensive research has focused on providing automated assistance to students in learning to write programs, but there are relatively few works on providing automated debugging support for students. However, there are several tools that use a feedback-based debugging approach. One such tool is the Microbat, which runs in the Eclipse environment <ref type="bibr" target="#b11">[12]</ref>. It utilizes a feedback-based debugging approach on specific trace steps to identify suspicious execution steps, effectively determining the root cause of errors.</p><p>A critical challenge in automatically generating feedback for programming tasks is developing hints that are as effective as those provided by teachers in person.</p><p>One of the program visualization systems that offers interactive personalized hints is TraceDiff <ref type="bibr" target="#b12">[13]</ref>. TraceDiff compares the dynamic execution of incorrect and correct code, illustrating how an error leads to behavioral differences and where the trace of incorrect code deviates from the expected solution. Another visualization tool, VeDebug <ref type="bibr" target="#b13">[14]</ref>, combines video-based time-travel regression debugging with traditional debugging techniques.</p><p>An alternative approach to visualizing the software development process is using development environment extensions <ref type="bibr" target="#b14">[15]</ref>. One such tool is Swarm Debugging that aligns with debugging visualization <ref type="bibr" target="#b15">[16]</ref>. Integrated into the Eclipse IDE and leveraging the Java Platform Debugging Architecture, the system captures debugging events and employs visual tools like the Sequence Stack Diagram and Dynamic Method Call Graph to represent method invocation sequences and their hierarchical relationships. These visualizations help developers quickly identify critical points in the code and understand the execution flow.</p><p>In addition to visualization systems, some researchers have created interactive development environments designed to teach students in introductory programming courses <ref type="bibr" target="#b16">[17]</ref>.</p><p>The use of video as a documentation option in combination with additional information has been used for GUI testing <ref type="bibr" target="#b17">[18]</ref>, where videos are recorded during test execution to supplement test reports.</p><p>One of the few systems providing practical automated debugging tips to support student learning is the Virtual Debugging Advisor (ViDA) <ref type="bibr" target="#b18">[19]</ref>. Based on recognizing common errors in students' programs, ViDA has shown that a higher percentage of students were able to fix their errors with its assistance, and most respondents found ViDA useful for learning.</p><p>Despite the significant progress in developing automated systems for teaching programming and providing feedback, there remains a notable gap in research focused on automated debugging support for students. This indicates that existing work focuses mainly on teaching code writing rather than on the important step of software debugging. Therefore, increasing attention on creating and enhancing automated systems for program debugging is an important task for the further development of programming education.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Research aims and objectives</head><p>The purpose of this study is to develop tools for the automated creating of the debugging process video visualization using existing debugging logs, supplemented with visual cues. This will help to improve the process of teaching students how to debug.</p><p>To achieve this goal, the following tasks were set: Develop a tool for visualizing the debugging process, clearly demonstrating the sequence of actions based on event logs received from the development environment.</p><p>Supplement the video with comments that provide explanations and suggestions for improving the debugging process.</p><p>Test the developed tool on the logs collected during the experiment.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Video visualization of the debugging process</head><p>In previous work, a constructor to generate debugging activity log files to formalize the data collection process regarding the usage of the integrated development environment (IDE) during debugging was developed using the constructive-synthesizing modeling (CSM) methodology <ref type="bibr" target="#b19">[20]</ref>. This methodology can model and formalize various structures and constructive processes and has been frequently applied to software development and debugging processes <ref type="bibr" target="#b19">[20]</ref><ref type="bibr" target="#b20">[21]</ref><ref type="bibr" target="#b21">[22]</ref><ref type="bibr" target="#b22">[23]</ref>.</p><p>An extension to the Microsoft Visual Studio was created based on the constructive model <ref type="bibr" target="#b19">[20]</ref>. This extension records all debugging actions, along with their context, in the event log.</p><p>In this paper, we describe the advancements of these software tools. Using the developed models and tools, we have created a system to visualize the collected information, reproducing the sequence of actions during the debugging process.</p><p>To visualize the debugging process, we developed software consisting of the following components (Figure <ref type="figure">1</ref>):</p><p>1. WebUI -provides a web interface for accessing system functions. 2. LogAPI -contains a RESTful API for receiving event logs from the IDE. 3. DataManagement -provides CRUD operations for working with log and video files. 4. LogDataProcessor -processes event logs received from the IDE. These logs serve as the basis for reconstructing debugging sessions and providing recommendations.</p><p>5. CommentGenerator -generates comments that explain events from the log file and recommend debugging actions. These comments are based on analyzing the debugging process and identify effective strategies and approaches, increasing the educational value of the video. 6. VideoGenerator -uses the processed log data and comments to generate a video representation of the debugging process. This video captures the user's interaction with the code, provides explanations and recommendations for debugging actions, and synchronizes with the timestamps from the log data. Periods of inactivity are skipped to make the video shorter and more informative. These moments are reflected in the comments.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 1: Tool components</head><p>The developed software tool aims to automate the creation of the software debugging process video visualization. It works based on event logs received from the IDE, which are generated in real time as the developer works with the program text. Each action is recorded with a timestamp and context, providing a chronological record of the debugging process. To record all events along with contextual information in the IDE, the tool presented in our previous work <ref type="bibr" target="#b19">[20]</ref> is used.</p><p>By utilizing existing logs and supplementing them with visual cues, our approach offers a holistic view of the debugging process, clarifying the sequence of actions and strategies that developers use.</p><p>The video presentation of debugging activities is a valuable resource for both teachers and students. It allows students to observe effective debugging strategies in action, helping them develop fundamental debugging skills. The video is accompanied by tips and tricks that provide additional explanations for each step in the debugging process.</p><p>The debugging visualization tool interface (Figure <ref type="figure">2</ref>) is designed to provide users with a comprehensive view of the debugging process by integrating: general information about debugging sessions (GeneralInfoSection), code display (CodeSection), and comments with recommendations (CommentsSection).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 2: A snapshot of the debugging process visualization</head><p>The GeneralInfoSection includes the following details: the number of the current debugging session (in this example, the first), the total number of sessions (in this example, four), and the duration of the current session (in this example, 40 seconds). The CodeSection occupies a prominent part of the interface, showing the source code being debugged and offering several features:</p><p>• syntax highlighting to improve readability; • visual markers indicating breakpoints, with two modes: active (green) and inactive (red); • highlighting of the currently executing line. The CommentsSection, located next to the code display, contains comments and recommendations. It provides explanations for the actions performed during debugging and suggests alternative solutions. Each comment is timestamped with the log file timestamps and session duration, allowing you to visually track the debugging process. Recommendations and hints are highlighted in a different color to distinguish them from regular comments. During the debug visualization, corresponding comments appear dynamically to provide context and understanding of the process.</p><p>The debug visualization tool's interface is designed to be intuitive, informative, and userfriendly, offering a comprehensive and detailed view of the debugging process along with relevant comments and recommendations.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.">Validation</head><p>To verify the functionality of the developed tool, an experimental study on program debugging processes was conducted with students from various courses in the "Software Engineering" specialty at the Ukrainian State University of Science and Technologies. The experiment took the form of a debugging olympiad.</p><p>The process of common logical errors debugging by students was studied. A logical error occurs when the code is syntactically correct but produces incorrect results upon execution. These errors are often complex and challenging for students to identify and resolve. To assess debugging skills, we employed the error seeding method. We developed thirty short programs in the C++ programming language, each containing one of the fifteen most common error types based on previous research <ref type="bibr" target="#b23">[24,</ref><ref type="bibr" target="#b24">25]</ref>. C++ was chosen because students have been acquiring programming and debugging skills in this language since their first year of study.</p><p>Each program contained a logical error confined to a single line of code, meaning the error could be fixed by modifying just one line. To aid in identifying errors, students were provided with sample input and output data.</p><p>Systematically exposing students to different types of errors can significantly enhance their debugging skills. Isolating individual errors simplifies the process of identifying and fixing problems.</p><p>The experiment involved 41 students from the first to the fifth year of study, all of whom had prior experience in C++ development and using the Microsoft Visual Studio IDE. The students were tasked with completing fifteen debugging exercises within a 4-hour period.</p><p>Participants are classified as "High", "Middle", or "Low" based on the number of correctly completed tasks (Figure <ref type="figure" target="#fig_0">3</ref>).</p><p>Students in the "Low" class, if they have completed less than half of the tasks, there are 9 of them. The "Middle" class, comprising 23 students, completed more than half but not all the tasks. Nine students in the "High" class completed all tasks.</p><p>Thirty-two students, approximately 78%, managed to solve half or more of the tasks. Nine students corrected all errors, taking a little over two hours on average. No error category proved completely unsolvable for all students, and no category had more incorrect answers than correct ones. Regarding the difficulty of errors, the results show that most participants answered at least half of the tasks correctly. Most errors fell within the 75% correctness range. Students had moderate difficulties with misusing the sizeof function and misunderstanding variable scope, with 25% of tasks in these categories solved incorrectly.  The results showed that "Low" class participants made significantly more code changes than others but had fewer debugging sessions. Additionally, "Low" class participants more frequently displayed variable values on the screen instead of setting breakpoints or using step-by-step execution.</p><p>Two types of breakpoints were observed: one to check if a part of the code is executed and another for step-by-step execution. Only "Low" class participants predominantly used breakpoints for step-by-step execution (86.67%), whereas "High" class participants used this method in only 25.71% of sessions. "High" class participants rarely used breakpoints and stepwise execution, suggesting their development skills are sufficient to form correct hypotheses without extensive debugging.</p><p>Figure <ref type="figure">5</ref> shows the statistics of debugging practices used by students during the experiment.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 5: Statistics on the use of debugging techniques</head><p>Based on the most frequently repeated sessions, we identified four patterns of behavior among the experiment participants.</p><p>Pattern #1 -running the program in debug mode without making any changes or performing debugging actions. This pattern is used to check the program's behavior.</p><p>Pattern #2 -changing the program text and running it in debug mode without any further debugging actions. This pattern reflects the trial-and-error method, repeated until a solution is found or ideas run out. All participant groups use this method, though those in the "Low" category require more attempts and achieve poorer results.</p><p>Pattern #3 -running the program in debug mode with set breakpoints. This is used to study which parts of the program are executed and for step-by-step execution.</p><p>Pattern #4 -changing the program text, setting breakpoints, and running it in debug mode. This pattern corresponds to the error assumption method, where an error is assumed at a specific point, the code is modified, and breakpoints are set to verify the correction.</p><p>Most developers set breakpoints and traverse code using the debugger. Other debugging functions are used much less frequently by fewer developers. Only two participants utilized tools such as viewing variable values. Those who did not use debugging tools relied on trial and error and displayed values on the screen. These findings suggest a need for increased hands-on debugging experiences in curricula.</p><p>Although not surprising, the experiment demonstrated that experience is a key factor in debugging skills. All 4th and 5th-year students completed half or more of the tasks, whereas no first-year students completed all the tasks.</p><p>The data analysis also identified students who did not solve the tasks independently. One participant was disqualified for submitting pre-prepared solutions. Additionally, five more participants were not credited with correctly completed tasks due to suspicious processes lacking independent effort. Their solutions coincided with those of other participants, and their logs consisted of few debugging sessions with minimal actions, including large code pastes.</p><p>The experiment generated 487 event log files for 41 participants, totaling 2,415 debugging sessions and 16,536 events. Based on these logs, the functionality of the developed tool was tested. The verification phase assessed the accuracy of video display and commentary generation. The tool successfully reconstructed the debugging processes, accurately capturing the sequence of participants' actions. The resulting videos provided a clear visual representation of the debugging sessions. The test results confirmed the efficiency of the presented approach.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7.">Conclusion</head><p>This paper presents a new approach that offers a practical solution for improving debugging skills through demonstrative debugging videos. The proposed method aims to enhance the efficiency and effectiveness of debugging training by combining visual representation with detailed descriptions of actions, comments, and recommendations. This approach enhances process understanding and facilitates knowledge transfer. Comments provide insights into the rationale behind certain actions, offering guidance on potential process improvements and alternative approaches.</p><p>Integrating video visualization with log file data offers a promising way to enhance the debugging learning process. By providing a comprehensive visual representation of the debugging process, novices can better grasp its intricacies, thereby addressing a gap in debugging training.</p><p>This tool is also beneficial for teachers, as it simplifies monitoring the development of students' debugging skills. By analyzing individual learning trajectories, instructors can assess each student's progress over time. Tracking improvements in debugging skills and identifying persistent problems allows instructors to adjust their teaching methods to better meet the needs of their students.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Participant classification</figDesc><graphic coords="7,149.80,407.32,295.68,222.48" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: Frequency of using commands during the experiment</figDesc><graphic coords="8,118.60,72.04,357.84,268.32" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="5,74.20,182.92,459.84,158.16" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="6,85.00,72.04,425.04,277.92" type="bitmap" /></figure>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Furthermore, by studying patterns in debugging processes, teachers can identify common mistakes. This information can be used to develop teaching materials that address these problematic issues.</p><p>Future work could focus on expanding the tool's functionality and conducting additional research to further validate its effectiveness and usability.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Studying the advancement in debugging practice of professional software developers</title>
		<author>
			<persName><forename type="first">M</forename><surname>Perscheid</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Siegmund</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Taeumel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Hirschfeld</surname></persName>
		</author>
		<idno type="DOI">10.1007/s11219-015-9294-2</idno>
	</analytic>
	<monogr>
		<title level="j">Software Quality Journal</title>
		<imprint>
			<biblScope unit="page" from="83" to="110" />
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Improving debugging skills in the classroom: The effects of teaching a systematic debugging process</title>
		<author>
			<persName><forename type="first">T</forename><surname>Michaeli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Romeike</surname></persName>
		</author>
		<idno type="DOI">10.1145/3361721.3361724</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 14th Workshop in Primary and Secondary Computing Education</title>
				<meeting>the 14th Workshop in Primary and Secondary Computing Education<address><addrLine>Glasgow</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Investigating the Relationship Between Programming Experience and Debugging Behaviors in an Introductory Computer Science Course</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">D</forename><surname>Pinto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Q</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Paquette</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">X</forename><surname>Fan</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-031-47014-1_9</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 5th International Conference on Quantitative Ethnography</title>
				<meeting>the 5th International Conference on Quantitative Ethnography<address><addrLine>ICQE, Melbourne</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2023">2023</date>
			<biblScope unit="page" from="125" to="139" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">A Flipped Systematic Debugging Approach to Enhance Elementary Students&apos; Program Debugging Performance and Optimize Cognitive Load</title>
		<author>
			<persName><forename type="first">X</forename><surname>Gao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">F</forename><surname>Hew</surname></persName>
		</author>
		<idno type="DOI">10.1177/07356331221133560</idno>
	</analytic>
	<monogr>
		<title level="j">Journal of Educational Computing Research</title>
		<imprint>
			<biblScope unit="page" from="1064" to="1095" />
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Towards a framework for teaching debugging</title>
		<author>
			<persName><forename type="first">C</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Chan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Denny</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Luxton-Reilly</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Tempero</surname></persName>
		</author>
		<idno type="DOI">10.1145/3286960.3286970</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 21st Australasian Computing Education Conference, ACE</title>
				<meeting>the 21st Australasian Computing Education Conference, ACE<address><addrLine>Sydney</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="79" to="86" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Debugging students&apos; debugging process</title>
		<author>
			<persName><forename type="first">A</forename><surname>Böttcher</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Thurner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Schlierkamp</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Zehetmeier</surname></persName>
		</author>
		<idno type="DOI">10.1109/FIE.2016.7757447</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 46th Annual Frontiers in Education Conference</title>
				<meeting>the 46th Annual Frontiers in Education Conference<address><addrLine>Erie</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Novice reflections on debugging</title>
		<author>
			<persName><forename type="first">J</forename><surname>Whalley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Settle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Luxton-Reilly</surname></persName>
		</author>
		<idno type="DOI">10.1145/3408877.3432374</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 52nd ACM Technical Symposium on Computer Science Education</title>
				<meeting>the 52nd ACM Technical Symposium on Computer Science Education</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2021">2021</date>
			<biblScope unit="page" from="73" to="79" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Using a Hierarchical Clustering Algorithm to Explore the Relationship Between Students&apos; Program Debugging and Learning Performance</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">H</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">C</forename><surname>Hsu</surname></persName>
		</author>
		<ptr target="https://ceur-ws.org/Vol-3667/DC-LAK24-paper-2.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2024 Joint of International Conference on Learning Analytics and Knowledge Workshops, LAK-WS 2024</title>
				<meeting>the 2024 Joint of International Conference on Learning Analytics and Knowledge Workshops, LAK-WS 2024<address><addrLine>Kyoto</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2024">2024</date>
			<biblScope unit="page" from="13" to="22" />
		</imprint>
	</monogr>
	<note>CEUR-WS</note>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Rethinking debugging as productive failure for CS education</title>
		<author>
			<persName><forename type="first">Y</forename><forename type="middle">B</forename><surname>Kafai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Deliema</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">A</forename><surname>Fields</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Lewandowski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Lewis</surname></persName>
		</author>
		<idno type="DOI">10.1145/3287324.3287333</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 50th ACM Technical Symposium on Computer Science Education</title>
				<meeting>the 50th ACM Technical Symposium on Computer Science Education<address><addrLine>Minneapolis</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="169" to="170" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Using submission log data to investigate novice programmers&apos; employment of debugging strategies</title>
		<author>
			<persName><forename type="first">Q</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Paquette</surname></persName>
		</author>
		<idno type="DOI">10.1145/3576050.3576094</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 13th International Conference on Learning Analytics and Knowledge: Towards Trustworthy Learning Analytics, LAK</title>
				<meeting>the 13th International Conference on Learning Analytics and Knowledge: Towards Trustworthy Learning Analytics, LAK<address><addrLine>Arlington</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2023">2023</date>
			<biblScope unit="page" from="637" to="643" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Reusing bugged source code to support novice programmers in debugging tasks</title>
		<author>
			<persName><forename type="first">P</forename><surname>Ardimento</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">L</forename><surname>Bernardi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Cimitile</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">D</forename><surname>Ruvo</surname></persName>
		</author>
		<idno type="DOI">10.1145/3355616</idno>
	</analytic>
	<monogr>
		<title level="j">ACM Transactions on Computing Education</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page">2</biblScope>
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Feedback-based debugging</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Lin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Sun</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Xue</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Dong</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICSE.2017.43</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 39th IEEE/ACM International Conference on Software Engineering, ICSE</title>
				<meeting>the 39th IEEE/ACM International Conference on Software Engineering, ICSE<address><addrLine>Buenos Aires</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="393" to="403" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">TraceDiff: Debugging Unexpected Code Behavior Using Trace Divergences</title>
		<author>
			<persName><forename type="first">R</forename><surname>Suzuki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Soares</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Head</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Glassman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Reis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mongiovi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>D'antoni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Hartmann</surname></persName>
		</author>
		<idno type="DOI">10.1109/VLHCC.2017.8103457</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2017 IEEE Symposium on Visual Languages and Human-Centric Computing, VL/HCC</title>
				<meeting>the 2017 IEEE Symposium on Visual Languages and Human-Centric Computing, VL/HCC<address><addrLine>Raleigh</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="107" to="115" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">VeDebug: Regression debugging tool for Java</title>
		<author>
			<persName><forename type="first">B</forename><surname>Buhse</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Wei</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Zang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Milicevic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Gligoric</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICSE-Companion.2019.00027</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 41st IEEE/ACM International Conference on Software Engineering: Companion, ICSE-Companion</title>
				<meeting>the 41st IEEE/ACM International Conference on Software Engineering: Companion, ICSE-Companion<address><addrLine>Montreal</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="15" to="18" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Visualization of program development process</title>
		<author>
			<persName><forename type="first">V</forename><surname>Shynkarenko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Zhevago</surname></persName>
		</author>
		<idno type="DOI">10.1109/STC-CSIT.2019.8929774</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 14th International Conference on Computer Sciences and Information Technologies, CSIT, IEEE</title>
				<meeting>the 14th International Conference on Computer Sciences and Information Technologies, CSIT, IEEE<address><addrLine>Lviv</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="142" to="145" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Swarm debugging: The collective intelligence on interactive debugging</title>
		<author>
			<persName><forename type="first">F</forename><surname>Petrillo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><forename type="middle">G</forename><surname>Guéhéneuc</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Pimenta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">D S</forename><surname>Freitas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Khomh</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.jss.2019.04.028</idno>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="page" from="152" to="174" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">The design and pilot evaluation of an interactive learning environment for introductory programming influenced by cognitive load theory and constructivism</title>
		<author>
			<persName><forename type="first">J</forename><surname>Moons</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">De</forename><surname>Backer</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.compedu.2012.08.009</idno>
	</analytic>
	<monogr>
		<title level="j">Computers and Education</title>
		<imprint>
			<biblScope unit="page" from="368" to="384" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Creation of Human-friendly Videos for Debugging Automated GUI-Tests</title>
		<author>
			<persName><forename type="first">J</forename><surname>Shi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Schneider</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-031-04673-5_11</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 33rd IFIP WG 6.1 International Conference on Testing Software Systems</title>
				<meeting>the 33rd IFIP WG 6.1 International Conference on Testing Software Systems<address><addrLine>ICTSS</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2021">2021. 2022</date>
			<biblScope unit="page" from="141" to="147" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">ViDA: A virtual debugging advisor for supporting learning in computer programming courses</title>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">C</forename><surname>Lee</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><forename type="middle">T</forename><surname>Yu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">M</forename><surname>Tang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">L</forename><surname>Wong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">K</forename><surname>Poon</surname></persName>
		</author>
		<idno type="DOI">10.1111/jcal.12238</idno>
	</analytic>
	<monogr>
		<title level="j">Journal of Computer Assisted Learning</title>
		<imprint>
			<biblScope unit="page" from="243" to="258" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Development of a toolkit for analyzing software debugging processes using the constructive approach</title>
		<author>
			<persName><forename type="first">V</forename><surname>Shynkarenko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Zhevaho</surname></persName>
		</author>
		<idno type="DOI">10.15587/1729-4061.2020.215090</idno>
	</analytic>
	<monogr>
		<title level="j">Eastern-European Journal of Enterprise Technologies</title>
		<imprint>
			<biblScope unit="page" from="29" to="38" />
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Constructive modeling of the software development process for modern code review</title>
		<author>
			<persName><forename type="first">V</forename><surname>Shynkarenko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Zhevaho</surname></persName>
		</author>
		<idno type="DOI">10.1109/CSIT49958.2020.9322002</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 15th IEEE International Scientific and Technical Conference on Computer Sciences and Information Technologies, CSIT, IEEE</title>
				<meeting>the 15th IEEE International Scientific and Technical Conference on Computer Sciences and Information Technologies, CSIT, IEEE<address><addrLine>Lviv-Zbarazh</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="392" to="395" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Application of constructive modeling and process mining approaches to the study of source code development in software engineering courses</title>
		<author>
			<persName><forename type="first">V</forename><surname>Shynkarenko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Zhevaho</surname></persName>
		</author>
		<idno type="DOI">10.24138/JCOMSS-2021-0046</idno>
	</analytic>
	<monogr>
		<title level="j">Journal of Communications Software and Systems</title>
		<imprint>
			<biblScope unit="page" from="342" to="349" />
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Ontological Support Formation for Constructive-Synthesizing Modeling of Information Systems Development Processes</title>
		<author>
			<persName><forename type="first">V</forename><surname>Skalozub</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Ilman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Shynkarenko</surname></persName>
		</author>
		<idno type="DOI">10.15587/1729-4061.2018.143968</idno>
	</analytic>
	<monogr>
		<title level="j">Eastern-European Journal of Enterprise Technologies</title>
		<imprint>
			<biblScope unit="page" from="55" to="63" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">An Empirical Study of Debugging Patterns Among Novices Programmers</title>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">S</forename><surname>Alqadi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">I</forename><surname>Maletic</surname></persName>
		</author>
		<idno type="DOI">10.1145/3017680.3017761</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 48th ACM SIGCSE Technical Symposium on Computer Science Education</title>
				<meeting>the 48th ACM SIGCSE Technical Symposium on Computer Science Education<address><addrLine>Seattle</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="15" to="20" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Common logic errors for programming learners: A three-decade literature survey</title>
		<author>
			<persName><forename type="first">N</forename><surname>Alzahrani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Vahid</surname></persName>
		</author>
		<idno type="DOI">10.18260/1-2--36814</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2021 ASEE Virtual Annual Conference</title>
				<meeting>the 2021 ASEE Virtual Annual Conference</meeting>
		<imprint>
			<publisher>ASEE</publisher>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
