Abstract

Introduction Learning to program is not easy. Recent experimental studies into students' programming ability have shown that university students in many countries have similar difficulties in writing (McCracken et al., 2001), tracing (Lister et al., 2004), and designing (Eckerdal, McCartney, Mostrom, Ratcliffe, & Zander, 2006) programs. The emergence of the expert programmer from the novice is a process that involves the formation of multiple mental models, deep and interlinked knowledge hierarchies, and abstract, generalized problem-solving patterns (Winslow, 1996). As programming instructors, our job is to initiate and facilitate this process. In this paper, we look at one tool--roles of variables--which may help us with this task. Schemas An expert solves problems fluently and fast and possesses domain-specific problem-solving strategies. A novice is uncoordinated and slow and commonly resorts to generic problem-solving strategies, such as trial-and-error and means-ends analysis. What is a complex problem for the novice may be for the expert merely a task with a familiar solution pattern. One explanation for this difference is suggested by schema theory. Schema theory argues that people bundle similar experiences into cognitive constructs called schemas. Schemas are abstractions of concrete cases of experience and have a crucial role in the way people store, organize, and understand information. A schema can be triggered and brought to bear--consciously or unconsciously--in new problem-solving situations similar to previously encountered ones. The importance of schemas, sometimes called plans, has been explored in many fields, including computer programming. (See e.g. Adelson, 1981; Chi, Glaser, & Rees, 1982; Detienne, 1990; Fix, Wiedenbeck, & Scholtz, 1993; Rist, 1989; Soloway & Ehrlich, 1984; Sweller & Levine, 1982.) For instance, say a student has encountered examples of (a) sequentially searching an array for the smallest integer, and (b) searching a linked list of Movie objects for the movie with the highest gross income. With enough practice and reflection, encountering such concrete cases contributes towards the eventual formation of a schema for sequential searching, which can be applied to similar problems. An expert has many schemas that accommodate various kinds of scenarios he or she is likely to encounter. A novice, lacking these schemas, flounders. Cognitive Load Human working memory is very limited in capacity (Baddeley, 1994), and a novice's working memory resources are greatly taxed by problem-solving situations such as programming. Novice students of programming are commonly asked to complete assignments that require understanding of multiple interacting program components, algorithmic design, the sometimes less-than-obvious program syntax, language semantics, and the notional machine (Du Boulay, 1986). In addition, they may need to use an integrated development environment or similar tools, or to apply third-party libraries in their programs. As the novice juggles all these new concepts in their working memory, it is burdened with a high cognitive load. Excessive cognitive load hinders meaningful learning and schema formation (see e.g. Paas, Renkl, & Sweller, 2003; Tuovinen, 2000). Schemas combine related bits of knowledge into larger chunks, which can be brought to working memory and processed as a single entity. Sequential searching through a collection of elements, for instance, eventually becomes a single chunk of knowledge whose details do not need to be kept in working memory. With experience, a learner becomes increasingly familiar with common schemas. As this happens, triggering such schemas becomes increasingly unconscious and automatic, further lessening the strain on working memory. Pedagogical Implications If schemas play a crucial part in turning a novice into an expert, then it is crucial that we help our students construct them. …

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call