28.03.2014 Views

isbn9789526046266

isbn9789526046266

isbn9789526046266

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

It suggests that the growth of expertise is marked not by adding top-down strategies to one’s arsenal,<br />

as has sometimes been assumed, but by being able to use top-down strategies as a result of growing<br />

familiarity with problem types and their solutions. Furthermore, Rist’s theory explains other researchers’<br />

findings that suggest that expert programmers spend significant amounts of time on analyzing problem<br />

descriptions and planning what to do while novices tend to rush to concrete code and make local changes<br />

rather than work on the big picture (Adelson and Soloway, 1985; Linn and Dalbey, 1985; Robins et al.,<br />

2003, and references therein). It is worthwhile for experts to spend time on figuring out which schemas<br />

to apply, but novices’ lack of schemas forces them to work bottom-up from a low abstraction level.<br />

Variable-related schemas and roles of variables<br />

Many plan schemas in programming are related to the use of variables. For instance, a simple programming<br />

schema serves to explain the use of variables as counters whose values start at zero and are then repeatedly<br />

incremented by one. Commonly, the ways in which a variable is used in a program are not defined by<br />

a single line of code or even by consecutive lines; references to each variable are spread throughout<br />

the program code. In the terminology of Letovsky and Soloway (1986), the plan for such a variable is<br />

delocalized. Delocalization of a plan increases the cognitive load of a programmer trying to comprehend<br />

it, since multiple separate units have to be kept in working memory simultaneously in order to figure out<br />

the plan (more on cognitive load in Section 4.5 below). Novice programmers may find this cognitive load<br />

very difficult to cope with.<br />

Attempts to clarify delocalized plans have included documentation (Soloway et al., 1988b), software<br />

tools (Sajaniemi and Niemeläinen, 1989), and techniques that make plans explicit. An example of the<br />

latter line of work is that of Sajaniemi (2002) who studied the nature of variable-related plan schemas.<br />

He proposed a set of roles of variables, which capture stereotypical patterns of variable use; an example<br />

is the ‘most-wanted holder’, which stores a value that best matches a particular criterion amongst a<br />

number of candidates (e.g., the largest integer encountered so far in a loop). Sajaniemi concluded<br />

that 99% of the variables used in novice-level programs can be described using a small set of roles.<br />

He further showed that his role set can be identified in expert programmers’ thinking and therefore<br />

can be said to be an explication of experts’ tacit schematic knowledge (Sajaniemi and Navarro Prieto,<br />

2005). Byckling and Sajaniemi (2006a,b) found that role-based teaching makes a difference to novice<br />

programmers’ programming strategy: students taught using the roles of variables tended to use forwarddevelopment<br />

more than students taught in a more traditional way, suggesting an improvement in schema<br />

formation.<br />

What about pedagogy?<br />

The literature on programming strategies suggests that the formation of problem-solving schemas is a<br />

key challenge of programming education. Novice programmers need to form schemas at multiple levels<br />

of abstraction, from the basic building blocks to increasingly complex abstractions that ‘put the pieces<br />

together’. It is through an improving knowledge base of schemas that the novice gradually becomes able<br />

to employ more sophisticated strategies and work on programs in an increasingly top-down, forwarddeveloping<br />

way.<br />

It has been suggested that novices’ programming strategy can depend on the tools used; Meerbaum-<br />

Salant et al. (2011) report that Scratch – a visual programming environment for beginners (MIT Media<br />

Lab, n.d.) – fosters an extremely bottom-up approach to program writing in which novices put visual<br />

code components together with barely a thought for the big picture. On the other hand, Hu et al. (2012)<br />

report positive results from a pedagogical reform in which students were taught to explicitly analyze goals<br />

and form and merge plans in Scratch programs.<br />

Many schema-theory-based recommendations for CS1 pedagogy call for plan schemas to be made<br />

explicit in instruction. The roles of variables, mentioned above, are one concrete initiative; for more,<br />

see Chapter 10 on CS1 teaching strategies. The importance of lower-level schemas of particular kinds of<br />

statements and expressions should not be underestimated either; I will return to this point in Section 5.6<br />

below.<br />

The implications of schema theory have been expounded on by cognitive load theory, discussed next.<br />

42

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

Saved successfully!

Ooh no, something went wrong!