Computer programmers must be able to understand programming source code and write programs that execute complex tasks to solve real-world problems. This article is a transdisciplinary study at the intersection of computer programming, education and psychology. It outlines the role of mental processes in the process of programming and indicates how successful thinking processes can support computer science students in writing correct and well-defined programs. A mixed methods approach was used to better understand the thinking activities and programming processes of participating students. Data collection involved both computer programs and students' reflective thinking processes recorded in their journals. This enabled analysis of psychological dimensions of participants' thinking processes and their problem-solving activities as they considered a programming problem. Findings indicate that the cognitive, reflective and psychological processes used by high-performing programmers contributed to their success in solving a complex programming problem. Based on the thinking processes of high performers, we propose a model of integrated thinking processes, which can support computer programming students.
Keywords:Computer programming, education, mixed methods research, thinking processes.
Disciplines:Computer programming, education, psychology.
IntroductionThe research described in this article lies at the intersection of computer programming, education and psychology. It is an inter-disciplinary study that investigates how the thinking processes and strategies used by high-performing student programmers foster the development of correct computer programs.The primary aim of a computer programmer is to write correct, high quality computer programs that solve real-world problems effectively and efficiently. A computer program is a human artefact comprising language-specific rules, formulated in the so-called source code of a particular programming language. This coded language communicates functionality that the computer hardware can 'understand'. By 'syntax' of a program, we refer to expressions, statements and program units, whereas 'semantics' refer to the meaning of those expressions, statements and program units (Sebesta, 2008). Syntax and semantics are closely related, and the specific way in which programming