Programming is a highly demanding, meta-level task that involves the design of instructions to direct a computational device in performing functions that amplify or extend human potential in a wide variety of intellectual activities. An understanding of the cognitive underpinnings of computer programming as a human skill would have much to offer in augmenting our fundamental knowledge of general problem solving. Such awareness would also be of benefit in designing human-computer interfaces, programming languages and other software systems that are user-friendlier.
For over 30 years researchers have been attempting to unravel the underlying psychological processes of programming with varying degrees of success, yet few academic courses currently exist that specifically focus on a critical examination of these issues. (Incidentally, the 1998 version of the ACM Computing Reviews Classification Systems has rendered the keyword category "software psychology" as being obsolete.) The philosopher George Santayana once famously quipped that those who do not remember history are condemned to repeat it. Information Technology is a discipline guilty of living always in the present with one eye permanently fixed on the future, yet at the same time oblivious to the lessons of the past. This paper will offer a retrospective outline of the trials and tribulations faced in designing the curriculum for a short-lived new postgraduate level course dealing with the psychology of computer programming.
Details are of a parochial nature in terms of academic environment because the course was and arguably still is an oddity in terms of traditional university IT curricula. Vat (2000) describes the initial evolution and subsequent teaching experience of a junior core course entitled Software Psychology offered in an undergraduate Software Engineering program. However upon reflection the subject as outlined in the latter paper is a reinterpretation of a typical Human Computer Interaction (HCI) unit, though informed by a greater emphasis on cognitive psychology. The course described within this paper does not shy away from HCI issues as well but instead confronts them via the context of treating fluency in a programming language as being akin to the ultimate in user interface "technology".
The course of study in question was entitled "Behavioural Issues in Software Development" (BISD) - initially offered for the first and last time in Semester 2, 1993 - and was undertaken by postgraduate students as a coursework offering at Masters and Graduate Diploma level within the Department of Software Development at Monash University in Melbourne, Australia. Honours students (i.e. fourth-year level Bachelor's degree) also had the option of undertaking the subject. The course provided students with the opportunity to examine the theoretical and practical knowledge that has been amassed about the behavioural and organisational aspects of software development at that time. The emphasis was on providing a practical overview of the software engineering process from a psychological perspective. Classic empirical studies of critical issues in software development were analysed to inspire and guide students in designing and executing similar experimental activities in a novel vein.
The "birth" of the psychological research on computer programming can be traced to the seminal work of Sackman (1970). Focusing on time-sharing and batch-processing, the results and critical interpretations of new sets of experiments are described. Stylistic individuality in programmer behaviour is one topic alluded to in the latter text, which also recommends that an effort be made to establish a "scientific study of man-computer problem solving".
Weinberg (1971) was another milestone in the annals of software psychology, as it's also referred to. The central thrust of this text was a broad discussion of programming as an aspect of human performance, in terms of both an individual activity and a group activity. …