The Demands and Requirements of Computer Programming: A Literature Review

This review discusses recent literature on computer programming. It focuses on psychological studies of programming and selected issues related to instruction in programming. The purpose is to inform computer educators about the nature of the cognitive processes involved in programming, and the potential benefits to be gained from learning programming. Concerns relevant to pre-college students of programming are emphasized. The literature reviewed includes empirical studies of programming, rational analyses of the programming task by computer scientists, and expository essays by educators and psychologists. The literature is presented to illuminate three major issues: 1) what are the cognitive demands of programming and what are the possible cognitive outcomes? 2) how does instruction influence learning? 3) who benefits, and in what ways, from instruction?

[1]  Elliot Soloway,et al.  DOES COMPUTER PROGRAMMING ENHANCE PROBLEM SOLVING ABILITY? SOME POSITIVE EVIDENCE ON ALGEBRA WORD PROBLEMS , 1982 .

[2]  Bill Curtis,et al.  Factors Affecting Programmer Performance in a Debugging Task. , 1979 .

[3]  Kate Ehrlich,et al.  An empirical investigation of the tacit plan knowledge in programming , 1984 .

[4]  Mark L. Miller,et al.  Structured Planning and Debugging: A Linguistic Theory of Design. AI Memo 387. , 1976 .

[5]  Allen Newell,et al.  Computer text-editing: An information-processing analysis of a routine cognitive skill , 1980, Cognitive Psychology.

[6]  Harald Wertz Some ideas on the educational use of computers , 1981, ACM '81.

[7]  Arthur Luehrmann,et al.  Computer Literacy: A Hands-On Approach , 1983 .

[8]  Jean-Michel Hoc Role of Mental Representation in Learning a Programming Language , 1977, Int. J. Man Mach. Stud..

[9]  Aaas News,et al.  Book Reviews , 1893, Buffalo Medical and Surgical Journal.

[10]  Scott N. Woodfield,et al.  A project-unified software engineering course sequence , 1982, SIGCSE '82.

[11]  B. A. Sheil,et al.  COPING WITH COMPLEXITY , 1983 .

[12]  Richard E. Mayer,et al.  CONTRIBUTIONS OF COGNITIVE SCIENCE AND RELATED RESEARCH IN LEARNING TO THE DESIGN OF COMPUTER LITERACY CURRICULA , 1982 .

[13]  J. Pepper Following Students' Suggestions for Rewriting a Computer Programming Textbook , 1981 .

[14]  Roy D. Pea,et al.  Logo Programming and the Development of Planning Skills. Technical Report No. 16. , 1984 .

[15]  Elliot Soloway,et al.  Does computer programming enhance problem solving ability , 1982 .

[16]  P. R. Smith,et al.  Microcomputers in Education , 1983 .

[17]  Raymond S. Nickerson,et al.  Computer programming as a vehicle for teaching thinking skills , 1983 .

[18]  M. Lepper Microcomputers in education: Motivational and social issues. , 1985 .

[19]  Marvin Minsky,et al.  Form and Content in Computer Science , 1987 .

[20]  R. Waldo Roth,et al.  The teaching of documentation and good programming style in a liberal arts computer science program , 1980, SIGCSE '80.

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

[22]  J. Nievergelt,et al.  XS-0: a self-explanatory school computer , 1978, SGCS.

[23]  T. A. Dwyer Heuristic Strategies for Using Computers to Enrich Education , 1974, Int. J. Man Mach. Stud..

[24]  J. Christopher Jones,et al.  Design methods: Seeds of human futures , 1970 .

[25]  John D. Gould,et al.  An Exploratory Study of Computer Program Debugging1 , 1974 .

[26]  Keith T. Wescourt,et al.  Representing and Teaching Knowledge for Troubleshooting/Debugging , 1978 .

[27]  Donald A. Norman,et al.  Comments on learning: Schemata and memory representation , 1976 .

[28]  Barry L. Kurtz,et al.  Investigating the relationship between the development of abstract reasoning and performance in an introductory programming class , 1980, SIGCSE '80.

[29]  John C. Thomas,et al.  Metaphor and the Cognitive Representation of Computing Systems , 1982, IEEE Transactions on Systems, Man, and Cybernetics.

[30]  Lance A. Miller,et al.  Natural Language Programming: Styles, Strategies, and Contrasts , 1981, IBM Syst. J..

[31]  John C. Thomas,et al.  Cognitive Processes in Design. , 1980 .

[32]  Ronald S. Lemos An implementation of structured walk-throughs in teaching Cobol programming , 1979, CACM.

[33]  Seymour Papert,et al.  Mindstorms: Children, Computers, and Powerful Ideas , 1981 .

[34]  David M. Perlman,et al.  An introduction to programming and problem solving with PASCAL , 1978 .

[35]  P. G. Moulton,et al.  DITRAN—a compiler emphasizing diagnostics , 1967, CACM.

[36]  Victor R. Basili,et al.  A Controlled Experiment Quantitatively Comparing Software Development Approaches , 1981, IEEE Transactions on Software Engineering.

[37]  Wayne A. Wickelgren How to solve problems , 1974 .

[38]  Robert L. Glass,et al.  Persistent Software Errors , 1981, IEEE Transactions on Software Engineering.

[39]  Frederick E. Petry,et al.  A Framework for Discipline in Programming , 1980, IEEE Transactions on Software Engineering.

[40]  B. A. Sheil,et al.  The Psychological Study of Programming , 1981, CSUR.

[41]  D. A. Bell An empirical study of formal procedure specification , 1978 .

[42]  Kate Ehrlich,et al.  Cognitive strategies and looping constructs: an empirical study , 1983, CACM.

[43]  Leland L. Beck,et al.  A project-oriented undergraduate course sequence in software engineering , 1980, SIGCSE '80.

[44]  Marcia C. Linn,et al.  Gender Equity in Computer Learning Environments , 1983 .

[45]  Andrew Singer,et al.  The Annotated Assistant: A Step Towards Human Engineering , 1981, IEEE Transactions on Software Engineering.

[46]  John A. Beidler,et al.  Alternatives to the traditional first course in computing , 1981, SIGCSE '81.

[47]  Ruven E. Brooks,et al.  Studying programmer behavior experimentally: the problems of proper methodology , 1980, CACM.

[48]  James L. Alty,et al.  Learning a first computer language: strategies for making sense , 1982 .

[49]  Seymour Papert,et al.  Teaching Children Thinking , 1972 .

[50]  Farhad Mavaddat Another experiment with teaching of programming languages , 1981, SGCS.

[51]  Anthony I. Wasserman,et al.  Computer programming methodology , 1978, SOEN.

[52]  John D. Gannon An experimental evaluation of data type conventions , 1977, CACM.

[53]  Richard E. Mayer,et al.  Some Conditions of Meaningful Learning for Computer Programming: Advance Organizers and Subject Control of Frame Order. , 1976 .

[54]  Marlaine E. Lockheed Women, girls, and computers: A first look at the evidence , 1985 .

[55]  Michael E. Atwood,et al.  Cognitive structures in the comprehension and memory of computer programs: an investigation of compu , 1978 .

[56]  Robert F. Mathis Teaching debugging , 1974, SIGCSE '74.

[57]  Marvin Minsky,et al.  Form and Content in Computer Science (1970 ACM turing lecture) , 1970, JACM.

[58]  A. R. Brown,et al.  Program debugging : the prevention and cure of program errors , 1973 .

[59]  Edward A. Youngs Human Errors in Programming , 1974, Int. J. Man Mach. Stud..

[60]  Elliot B. Koffman Problem Solving and Structured Programming in Basic , 1979 .

[61]  Will Gillett The anatomy of a project oriented second course for computer science majors , 1980, SIGCSE '80.

[62]  Richard E. Mayer,et al.  A psychology of learning BASIC , 1979, CACM.

[63]  J. B. Brooke,et al.  Interactive instruction in solving fault finding problems , 1978 .

[64]  Jean-Michel Hoc Planning and Direction of Problem Solving in Structured Programming: An Empirical Comparison between Two Methods , 1981, Int. J. Man Mach. Stud..

[65]  Kate Ehrlich,et al.  Empirical Studies of Programming Knowledge , 1984, IEEE Transactions on Software Engineering.

[66]  John R. Anderson,et al.  Learning to Program in LISP , 1984, Cogn. Sci..

[67]  J. D. Aron The Program Development Process , 1974 .

[68]  Philippe Gabrini Integration of design and programming methodology into beginning computer science courses , 1982, SIGCSE '82.

[69]  J. Reitman,et al.  Knowledge organization and skill differences in computer programmers , 1981, Cognitive Psychology.

[70]  Richard C. Anderson Some Reflections on the Acquisition of Knowledge , 1984 .

[71]  Robert H. Seidman,et al.  The Effects of Learning a Computer Programming Language on the Logical Reasoning of School Children. , 1981 .

[72]  Ronald S. Lemos The Effectiveness of Teams in Teaching COBAL Programming: an Empirical Study , 1979 .

[73]  B. Adelson Problem solving and the development of abstract categories in programming languages , 1981, Memory & cognition.

[74]  John R. Anderson,et al.  Cognitive principles in the design of computer tutors , 1984 .

[75]  M. C. Linn,et al.  The Gap between Promise and Reality in Computer Education: Planning a Response. , 1984 .