Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Python programming : an introduction to computer science
Zelle J., Franklin B, 2003. Type: Book (9781887902991)
Date Reviewed: Dec 2 2004

When teaching a first course in computer science, two questions arise naturally: what topics, and which programming language, should be presented? The Association for Computing Machinery/Institute of Electrical and Electronics Engineers (ACM/IEEE) Computing Curricula 2001 has set the standard to the answer to the first question [1], leaving the choice of programming language up to the instructor or, more likely, to the educational institution that offers the course. In the preface to this book, and on his personal Web site (, Zelle presents a strong argument for selecting Python as the first programming language.

The book contains 13 chapters and three appendices. The organization is slightly unorthodox: the expected basics (computer structure, fundamental data types, programming constructs, and so on) are included, but simple programming with graphic objects is introduced in chapter 5, ahead of functions in chapter 6, two-way and multi-way decisions in chapter 7, and loops in chapter 8. Also somewhat controversial for a first programming textbook is object-oriented design, presented in chapter 12. Finally, algorithm design and recursion, which the author considers optional but I do not, are covered in chapter 13. The appendices include a Python quick reference, instructions for using Python and its programming environment, and a glossary. The graphics module used in the book, plus other material, can be downloaded from the publisher’s Web site.

According to the author, the main goal of the book is not to teach Python, but rather to use it to illustrate fundamental programming and design principles. The second goal is to present a gentle introduction to computer science, based on extensive use of computer graphics, interesting examples, flexible spiral coverage, just-in-time coverage, and numerous end-of-chapter problems to reinforce the material and practice programming skills.

Zelle does a fair job of teaching fundamental concepts, and the Python programming language, at a basic level. Learning is enhanced through the use of snippets of interactive code, and a good number of small, but interesting programs. The design of some of the larger programs is described in detail.

This book disappointed me in several respects. First, it does not include a description of number bases and the machine-level representation of data, something fundamental and essential to a programmer, regardless of future endeavors. Instructors using this book should be sure to use supplementary material to cover these topics.

Second, this book, like many other introductory textbooks, has almost nothing to say about debugging and troubleshooting. Debugging their own code will become a way of life for many programmers; many others will debug runtime errors in code written by someone else. Apparently, few authors have had to answer a middle-of-the-night call to fix a problem, under time pressure, in a very large system they did not build; hence, they do not consider this skill worth mentioning or teaching.

Third, this book contains more than a handful of grammatical errors. Especially noticeable is the frequent and self-conscious use of quotation marks to call attention to certain words and phrases. Some quotation marks are superfluous, many are questionable or grammatically incorrect, and none are essential.

Fourth, the tone through about two-thirds of the book is patronizing and condescending. The author mentions readable prose as one of his goals. I expect that most young students will find the prose annoying.

Finally, I have one minor snit: the index does not include all of the references to programming elements (programs, routines, functions, and so on) shown in the book. Thus, it can be difficult to find where some things were first introduced or described.

Nonetheless, this book will likely find its way into many classrooms and libraries.

Reviewer:  Edgar R. Chavez Review #: CR130482 (0507-0764)
1) ACM/IEEE Computing Curricula 2001, Programming Fundamentals,
Bookmark and Share
  Reviewer Selected
Featured Reviewer
Python (D.3.2 ... )
Computer Science Education (K.3.2 ... )
Introductory And Survey (A.1 )
Would you recommend this review?
Other reviews under "Python": Date
Practical Python
Hetland M., APress, LP, 2002.  648, Type: Book (9781590590065)
Mar 28 2003
Foundations of Python network programming
Goerzen J., APress, LP, Berkeley, CA, 2004.  512, Type: Book (9781590593714)
Dec 26 2004
 Dive into Python
Pilgrim M., APress, LP, Berkeley, CA, 2004.  413, Type: Book (9781590593561)
Dec 15 2004

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2023 ThinkLoud®
Terms of Use
| Privacy Policy