28.03.2014 Views

isbn9789526046266

isbn9789526046266

isbn9789526046266

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Chapter 14<br />

Visual Program Simulation Makes Sense<br />

In this chapter, I draw on the literature presented in Parts I to III to analyze visual program simulation and<br />

explain why it is a sensible pedagogical approach in the light of learning theory and empirical research.<br />

Throughout this chapter, I often refer to previous chapters and sections rather than directly to the<br />

original literature; the reader will find literature references in those chapters and sections.<br />

I have structured this chapter as follows. Section 14.1 establishes that VPS addresses important<br />

educational concerns. Section 14.2 considers the importance of reading code in CS1 and how VPS serves<br />

as a vehicle for learning to read code. In Section 14.3, I discuss the form of active learning that VPS<br />

promotes and how it fits in with the software visualization literature. Section 14.4 explains why and how<br />

a supporting software system is useful, if not critical to the success of VPS. Finally, Section 14.5 points<br />

out a few of the main weaknesses of visual program simulation.<br />

14.1 The literature widely highlights the importance of program<br />

dynamics<br />

Several strands of computing education research have suggested in different ways that a crucial challenge<br />

in introductory programming is learning to reason about the behavior of program code as it runs. It is<br />

this challenge that visual program simulation seeks to address.<br />

14.1.1 VPS targets improved mental representations of program dynamics<br />

In the psychology of programming literature, the challenge of program dynamics is sometimes phrased in<br />

terms of a notional machine – an abstraction of a computer as the executor of programs of a particular<br />

kind (Section 5.4). A notional machine implements the runtime semantics of programming language<br />

constructs and takes care of the ‘hidden’ processes that make programs work. The importance of learning<br />

about a notional machine has gained widespread agreement and empirical support in the literature, as<br />

Chapter 5 showed in some detail. Below, I summarize the arguments and relate them to visual program<br />

simulation.<br />

Mental models of a notional machine<br />

People form mental models of the systems that they interact with. For the novice programmer, one such<br />

system is the notional machine that the student learns to control as they learn to program (Chapter 5). A<br />

novice’s initial mental model of a notional machine is likely to be – typically of mental models in general<br />

– incomplete, unscientific, deficient, lacking in firm boundaries, and liable to change at any time. It may<br />

be based on guesswork that draws on superficial program characteristics such as keywords and identifiers.<br />

Despite these shortcomings, the learner may feel comfortable with the model and rely on it while developing<br />

behavioral patterns for programming. Novices may also use multiple, possibly contradictory models to<br />

deal with different situations.<br />

By contrast, experts’ mental models are more stable and accurate, and draw on general principles<br />

rather than superficial characteristics. Learning should facilitate the evolution of students’ models so<br />

that they have these features. Aiding mental model formation as early as possible is important, as<br />

212

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!