While it is intended for use as a textbook in an introductory computer studies course, this book is not a textbook for the traditional introductory computer science course that focuses almost exclusively on programming in one language. Instead, the book’s goal is to promote computer literacy, which Brookshear defines as “the ability to distinguish between computer science and science fiction” (p. vi).
This book introduces the topics in Gibbs and Tucker’s curriculum guidelines for a liberal arts degree [1], with the only noticeable deviations being a lack of material on graphics and simulation. The book is divided into four main sections: “Machine Architecture,” “Human/machine Interface,” “Data Organization,” and “Potential of Algorithmic Machines.” Each section contains several chapters, including chapters on data storage and manipulation, operating systems, algorithms, programming languages, software engineering, data structures, databases, artificial intelligence, and theory of computation. Subsections within the chapters are followed by questions and exercises. Each chapter is followed by review problems, a set of problems for students who already have some programming experience, and a list of additional reading. Subsections that are optional and not needed to understand the rest of the book are clearly marked. An instructor’s manual is also available but was not included with the review copy.
As with most books, this text has some shortcomings. Fortunately, most of these problems are minor. Only a few typographical errors occur, but one of these could lead to confusion. The Euclidean algorithm (p. 3) for finding the greatest common divisor contains an incorrect GOTO statement that results in an infinite loop. While this error is not an encouraging way to introduce a student to the subject, it could be used to illustrate the dangers of promiscuous use of the GOTO statement. The index is fairly good, which compensates for the lack of a glossary, although an attempt to find definitions of “or” and “exclusive or” using the index was unsuccessful. An attempt to find definitions of these terms under the heading “logical instructions” was equally unsuccessful. Similarly, although CASE is used in the text, it is listed in the index as “Computer-aided software engineering (CASE),” which makes it difficult to find a definition of CASE using the index. Finally, many of the “Figures” are actually blocks of text, and it is sometimes hard to separate them from the text. Using lines or some other technique to make the distinction between figures and text clearer would be helpful.
The preceding criticisms should not discourage anyone from examining this book. The material is well organized and easy to read. The amount of detail is generally satisfactory. The book also makes use of good examples and clear illustrations. Given that this is the third edition of the book, other readers must also have had a positive opinion of the previous versions. Anyone planning a computer studies course that will provide students with a good overview of what computer science involves should give this text serious consideration.