This book presents a solution to the problems of programming consisting of three techniques: top-down development, structured programming, and structured walkthroughs. The book is well organized, and each technique is clearly defined and explained. After a useful overview in chapter 1, chapter 2 deals with top-down development for program design, explaining the use of functional specifications, program stubs, data-flow diagrams, and hierarchy charts; chapter 3 deals with the planning and implementation of this approach. Chapter 4 explains structured programming, using only the three basic structures of sequence, choice, and iteration, and chapter 5 explains stepwise refinement using pseudocode. Chapter 6 deals with structured walkthroughs, and chapter 7 covers testing. Each of the remaining four chapters is devoted to structured programming using a particular language, covering PL/I, ANS COBOL, Pascal, and C.
The book is intended to present these three techniques to people who are already familiar with the basic concepts of the programming process, and the authors succeed admirably in this task. However, the book seems curiously out-of-date for its suggested use in a second programming course, although it is full of worthwhile material. There are three reasons for this. First, I would expect anyone in the intended readership to be familiar with much of the material. A good, up-to-date first textbook in programming will present the concepts of top-down design and structured programming. For example, a recent text on Pascal is “designed for a first course in introductory programming that emphasizes a structured approach” [1]. Second, there is no mention in the book of formal techniques for proving a program correct. A structured approach to programming should include this discipline, since Gries has done so much to make program verification both accessible and useful to students and practitioners of programming [2]. Third, the book concentrates on the top-down methodology to the exclusion of more recent developments such as the object-oriented approach to programming (for example, see [3]) and fails to mention the Michael Jackson method [4]. These shortcomings in the book may be a result of the fact that it is a second edition of a book first published in 1977.
In general, the book is laid out well and contains few errors. Minor criticisms can be made of the Pascal and C program examples, which contain a few syntax errors and whose typesetting produces some curious effects for string and character constants and for underscores embedded in identifiers (which is nonstandard in Pascal).
I can recommend this book as a gentle introduction for any programmer or manager who is still unfamiliar with structured programming, although he or she should be warned of its omissions. However, I would be most unlikely to use it in a second course in programming. There is a wide choice of excellent texts for such a course, including the one by Gries [2].