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.

are “somewhat contrary to the classic work of Spohrer and Soloway”: students are sometimes able to<br />

create buggy template-based (schema-based) code, but do not necessarily understand the code that they<br />

themselves produce, and cannot trace its execution to fix the bugs (Thomas et al., 2004).<br />

Overall, recent research does not disagree with Spohrer and Soloway’s identification of problem-solving<br />

schemas as important, but does emphasize that lower-level issues are also worthy of attention.<br />

Garner, Haden, and Robins categorized the problems that CS1 students needed help with in class and<br />

examined the resulting distributions (Garner et al., 2005; Robins et al., 2006). Many of the problems had<br />

to do with program design, but many also involved various construct-related issues. Trivial mechanical<br />

problems (e.g., missing semicolons) were also common. The distribution pattern was similar across course<br />

offerings; high-, medium-, and low-achieving students also all exhibited similar patterns. Fitzgerald et al.<br />

(2008) report that novice programmers with 15 to 20 weeks of programming experience behind them<br />

had more trouble finding non-construct-related bugs than construct-related ones. Ko and Myers (2005)<br />

presented a framework for analyzing the causes of software errors; applying it, they found that many bugs<br />

were rooted in cognitive difficulties with particular language constructs, although other causes of difficulty<br />

were common as well. Denny et al. (2011) demonstrated that novices have great trouble in producing even<br />

small programs that are syntactically correct. McCauley et al. (2008) point out that construct-related<br />

bugs feature even in a revered pedant’s classification of the bugs in TeX (Knuth, 1989).<br />

Drawing on the BRACElet studies (Chapter 3), Lister (2011b,c) has recently emphasized that although<br />

struggles with syntax initially contribute to students’ cognitive load – and are important to address –<br />

the great cognitive load inherent in program writing remains a major concern even when those earliest<br />

problems have been overcome. Kranch (2011) studied novice programmers taught using three different<br />

topic sequencings, including one that started with higher-level schemas before moving to their elements,<br />

and one that did the opposite. He found that irrespective of ordering, the higher-level schemas were<br />

always the most difficult topic (both in terms of achievement and student-given difficulty ratings), a<br />

finding that he attributes to higher intrinsic cognitive load. Kranch argues that novices should be given<br />

ample opportunity to practice lower-level fundamentals before they are taught higher-level schemas.<br />

The studies from the 1980s that pointed to the relatively minor importance of misconceptions used<br />

simple imperative programs. It is not obvious to what extent the findings are generalizable to objectoriented<br />

programming, which has brought a slew of new concepts and misconceptions into many CS1<br />

courses. Many OOP misconceptions are about the fundamental nature of pivotal concepts such as object<br />

and class (see Appendix A).<br />

Conclusion: they all matter<br />

My conclusion from the literature is that all five challenges – cognitive load, plan schemas, misconceptions,<br />

tracing skills, and notional machines – are significant. Furthermore, none of these challenges is independent<br />

of the others. Of particular interest to the present work is the fact that the other four challenges appear<br />

to be affected by the fifth: the novice’s ability to understand the notional machine. Understanding the<br />

role of the machine in program execution:<br />

• prevents and corrects numerous misconceptions;<br />

• serves as a basis for the formation of low-level schemas which in turn form the basis for the successful<br />

formation and application of higher-level ones;<br />

• thereby indirectly reduces cognitive load as one is able to rely on increasingly complex problemsolving<br />

schemas, and<br />

• is key to the skill of tracing programs, which is useful in both program authoring and comprehension<br />

and in finding bugs whether they be misconception-related or the results of high-level schema<br />

failures.<br />

The notional machine is not a singular bottleneck responsible for students’ struggles, but it does appear<br />

to be one of several main sources of difficulty.<br />

70

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

Saved successfully!

Ooh no, something went wrong!