<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Video-Based Approach to Learning Debugging Techniques</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Viktor Shynkarenko</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Oleksandr Zhevaho</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Ukrainian State University of Science and Technologies</institution>
          ,
          <addr-line>Lazaryana str. Dnipro, 49010</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <abstract>
        <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>
      </abstract>
      <kwd-group>
        <kwd>1 Software</kwd>
        <kwd>debugging</kwd>
        <kwd>visualization</kwd>
        <kwd>constructive-synthesizing modeling</kwd>
        <kwd>programming education</kwd>
        <kwd>software engineering</kwd>
        <kwd>video-based learning</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <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 [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. This percentage is significantly higher for beginners as they make more mistakes
while coding and therefore need to debug their code more frequently.
      </p>
      <p>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 [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </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
14th International Scientific and Practical Conference from Programming UkrPROGР’2024, May 14-15, 2024, Kyiv, Ukraine
: shinkarenko_vi@ua.fm (V. Shynkarenko); o.o.zhevaho@ust.edu.ua (O. Zhevaho)
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 [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </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>
    </sec>
    <sec id="sec-2">
      <title>2. Related work</title>
      <p>2.1. Teaching Debugging
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 [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. 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 [
        <xref ref-type="bibr" rid="ref2 ref4 ref5 ref6 ref7">2, 4-7</xref>
        ]. 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 [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. 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 [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </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 [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. 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 [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. 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 [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. 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>
    </sec>
    <sec id="sec-3">
      <title>3. Feedback and visualization</title>
      <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 [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. 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
[13]. 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 [14], 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 [15]. One such tool is Swarm Debugging that aligns with debugging
visualization [16]. 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 [17].</p>
      <p>The use of video as a documentation option in combination with additional information has been
used for GUI testing [18], 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) [19]. 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>
    </sec>
    <sec id="sec-4">
      <title>4. Research aims and objectives</title>
      <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:</p>
      <p>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>
    </sec>
    <sec id="sec-5">
      <title>5. Video visualization of the debugging process</title>
      <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 [20].
This methodology can model and formalize various structures and constructive processes and has
been frequently applied to software development and debugging processes [20-23].</p>
      <p>An extension to the Microsoft Visual Studio was created based on the constructive model [20].
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 1):
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.
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>
      <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 [20] 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 2) 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).
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).</p>
      <p>The CodeSection occupies a prominent part of the interface, showing the source code being
debugged and offering several features:
• syntax highlighting to improve readability;
• visual markers indicating breakpoints, with two modes: active (green) and inactive (red);
• highlighting of the currently executing line.</p>
      <p>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>
    </sec>
    <sec id="sec-6">
      <title>6. Validation</title>
      <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 [24, 25]. 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 3).</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.</p>
      <p>A small set of actions was common among almost all participants, with nine actions found in
90% of students. These actions included starting and stopping the debugger, changing code,
executing the program, opening files with program text, and copying and pasting.</p>
      <p>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 5 shows the statistics of debugging practices used by students during the experiment.</p>
      <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>
    </sec>
    <sec id="sec-7">
      <title>7. Conclusion</title>
      <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>
      <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.
[13] R. Suzuki, G. Soares, A. Head, E. Glassman, R. Reis, M. Mongiovi, L. D’Antoni, B. Hartmann,
TraceDiff: Debugging Unexpected Code Behavior Using Trace Divergences, in: Proceedings of
the 2017 IEEE Symposium on Visual Languages and Human-Centric Computing, VL/HCC,
Raleigh, 2017, pp. 107–115. doi:10.1109/VLHCC.2017.8103457.
[14] B. Buhse, T. Wei, Z. Zang, A. Milicevic, M. Gligoric, VeDebug: Regression debugging tool for
Java, in: Proceedings of the 41st IEEE/ACM International Conference on Software Engineering:
Companion, ICSE-Companion, IEEE, Montreal, 2019, pp. 15–18.
doi:10.1109/ICSECompanion.2019.00027.
[15] V. Shynkarenko, O. Zhevago, Visualization of program development process, in: Proceedings of
the 14th International Conference on Computer Sciences and Information Technologies, CSIT,
IEEE, Lviv, 2019, pp. 142–145. doi:10.1109/STC-CSIT.2019.8929774.
[16] F. Petrillo, Y. G. Guéhéneuc, M. Pimenta, C. D. S. Freitas, F. Khomh, Swarm debugging: The
collective intelligence on interactive debugging, Journal of Systems and Software (2019) 152–
174. doi:10.1016/j.jss.2019.04.028.
[17] J. Moons, C. De Backer, The design and pilot evaluation of an interactive learning environment
for introductory programming influenced by cognitive load theory and constructivism,
Computers and Education (2013) 368–384. doi:10.1016/j.compedu.2012.08.009.
[18] J. Shi, K. Schneider, Creation of Human-friendly Videos for Debugging Automated GUI-Tests,
in: Proceedings of the 33rd IFIP WG 6.1 International Conference on Testing Software Systems,
ICTSS 2021, 2022, pp. 141–147. doi:10.1007/978-3-031-04673-5_11.
[19] V. C. Lee, Y. T. Yu, C. M. Tang, T. L. Wong, C. K. Poon, ViDA: A virtual debugging advisor for
supporting learning in computer programming courses, Journal of Computer Assisted Learning
(2018) 243–258. doi:10.1111/jcal.12238.
[20] V. Shynkarenko, O. Zhevaho, Development of a toolkit for analyzing software debugging
processes using the constructive approach, Eastern-European Journal of Enterprise
Technologies (2020) 29–38. doi:10.15587/1729-4061.2020.215090.
[21] V. Shynkarenko, O. Zhevaho, Constructive modeling of the software development process for
modern code review. in: Proceedings of the 15th IEEE International Scientific and Technical
Conference on Computer Sciences and Information Technologies, CSIT, IEEE, Lviv-Zbarazh,
pp. 392–395, 2020. doi:10.1109/CSIT49958.2020.9322002.
[22] V. Shynkarenko, O. Zhevaho, Application of constructive modeling and process mining
approaches to the study of source code development in software engineering courses, Journal
of Communications Software and Systems (2021) 342–349. doi:10.24138/JCOMSS-2021-0046.
[23] V. Skalozub, V. Ilman, V. Shynkarenko, Ontological Support Formation for
ConstructiveSynthesizing Modeling of Information Systems Development Processes, Eastern-European
Journal of Enterprise Technologies (2018) 55–63. doi:10.15587/1729-4061.2018.143968.
[24] B. S. Alqadi, J. I. Maletic, An Empirical Study of Debugging Patterns Among Novices
Programmers, in: Proceedings of the 48th ACM SIGCSE Technical Symposium on Computer
Science Education, SIGCSE, ACM, Seattle, 2017, pp. 15–20. doi:10.1145/3017680.3017761.
[25] N. Alzahrani, F. Vahid, Common logic errors for programming learners: A three-decade
literature survey, in: Proceedings of the 2021 ASEE Virtual Annual Conference, ASEE, 2021.
doi:10.18260/1-2--36814.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Perscheid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Siegmund</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Taeumel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hirschfeld</surname>
          </string-name>
          ,
          <article-title>Studying the advancement in debugging practice of professional software developers</article-title>
          ,
          <source>Software Quality Journal</source>
          (
          <year>2017</year>
          )
          <fpage>83</fpage>
          -
          <lpage>110</lpage>
          . doi:
          <volume>10</volume>
          .1007/s11219-015-9294-2.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>T.</given-names>
            <surname>Michaeli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Romeike</surname>
          </string-name>
          ,
          <article-title>Improving debugging skills in the classroom: The effects of teaching a systematic debugging process</article-title>
          ,
          <source>in: Proceedings of the 14th Workshop in Primary and Secondary Computing Education, WiPSCE</source>
          , ACM, Glasgow,
          <year>2019</year>
          . doi:
          <volume>10</volume>
          .1145/3361721.3361724.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J. D.</given-names>
            <surname>Pinto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Paquette</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. X.</given-names>
            <surname>Fan</surname>
          </string-name>
          ,
          <article-title>Investigating the Relationship Between Programming Experience and Debugging Behaviors in an Introductory Computer Science Course</article-title>
          ,
          <source>in: Proceedings of the 5th International Conference on Quantitative Ethnography</source>
          ,
          <string-name>
            <surname>ICQE</surname>
          </string-name>
          , Melbourne,
          <year>2023</year>
          , pp.
          <fpage>125</fpage>
          -
          <lpage>139</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>031</fpage>
          -47014-
          <issue>1</issue>
          _
          <fpage>9</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>X.</given-names>
            <surname>Gao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. F.</given-names>
            <surname>Hew</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Flipped</given-names>
            <surname>Systematic</surname>
          </string-name>
          <article-title>Debugging Approach to Enhance Elementary Students' Program Debugging Performance and Optimize Cognitive Load</article-title>
          ,
          <source>Journal of Educational Computing Research</source>
          (
          <year>2023</year>
          )
          <fpage>1064</fpage>
          -
          <lpage>1095</lpage>
          . doi:
          <volume>10</volume>
          .1177/07356331221133560.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>C.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Chan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Denny</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Luxton-Reilly</surname>
          </string-name>
          , E. Tempero,
          <article-title>Towards a framework for teaching debugging</article-title>
          ,
          <source>in: Proceedings of the 21st Australasian Computing Education Conference</source>
          ,
          <string-name>
            <surname>ACE</surname>
          </string-name>
          , ACM, Sydney,
          <year>2019</year>
          , pp.
          <fpage>79</fpage>
          -
          <lpage>86</lpage>
          . doi:
          <volume>10</volume>
          .1145/3286960.3286970.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Böttcher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Thurner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Schlierkamp</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Zehetmeier</surname>
          </string-name>
          ,
          <article-title>Debugging students' debugging process</article-title>
          ,
          <source>in: Proceedings of the 46th Annual Frontiers in Education Conference</source>
          , FIE, IEEE, Erie,
          <year>2016</year>
          . doi:
          <volume>10</volume>
          .1109/FIE.
          <year>2016</year>
          .
          <volume>7757447</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Whalley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Settle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Luxton-Reilly</surname>
          </string-name>
          ,
          <article-title>Novice reflections on debugging</article-title>
          ,
          <source>in: Proceedings of the 52nd ACM Technical Symposium on Computer Science Education</source>
          ,
          <string-name>
            <surname>SIGCSE</surname>
          </string-name>
          , ACM,
          <year>2021</year>
          , pp.
          <fpage>73</fpage>
          -
          <lpage>79</lpage>
          . doi:
          <volume>10</volume>
          .1145/3408877.3432374.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>C. H.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. C.</given-names>
            <surname>Hsu</surname>
          </string-name>
          ,
          <article-title>Using a Hierarchical Clustering Algorithm to Explore the Relationship Between Students' Program Debugging and Learning Performance</article-title>
          ,
          <source>in: Proceedings of the 2024 Joint of International Conference on Learning Analytics and Knowledge Workshops, LAK-WS</source>
          <year>2024</year>
          ,
          <article-title>CEUR-WS</article-title>
          ,
          <year>Kyoto</year>
          ,
          <year>2024</year>
          , pp.
          <fpage>13</fpage>
          -
          <lpage>22</lpage>
          . URL: https://ceur-ws.
          <source>org/</source>
          Vol-3667/DC-LAK24-paper2.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Y. B.</given-names>
            <surname>Kafai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>DeLiema</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Fields</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Lewandowski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Lewis</surname>
          </string-name>
          ,
          <article-title>Rethinking debugging as productive failure for CS education</article-title>
          ,
          <source>in: Proceedings of the 50th ACM Technical Symposium on Computer Science Education</source>
          ,
          <string-name>
            <surname>SIGCSE</surname>
          </string-name>
          , ACM, Minneapolis,
          <year>2019</year>
          , pp.
          <fpage>169</fpage>
          -
          <lpage>170</lpage>
          . doi:
          <volume>10</volume>
          .1145/3287324.3287333.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Q.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Paquette</surname>
          </string-name>
          ,
          <article-title>Using submission log data to investigate novice programmers' employment of debugging strategies</article-title>
          ,
          <source>in: Proceedings of the 13th International Conference on Learning Analytics and Knowledge: Towards Trustworthy Learning Analytics, LAK</source>
          , ACM, Arlington,
          <year>2023</year>
          , pp.
          <fpage>637</fpage>
          -
          <lpage>643</lpage>
          . doi:
          <volume>10</volume>
          .1145/3576050.3576094.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>P.</given-names>
            <surname>Ardimento</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. L.</given-names>
            <surname>Bernardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Cimitile</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. D.</given-names>
            <surname>Ruvo</surname>
          </string-name>
          ,
          <article-title>Reusing bugged source code to support novice programmers in debugging tasks</article-title>
          ,
          <source>ACM Transactions on Computing Education</source>
          (
          <year>2019</year>
          )
          <volume>20</volume>
          (
          <issue>1</issue>
          ) 2. doi:
          <volume>10</volume>
          .1145/3355616.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Xue</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dong</surname>
          </string-name>
          ,
          <article-title>Feedback-based debugging</article-title>
          ,
          <source>in: Proceedings of the 39th IEEE/ACM International Conference on Software Engineering</source>
          ,
          <string-name>
            <given-names>ICSE</given-names>
            , IEEE,
            <surname>Buenos</surname>
          </string-name>
          <string-name>
            <surname>Aires</surname>
          </string-name>
          ,
          <year>2017</year>
          , pp.
          <fpage>393</fpage>
          -
          <lpage>403</lpage>
          . doi:
          <volume>10</volume>
          .1109/ICSE.
          <year>2017</year>
          .
          <volume>43</volume>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>