Communicating using Program Traces Chris McDonald Matthew Heinsen Egan Computer Science and Software Engineering Australian Centre for Geomechanics University of Western Australia University of Western Australia Crawley, WA 6009, Australia Crawley, WA 6009, Australia
[email protected] [email protected] ABSTRACT niques, but they are typically only supported by tools de- Supported by the growth of embedded devices, the IoT, and signed for expert programmers, rather than for novices. The modern standardization, C remains an important language complexity of these tools, and the time required to learn for undergraduate students. However, when presented to their use, at even a modest level, are often insurmount- relatively inexperienced programmers, its very limited run- able hurdles for novice students. Furthermore, while these time support is a source of frustration for both students and tools can be used to locate runtime errors, they do not as- educators, alike. sist novice programmers to understand those errors, or more SeeC is a novice-focused tool for the C programming lan- generally to understand the behaviour of their programs. guage that displays and records the execution of programs, Several novice-focused tools have implemented graphical detects runtime errors, and enables students to review their program visualizations and automatically generated expla- programs' data and execution history. Students can deter- nations of program behaviour. These features have been ministically replay a program, and reason backwards from shown to assist novice programmers with constructing knowl- a runtime error to determine its true cause. The approach edge and debugging programs in numerous evaluations, such can lead to students' reduced frustration and greater under- as those described by [1], [9], [2], and [5].