The camel has two humps (working title)

Learning to program is notoriously dicult. A substantial minority of students fails in every introductory programming course in every UK university. Despite heroic academic eort, the proportion has increased rather than decreased over the years. Despite a great deal of research into teaching methods and student responses, we have no idea of the cause. It has long been suspected that some people have a natural aptitude for programming, but until now there has been no psychological test which could detect it. Programming ability is not known to be correlated with age, with sex, or with educational attainment; nor has it been found to be correlated with any of the aptitudes measured in conventional ‘intelligence’ or ‘problem-solving-ability’ tests. We have found a test for programming aptitude, of which we give details. We can predict success or failure even before students have had any contact with any programming language with very high accuracy, and by testing with the same instrument after a few weeks of exposure, with extreme accuracy. We present experimental evidence to support our claim. We point out that programming teaching is useless for those who are bound to fail and pointless for those who are certain to succeed.

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

[2]  Françoise Détienne Difficulties in designing with an object-oriented language: An empirical study , 1990, INTERACT.

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

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

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

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

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

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

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

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

[11]  M. Linn,et al.  Cognitive consequences of Programming Instruction: Instruction, Access, and Ability , 1985 .

[12]  P. Johnson-Laird,et al.  PSYCHOLOGICAL SCIENCE Research Article HOW DIAGRAMS CAN IMPROVE REASONING , 2022 .

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

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

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

[16]  Mark Guzdial,et al.  A multi-national, multi-institutional study of assessment of programming skills of first-year CS students , 2001, ITiCSE-WGR '01.

[17]  Peter Brusilovsky,et al.  Teaching Programming to Novices: A Review of Approaches and Tools. , 1994 .

[18]  Kosta Dosen,et al.  Models of Deduction* , 2006, Synthese.

[19]  Robert McCartney,et al.  A multi-national study of reading and tracing skills in novice programmers , 2004, ITiCSE-WGR '04.

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

[21]  P. Johnson-Laird Mental models , 1989 .

[22]  Benedict du Boulay,et al.  Some Difficulties of Learning to Program , 1986 .

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

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

[25]  Margaret Hamilton,et al.  Predictors of success in a first programming course , 2006 .

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

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

[28]  Colin Smith,et al.  A constructivist learning environment implemented in Java , 1998, ITiCSE '98.

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

[30]  P. Johnson-Laird,et al.  The psychology of syllogisms , 1978, Cognitive Psychology.

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

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

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

[34]  P. Johnson-Laird,et al.  Psychology of Reasoning: Structure and Content , 1972 .

[35]  B. Adelson,et al.  The Role of Domain Expenence in Software Design , 1985, IEEE Transactions on Software Engineering.

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

[37]  Philip N. Johnson-Laird,et al.  Thinking and Reasoning , 1968, Companion Encyclopedia of Psychology.

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

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

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