Abstrac tTo improve introductory computer science courses and to update the teaching o f computer programming, new teaching methods emphasizing structured programmin g and top-down design have been presented and a variety of automate d instructional tools have been developed . The purpose of this paper is :(1) t o 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 beginnin g programmers experience difficulties ; (3) to present ways of improving some o f the tools ; and (4) to propose other possible aids . This paper is organized as follows . Section 1 introduces the topic and purpos e of the paper . Section 2 reviews several teaching methods discussed in th e literature . Section 3 surveys various student-oriented interactive an d noninteractive tools . Section 4 discusses nonstudent-oriented aids an d presents alternatives by discussing how to adapt similar aids to a studen t environment . Section 5 provides a summary of the paper and a conclusion . Pertinent problem areas and students' viewpoints are presented in each section .
Introductio nThe development of a good computer program is a difficult task . Progra m development, like any creative process, requires skill and experience i n various activities such as problem solvidg, debugging, and testing . No t surprisingly, student programmers encounter numerous problems, "man y instructors express an uneasy feeling that the objectives of the introductor y programming course are often not met," and "many students fail to develo p programming competency" [1] .In an attempt to improve the effectiveness of introductory computer scienc e courses and to update the teaching of computer programming, new methods fo r teaching the subject have been considered [2, 3, 4, 5, 6] along with increase d emphasis on structured programming and top-down design [7, 8, 9, 10] . Also , better automated teaching tools have been developed [6, 11, 12, 13, 14, 15] . This paper aims to review some of these studies and others and, through thi s review, to better understand some of the problems that face beginning student s in creating, testing, debugging, and documenting programs .
2.Teaching Computer Programmin g One of the major problems in teaching programming is trying to implant goo d programming habits . "No matter how careful one is to introduce clea n programming habits (restricted control flow, top-down design, meaningful dat a names, completeness in specifications and documentation, etc .) at the ver y beginning of students' programming experience students too easily fall int o 'quick and dirty' programming" [2] . To combat this problem, Cherniak [2] , Russman [16], and Koffman and Friedman [17] have each proposed differen t approaches .Cherniak proposes that students should start as users of computer system s rather than as programmers . Students should he provided with proved program s (i .e ., canned programs) and with documentation on how to use them . Beginnin g students should ...