T. Warms

Penn State University Abington College (UNITED STATES)
A graphical technique has been developed for tracing the execution of computer programs, which has proved useful in the teaching of courses in the first two years of the computer science curriculum. According to the method, the student writes down in a specified manner the result of the computer carrying out each of the executable statements in a program. While tracing any program statement in this formal system, the results of executing previous statements are always available.

There are notations, for example, for statements that transfer control to other functions using call-by-value or call-by-reference, for decision structures, the various loop structures, and arrays.

The method has been shown to be potentially useful in explaining the execution of certain computer programs, particularly ones which students tend to write incorrectly (Warms, T. M., "The Semantics of Tracing: Transitivity of Reference," Proceedings of FECS'07 — The 2007 International Conference on Frontiers in Education: Computer Science and Computer Engineering, Las Vegas, June 2007, pp. 302 – 307).

A computer implementation of the tracing system for the C++ language, called RandomLinearizer, was developed, and a paper was published that explores the role that this software can play in introductory computer science courses (T. M. Warms, "Using the tracing method and RandomLinearizer for Teaching C++," in Proceedings of the FECS'10 — The 2010 International Conference on Frontiers in Education: Computer Science and Computer Engineering, Las Vegas, NV, July 2010, pp. 16-22).

A paper (Warms, T. M. Q. Duan and K. Farvardin, 2011. “Can Using a Formal System For Tracing Computer Programs Help Students Learn Introductory Computer Science?,” Technology Interface International Journal — Fall/Winter 2011, 12:1, 30-35), describing the results of a small-scale classroom test of the hardware, was also published.

In this presentation the method and the software are demonstrated. The particular way in which they can be useful in teaching each of the major topics of the introductory sequence of courses in C++ is illustrated. The programs and segments of programs that are available in the software to match the topics are shown—for example, the execution of various sorting and searching methods. The software is also extensible: the method is presented by which traces of additional programs or segments can be prepared.

Goldman (Goldman, K.,Gross, et al, 2008. Identifying important and difficult concepts in introductory computing courses using a Delphi process. In Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education, Portland, OR), used a Delphi process to identify "key topics in introductory courses that are both important and difficult for students to learn." Parameter Scope, use in design; inheritance; recursion, tracing and designing are among the top 11 topics using the paper's rating system. The present paper shows how the tracing method can aid students' understanding of many of these topics.
As the method is often compared with debugging techniques, the ways in which tracing and debugging differ, as well as how they can be considered complementary methods, are explored. The paper shows that tracing provide a framework in which the student can organize and understand the output of debuggers.

Strategies for using tracing in the classroom situation will be discussed.