APT : A principled design for an animated view of program execution for novice programmers.
This thesis is concerned with the principled design of a computational
environment which depicts an animated view of program execution for novice
programmers. We assert that a principled animated view of program execution
should benefit novice programmers by: (i) helping students conceptualize what is
happening when programs are executed; (ii) simplifying debugging through the
presentation of bugs in a manner which the novice will understand; (iii) reducing
program development time.
The design is based on principles which have been extracted from three areas: (i)
the problems that novices encounter when learning a programming language; (ii) the
general design principles for computer systems; and (iii) systems which present a
view of program execution.
The design principles have been embodied in three 'canned stepper displays for
Prolog, Lisp and 6502 Assembler. These prototypes, called APT-0 (Animated
Program Tracer), demonstrate that the design principles can be broadly applied to
procedural and declarative; low and high level languages. Protocol data was collected
from subjects using the prototypes in order to check the direction of the research and
to suggest improvements in the design. These improvements have been incorporated
in a real implementation of APT for Prolog.
This principled approach embodied by APT provides two important facilities
which have previously not been available, firstly a means of demonstrating dynamic
programming concepts such as variable binding, recursion, and backtracking, and
secondly a debugging tool which allows novices to step through their own code
watching the virtual machine in action. This moves towards simplifying the novice's
debugging environment by supplying program execution information in a form that
the novice can easily assimilate.
An experiment into the misconceptions novices hold concerning the execution of
Prolog programs shows that the order of database search, and the concepts of variable
binding, unification and backtracking are poorly understood. A further experiment
was conducted which looked at the effect that APT had on the ability of novice Prolog
programmers to understand the execution of Prolog programs. This demonstrated
that the performance of subjects significantly increased after being shown
demonstrations of the execution of Prolog programs on APT, while the control group
who saw no demonstration showed no improvement.
The experimental evidence demonstrates the potential of APT, and the principled
approach which it embodies, to communicate run-time information to novice
programmers, increasing their understanding of the dynamic aspects of the Prolog
APT, uses an object centred representation, is built on top of a Prolog interpreter and
environment, and is implemented in Common Lisp and Zeta Lisp and runs on the
Symbolics 3600 range of machines.