A cognitive study of learning to program in introductory programming courses

Programming is notoriously hard for novices to learn and a substantial number of learners fail in introduction to programming courses. It is not just a UK problem: a number of multi-institutional and multi-national studies reveal that the problem is well-known and is widespread. There is no general agreement about the causes or the remedies. The major factors which can be hypothesised as a cause of this phenomenon are: learners' psychology; teaching methods; complexity of programming. In this study, learners' common mistakes, bugs, misconceptions, frequencies and type of errors (syntactic and semantic) in the early stages of learning programming were studied. Noticing the patterns of rationales behind novices' mistakes swayed the study toward investigating novices' mental ability which was found to have a great effect on their learning performance. It was observed that novices reported a recognisable set of models of program execution each of which was logically acceptable as a possible answer and it appeared that some students even used these models systematically. It was suspected that the intellectual strategies behind their reasoning could have been built up from their programming background knowledge and it was surprising when it was found that some of those novices had not even seen a program before. A diagnostic questionnaire was designed that apparently examined a student's understanding of assignments and sequence but in fact was capturing the reasoning strategy behind their interpretation of each question, regardless of a correct or wrong answer. The questionnaire was administered in the first week of an introductory programming course, without giving any explanation of what the questions were about. A full response from most participants was received, despite the fact that the questions were unexplained. Confronted with a simple program, about half of novices seem to spontaneously invent and consistently apply a mental model of program execution. They were called the consistent subgroup. The other half are either unable to build a model or to apply one consistently. They were called the inconsistent subgroup. The first group perform very much better in their end-of-course examination than the rest. Meta-analysis of the results of six experiments in UK and Australia confirmed a strong effect of consistency on success which is highly significant (p < 0:001). A strong eect persisted in every group of candidates, sliced by background factors of programming experience (with/ without), relevant programming experience(with/without), and prior programming course (with/without) which might be thought to have had an effect on success. This result confirms that consistency is not simply provided by prior programming background. Despite the tendency in institutions to rely on students' prior programming background as a positive predictor for success, this study revealed that prior programming education did not have a noticeable eect on novices' success. A weak positive eect of prior programming experience was observed overall which appeared to be driven by one experiment with a programming-skilful population. This study shows that students in the consistent subgroup have the ability to build a mental model, something that follows rules like a mechanical construct. It also seems that when programming skill is measured by a weak assessment mechanism, the eect of consistency on success is reduced.

[1]  Elliot Soloway,et al.  Uncovering principles of novice programming , 1983, POPL '83.

[2]  Thomas Green Instructions and descriptions: some cognitive aspects of programming and similar activities , 2000, AVI '00.

[3]  Benedict duBoulay,et al.  Some Difficulties of Learning to Program , 1986 .

[4]  N. Pennington Stimulus structures and mental representations in expert comprehension of computer programs , 1987, Cognitive Psychology.

[5]  Renee Hobbs,et al.  Conditions of Learning in Novice Programmers , 1986 .

[6]  Henry Neeman,et al.  Analogies for teaching parallel computing to inexperienced programmers , 2006, ITiCSE-WGR '06.

[7]  William J. Klinger Stanislavski and computer science , 2005, SGCS.

[8]  Richard Bernat,et al.  Programming from first principles , 1987 .

[9]  W. H. F. Barnes The Nature of Explanation , 1944, Nature.

[10]  Saeed Dehnadi,et al.  Testing Programming Aptitude , 2006, PPIG.

[11]  Leon E. Winslow,et al.  Programming pedagogy—a psychological overview , 1996, SGCS.

[12]  Richard E. Mayer,et al.  BASIC versus natural language: is there one underlying comprehension process? , 1985, CHI '85.

[13]  Konstantin Stanislavsky,et al.  An Actor Prepares , 1936 .

[14]  Maarten van Someren,et al.  What's wrong? Understanding beginners' problems with Prolog , 1990 .

[15]  Derek H. Sleeman,et al.  A Summary of Misconceptions of High School Basic Programmers , 1984 .

[16]  R. Mayer Thinking, Problem Solving, Cognition , 1983 .

[17]  R. Felder,et al.  Learning and Teaching Styles in Engineering Education. , 1988 .

[18]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[19]  Leah P. McCoy Literature Relating Critical Skills for Problem Solving in Mathematics and in Computer Programming , 1990 .

[20]  Kirsti Ala-Mutka,et al.  A study of the difficulties of novice programmers , 2005, ITiCSE '05.

[21]  Michael Kölling,et al.  Objects first with Java and BlueJ (seminar session) , 2000, SIGCSE '00.

[22]  Tom Boyle,et al.  The CORE guided discovery approach to acquiring programming skills , 1992 .

[23]  Brenda Cantwell Wilson,et al.  Contributing to success in an introductory computer science course: a study of twelve factors , 2001, SIGCSE '01.

[24]  Jens Bennedsen,et al.  Abstraction ability as an indicator of success for learning object-oriented programming? , 2006, SGCS.

[25]  M ReckerMimi,et al.  A concept-first approach for an introductory computer science course , 2002 .

[26]  Rocky Ross,et al.  Mental models , 2004, SIGA.

[27]  Elliot Soloway,et al.  Preprogramming Knowledge: A Major Source of Misconceptions in Novice Programmers , 1985, Hum. Comput. Interact..

[28]  Tom Boyle,et al.  Structured learning in a virtual environment , 1996, Comput. Educ..

[29]  Richard E. Mayer,et al.  A diagnosis of beginning programmers' misconceptions of BASIC programming statements , 1983, Commun. ACM.

[30]  A. J. Biamonte A study of the effect of attitudes on the learning of computer programming , 1965, SIGCPR '65.

[31]  Peter Robinson,et al.  Cognitive models of programming-like activity , 2002, CHI Extended Abstracts.

[32]  Alexander Quinn An interrogative approach to novice programming , 2002, Proceedings IEEE 2002 Symposia on Human Centric Computing Languages and Environments.

[33]  Stuart Wray,et al.  SQ Minus EQ can Predict Programming Aptitude , 2007, PPIG.

[34]  Janet Rountree,et al.  Interacting factors that predict success and failure in a CS1 course , 2004, ITiCSE-WGR '04.

[35]  J. E. Sammet,et al.  Software psychology: human factors in computer and information systems , 1983, SGCH.

[36]  Ben Shneiderman,et al.  When Children Learn Programming: Antecedents, Concepts and Outcomes , 1985 .

[37]  Kim B. Bruce,et al.  Events and objects first: an innovative approach to teaching JAVA in CS 1 , 2001 .

[38]  Elliot Soloway,et al.  Novice mistakes: are the folk wisdoms correct? , 1986, CACM.

[39]  P. Johnson-Laird Comprehension as the Construction of Mental Models , 1981 .

[40]  Philip N. Johnson-Laird,et al.  A Model Theory of Modal Reasoning , 1998, Cogn. Sci..

[41]  Linda Kathryn McIver Syntactic and semantic issues in introductory programming education , 2001 .

[42]  Edward M. Cross The behavioral styles of computer programmers , 1970, SIGCPR '70.

[43]  John R. Anderson,et al.  Learning Flow of Control: Recursive and Iterative Procedures , 1986, Hum. Comput. Interact..

[44]  M. Braine,et al.  A Theory of If: A Lexical Entry, Reasoning Program, and Pragmatic Principles , 1991 .

[45]  Claire Bradley,et al.  Designing and evaluating learning objects for introductory programming education , 2003, ITiCSE.

[46]  Kam Hou Vat Teaching Software Psychology: expanding the perspective , 2000, SIGCSE '00.

[47]  Elliot Soloway,et al.  Studying the Novice Programmer , 1988 .

[48]  Kasper Green Larsen,et al.  Mental models and programming aptitude , 2007, ITiCSE '07.

[49]  S. Baron-Cohen,et al.  The Autism-Spectrum Quotient (AQ): Evidence from Asperger Syndrome/High-Functioning Autism, Malesand Females, Scientists and Mathematicians , 2001, Journal of autism and developmental disorders.

[50]  Bruria Haberman,et al.  Activating “black boxes” instead of opening “zipper” - a method of teaching novices basic CS concepts , 2001, ITiCSE '01.

[51]  Thomas T Hewett,et al.  An undergraduate course in software psychology , 1987, SGCH.

[52]  Kenneth J. Goldman A concepts-first introduction to computer science , 2004, SIGCSE '04.

[53]  Michael Kölling,et al.  Objects First with Java - A Practical Introduction Using BlueJ (5th Edition) , 2002 .

[54]  David B. Mayer,et al.  Selection and evaluation of computer personnel- the research history of SIG/CPR , 1968, ACM National Conference.

[55]  José J. Cañas,et al.  Mental models and computer programming , 1994, Int. J. Hum. Comput. Stud..

[56]  Margaret Hamilton,et al.  Approaches to learning in computer programming students and their effect on success , 2005 .

[57]  Elena Giannotti,et al.  Algorithm animator: a tool for programming learning , 1987, SIGCSE '87.

[58]  Leah P. McCoy,et al.  The relationship of computer programming and mathematics in secondary students , 1987 .

[59]  Markku Tukiainen,et al.  Programming Aptitude Testing as a Prediction of Learning to Program , 2002, PPIG.

[60]  Haider Ali Ramadhan,et al.  An intelligent discovery programming system , 1992, SAC '92.

[61]  Robert L. Mason,et al.  Statistical Principles in Experimental Design , 2003 .

[62]  David E. Kieras,et al.  The Role of a Mental Model in Learning to Operate a Device , 1990, Cogn. Sci..

[63]  Tony Clear,et al.  Multi-institutional, multi-national studies in CSEd Research: some design considerations and trade-offs , 2005, ICER '05.

[64]  Randy F. Pausch,et al.  Teaching objects-first in introductory computer science , 2003, SIGCSE.

[65]  Zhixiong Chen,et al.  Experiences with Eclipse IDE in programming courses , 2005 .

[66]  Simon Baron-Cohen,et al.  The systemizing quotient: an investigation of adults with Asperger syndrome or high-functioning autism, and normal sex differences. , 2003, Philosophical transactions of the Royal Society of London. Series B, Biological sciences.

[67]  Catherine M. Beise,et al.  An Examination of Age, Race, and Sex as Predictors of Success in the First Programming Course , 2003 .

[68]  T. C. Willoughby Review of "Aptitude testing for employment in computer jobs by Penney, G." in Computers in education, O. Lecarme and R. Lewis (Eds.), IFIP, North-Holland/American Elsevier Publ. Co., New York, 1975, 425-428 , 1978, CPRS.

[69]  Ray Lischner Explorations: structured labs for first-time programmers , 2001, SIGCSE '01.

[70]  Richard E. Mayer,et al.  The Psychology of How Novices Learn Computer Programming , 1981, CSUR.

[71]  John S. Murnane The psychology of computer languages for introductory programming courses , 1993 .

[72]  Jens Bennedsen,et al.  Abstraction ability as an indicator of success for learning computing science? , 2008, ICER '08.

[73]  Tom Boyle,et al.  Taking the plunge with CLEM: the design and evaluation of a large scale CAL system , 1994 .

[74]  Stephen Edwards,et al.  IDE Support for test-driven development and automated grading in both Java and C++ , 2005, eclipse '05.

[75]  Christine L. Borgman Why do some people have more difficulty learning to use an information retrieval system than others? , 1987, SIGIR '87.

[76]  Mary Beth Rosson,et al.  The effects of individual differences on CS2 course performance across universities , 2005 .

[77]  Susan Wiedenbeck,et al.  Development and Validation of Scores on a Computer Programming Self-Efficacy Scale and Group Analyses of Novice Programmer Self-Efficacy , 1998 .

[78]  David N. Perkins,et al.  Patterns of Misunderstanding: An Integrative Model for Science, Math, and Programming , 1988 .

[79]  Ray Jones,et al.  IMPROVING PASS RATES IN INTRODUCTORY PROGRAMMING , 2003 .