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.

Teaching systems are further divided into mechanics of programming and learning support. Learning<br />

support systems try to ease the process of learning to program through “basic educational supports such<br />

as progressions of projects that gradually introduce new concepts or ways for students to connect with<br />

and learn from each other”. Of more interest from my perspective are systems in the mechanics of<br />

programming category, which come in three varieties. First, systems for expressing programs attempt<br />

to make it easier for beginners to express instructions to the computer. Second, systems for structuring<br />

programs attempt to facilitate the organization of instructions by changing the language or programming<br />

paradigm (e.g., Pascal, Smalltalk) or by making existing programming languages or paradigms more<br />

accessible (e.g., BlueJ). And third, systems for understanding program execution attempt to help novices<br />

understand how such instructions are executed at runtime. It is systems in this last category that I intend<br />

to review.<br />

Kelleher and Pausch identify three ways in which systems try to help students to understand program<br />

execution. A system for tracking program execution visualizes what happens in memory during a program<br />

run. The actors-in-microworlds approach makes programming concrete by replacing a general-purpose<br />

programming language by a mini-language whose commands have a straightforward physical explanation<br />

in a virtual microworld. Finally, systems in the models of program execution category describe actions in<br />

a (general-purpose) programming language through metaphors and graphics, which “help students both<br />

to imagine the execution of their programs and perhaps more clearly understand why their programs do<br />

not perform as expected”.<br />

As my concern is with learning general-purpose languages – which all programming students eventually<br />

need to learn and which represent the mainstream of CS1 education – I will not cover the actors-inmicroworlds<br />

approach in detail. This leaves two subcategories, tracking program execution and models of<br />

program execution, both of which involve visualizations of program execution either as abstract graphics<br />

and text, or through metaphors. The line between these two subcategories is a vague one, and I will not<br />

attempt to pigeonhole systems in either of them.<br />

I make one more delimitation: I will focus on systems that are more or less generic in the sense that<br />

they can be used to illustrate a variety of programming language constructs and corresponding runtime<br />

phenomena. There are also many systems which attempt to tackle more specific problems by visualizing<br />

one or a few select programming concepts. I will not attempt to cover those here. (A few examples of<br />

such specific systems were mentioned in Section 10.3.)<br />

To summarize the above, this chapter contains a review of generic program visualization systems in<br />

which the execution of programs – written in a general-purpose language in a traditional non-visual way<br />

– is visualized onscreen in a manner suitable for novice programmers so that the system can be used to<br />

learn about program execution.<br />

Before turning to the actual systems, let us consider the ways in which learners may use a visualization.<br />

11.2 Engagement level may be key to the success of a visualization<br />

“They will look at it and learn” thought many an enthusiastic programming teacher while putting together<br />

a visualization. But it might take more than that. Petre (1995, p. 34) writes:<br />

In considering representations for programming, the concern is formalisms, not art – precision,<br />

not breadth of interpretation. The implicit model behind at least some of the claims that<br />

graphical representations are superior to textual ones is that the programmer takes in a<br />

program in the same way that a viewer takes in a painting: by standing in front of it and<br />

soaking it in, letting the eye wander from place to place, receiving a ‘gestalt’ impression of<br />

the whole. But one purpose of programs is to present information clearly and unambiguously.<br />

Effective use requires purposeful perusal, not the unfettered, wandering eye of the casual art<br />

viewer.<br />

The representational aspects of a visualization – its constituent parts and level of abstraction – are<br />

doubtless relevant to learning. In the lingo of the variation theory of learning (Section 7.3.2), these<br />

144

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

Saved successfully!

Ooh no, something went wrong!