Why do people have trouble learning to program__ __ This dissertation presents a theory of novice programming bugs motivated by interviews where novice programmers solved simple programming problems. Novice programming knowledge is represented in two components. Fragments of pragmatic programming knowledge (PK) describe the expert programming knowledge that a novice has acquired. Step-by-step Natural Language procedural knowledge (SSK) describes the experience a novice brings to programming from Natural Language. These two knowledge bases are tied together by functional and surface parallels. PK and SSK are represented by Plans: frame-like bundles of knowledge about the pragmatic features of programming.
When a novice is programming and encounters a gap or inconsistency in the PK, he or she has reached an impasse. The theory proposes bug generators as strategies for patching the impasse and continue developing a solution. Usually this patch introduces a bug. Three types of bug generators are discussed. SSK/PK bug generators use SSK knowledge to patch an impasse, exploiting functional and surface parallels to convert a PK impasse into a problem in SSK, the better known domain. With Intra-PK bug generators, novices rely on interconnections between fragments of PK to patch an impasse. Other/PK bug generators use other knowledge, from algebra, for example, to patch an impasse.
The theory is evaluated based on interviews of novice programmers working on Pascal programming problems. A key set of predictions from the theory are formulated and a two part method to analyze the protocol data is described. The plan analysis describes the plans being used by the novice. The bug analysis interprets each bug in terms of all plausible bug generators. An entire analyzed protocol is shown. Based on that and three other protocols, the predictions of the theory are evaluated. Also, that analysis is used to comment on general patterns of plan usage and bug generator coverage.
The dissertation concludes by summarizing what has been accomplished, the implications of the work, and future directions for the work. A plan-based novice programming environment and tutor is described as a natural extension of this work.
Cited By
Recommendations
An expert system for debugging novice programmers' pascal programs
CSC '89: Proceedings of the 17th conference on ACM Annual Computer Science ConferenceTo better understand the analysis process used in developing expert systems, i.e. knowledge engineering, we have undertaken the creation of a relatively large expert system. This expert system will aid students in locating and correcting errors in their ...
Use of problem-solving approach to teach scratch programming for adult novice programmers (abstract only)
SIGCSE '14: Proceedings of the 45th ACM technical symposium on Computer science educationNovice programmers usually fail to combine abstract concepts and knowledge into program design, even though they know the syntax and semantics of individual statement. Adult novice programmers with little computer background knowledge might face more ...
Embedable Problem-Solving Architectures: A Study of Integrating OPS5 with UMass GBB
The requirements of a problem-solving architecture that can be tightly embedded within other architectures and coexist with multiple instances of itself and of other problem-solvers are discussed. The additional effort needed to produce an embedable ...