Teaching and learning computer programming: a survey of student problems, teaching methods, and automated instructional tools

To improve introductory computer science courses and to update the teaching of computer programming, new teaching methods emphasizing structured programming and top-down design have been presented and a variety of automated instructional tools have been developed. The purpose of this paper is: (1) to survey a number of methods and tools used in the teaching of programming; (2) to present, with the aid of this survey, a number of areas where beginning programmers experience difficulties; (3) to present ways of improving some of the tools; and (4) to propose other possible aids.This paper is organized as follows. Section 1 introduces the topic and purpose of the paper. Section 2 reviews several teaching methods discussed in the literature. Section 3 surveys various student-oriented interactive and noninteractive tools. Section 4 discusses nonstudent-oriented aids and presents alternatives by discussing how to adapt similar aids to a student environment. Section 5 provides a summary of the paper and a conclusion. Pertinent problem areas and students' viewpoints are presented in each section.

[1]  Loren P. Meissner,et al.  B4Tran: A structured mini-language approach to the teaching of Fortran , 1975, SIGCSE '75.

[2]  F. Mavaddat An experiment in teaching programming languages , 1976, SGCS.

[3]  Avron Barr,et al.  An instructional interpreter for basic , 1976, SIGCSE '76.

[4]  T. Ray Nanney,et al.  Computer science: An essential course for the liberal arts , 1976, SIGCSE '76.

[5]  L. M. Culpepper A system for reliable engineering software , 1975 .

[6]  C. V. Ramamoorthy,et al.  Testing Large Software with Automated Software Evaluation Systems , 1975, IEEE Trans. Software Eng..

[7]  William H. Josephs An on-line machine language debugger for OS/360 , 1969, AFIPS '69 (Fall).

[8]  Curtis R. Cook A self-paced introductory Fortran programming course , 1976, SIGCSE '76.

[9]  Susan L. Graham,et al.  Practical syntactic error recovery , 1975, CACM.

[10]  Michael Harry Tindall An interactive compile-time diagnostic system. , 1975 .

[11]  J. L. Wagener Structured FORTRAN programming , 1975, SIGCSE '75.

[12]  Ronald Lee Danielson Pattie: an automated tutor for top-down programming. , 1975 .

[13]  Alan M. Davis,et al.  An interactive analysis system for execution-time errors. , 1975 .

[14]  Charles B. Kreitzberg,et al.  A cognitive model for structuring an introductory programming curriculum , 1899, AFIPS '74.

[15]  Edward M. Reingold,et al.  The automation of introductory computer science courses , 1974, SCOU.

[16]  Edwin H. Satterthwaite Debugging tools for high level languages , 1972, Softw. Pract. Exp..

[17]  Elliot B. Koffman,et al.  A computer-aided flow diagram teaching system , 1976, SIGCSE '76.

[18]  H. Earl Ferguson,et al.  Debugging systems at the source language level , 1963, CACM.

[19]  Will Gillett An interactive program advising system , 1976, SIGCSE '76.

[20]  C. V. Ramamoorthy,et al.  Testing large software with automated software evaluation systems , 1975 .

[21]  Thomas R. Wilcox,et al.  Design and implementation of a diagnostic compiler for PL/I , 1973, CACM.

[22]  G. David Ripley A course in effective programming , 1975, SIGCSE '75.

[23]  Joseph Weizenbaum,et al.  A program to teach programming , 1970, CACM.

[24]  Ronald Paul Leinius,et al.  Error detection and recovery for syntax directed compiler systems , 1970 .

[25]  William R. Bezanson Teaching structured programming in FORTRAN with IFTRAN , 1975, SIGCSE '75.

[26]  Bob Cherniak Introductory programming reconsidered - a user-oriented approach , 1976, SIGCSE '76.

[27]  Ivan M. Rosenberg Introductory computer science courses a modular design , 1976, SIGCSE '76.

[28]  Leon G. Stucki,et al.  New assertion concepts for self-metric software validation , 1975 .

[29]  Miguel Ulloa A language, a procedure, and automated tools for analysis of problems and design of algorithms in , 1977 .

[30]  Ralph Grishman,et al.  The debugging system AIDS , 1899, AFIPS '70 (Spring).

[31]  David Gries,et al.  What should we teach in an introductory programming course? , 1974, SIGCSE '74.

[32]  Earl J. Schweppe Dynamic instructional models of computer organizations and programming languages , 1973, SIGCSE '73.

[33]  Donald E. Knuth,et al.  An empirical study of FORTRAN programs , 1971, Softw. Pract. Exp..

[34]  Richard C. Holt,et al.  SP/k: a system for teaching computer programming , 1977, CACM.

[35]  John T. Welch Tab, a Program Design Language for the classroom , 1976, SIGCSE '76.

[36]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[37]  Robert Balzer,et al.  EXDAMS: extendable debugging and monitoring system , 1969, AFIPS '69 (Spring).

[38]  Zohar Manna,et al.  Logical analysis of programs , 1976, CACM.

[39]  W. F. Cashman,et al.  On the need for teaching problem-solving in a Computer Science Curriculum , 1975, SIGCSE '75.

[40]  Darrell Lynn Ward Interactive directed programming in computer-assisted instruction (cai). , 1973 .

[41]  Susan L. Gerhart Methods for teaching program verification , 1975, SIGCSE '75.

[42]  Kurt Maly,et al.  A first course in computer science: What it should be and why. , 1975, SIGCSE '75.

[43]  Fredric Stuart,et al.  Watfor Watfiv Fortran Programming , 1971 .