Misconception detection for teaching novice programmers

Andrew K Lui and Reggie Kwan
The Open University of Hong Kong
S C Li
Hong Kong Baptist University
Y H Y Cheung
Chinese University of Hong Kong
Hong Kong SAR, China


Misconceptions in computer programming, especially those associated with programming constructs, have attracted considerable interest in the literature. Programming misconceptions eventually cause errors in a program. In dealing with the conceptual challenges presented by programming constructs such as values, variables, and control structures, novice programmers tend to synthesize conceptions in an attempt to interpret various programming situations, and often these conceptions do not match the objective specification of the programming constructs. Programming constructs are laden with details and concepts, and because programming is exotic and far from daily human experience, it is difficult to develop a correct conception with each and every concept of programming constructs.

From the perspective of constructivism and the theories of conceptual change, misconceptions are not really a bad thing because they can be regarded as sources of learning opportunities rather than simply mistakes. The theories of conceptual change suggest that learning is recursively changing conceptions rather than acquisition of new facts, and that a rationalized learning process can be implemented to detect misconceptions and to facilitate conceptual changes. Each misconception becomes as a seed for conceptual change. Incorporating misconception detection and eradication in an introductory programming course has a significant implication to the instructional approach. The amount of instruction will be immense. Individualized instruction is required because students are almost certain to develop their own set of misconceptions due to variations in background. While a human tutor would have the best capability to customize the instruction according to individuals, the implication in cost may compel the development of alternative approaches such as intelligent tutoring systems.

This paper discusses the application of the theories of conceptual change to teach programming constructs as the first part of an introductory programming course. Various possible agents for misconception detection will be analysed, and an effective solution based on multiple-choice questions built into an intelligent tutoring system will be described. The paper will report trials on the students of an introductory C programming course at the Open University of Hong Kong, and it will describe the severity of misconceptions as revealed by the misconception detection method. Finally, the paper suggests intelligent tutoring applications for introductory programming based on the conceptual change approach.