Abstract
The avowed purpose of most programming courses is to teach problem solving as well as to teach programming. How this purpose can be achieved is the topic of the first part of this paper. Drawing on recent research examining the cognitive demands of programming and the behavior of programmers, a chain of cognitive accomplishments culminating in increased problem solving skill is described. Whether and how this purpose is being achieved is the topic of the second part of this paper. Results of an integrated set of studies of middle school programming classes show how students start on this chain and how far they progress in introductory courses. These studies illustrate how "exemplary" instruction moves students much further along the chain than does "typical" instruction. Examination of the background characteristics of students in these courses reveals that general ability and out-of-school computer access are more associated with progress along the chain in typical classes than in exemplary classes.
Get full access to this article
View all access options for this article.
