Jack J. Woehr is an independent consultant and team mentor practicing in Colorado. He can be contacted at http://www.softwoehr.com.
Python Programming: An Introduction to Computer Science
John M. Zelle
Franklin, Beedle & Associates, 2004
Python Programming: An Introduction to Computer Science, by John Zelle, is a very good first programming book for beginners. On reading the title, my first (cynical) reaction was, "Python as an introduction to computer science? Why not RPG or Snobol?" The point was that it seems on the surface quite difficult to introduce computer science adequately merely by teaching a somewhat exotic, string-oriented, high-level functional interpreter. For that matter, what does computer science rigorously construed have to do with the languages used in modern software engineering? Computer programmers are evermore dealing less and less in computer science: We're becoming tailors using a set of patterns preordained by the language designer, patterns to which we cut our fabric all day. Like fish, we hardly notice the water in which we swim, live, and breathe.
The mystery, however, is soon solved. The author explains: "Teaching Python is not the main point of this book...rather, Python is used to illustrate fundamental principles of design and programming that apply in any language or computer environment." While Python Programmingpartly defines the term "computer science" by way of Dijkstra's famous quote: "Computer science is no more about computers than astronomy is about telescopes," the book uses the term "computer science" loosely. Python Programming: An Introduction to Computer Scienceintroduces the absolute minimum of computer science correspondingto the needs of an introduction to computer programming. Chalk it up to hyperbolic inflation: The book should have been called something like "Learning Computer Programming Through Python"as indeed it would have been in the 1980's before our mundane-albeit-highly-engaging technical discipline had become so precocious and exalted that it is no longer enough merely to teach programming.
Be that as it may, computer programming needs to be taught, and teaching it is no disgrace. At that humble chore, Python Programming acquits itself honorably. The book is one-on-one with the reader in the engaging fashion that characterized the better beginner self-tutorials of previous decades. In a similar manner, it breezes around the compass of interesting simple tasks that can be done with a minimum of code. The author derives his examples from an aesthetically acceptable nerdly viewpoint: The first exercise in the book is a chaotic function that accepts its input and renders its output in floating point.
As Guido van Rossum, creator of Python, states in the foreword:
The author mentions in his preface that Python is near-ideal as a first programming language, without being a "toy language"...I don't want to take full credit for this: Python was derived from ABC, a language designed by Lambert Meertens to teach programming.
Python Programming follows a pathway through the language well suited to student needs. As Zelle explains:
There are places in the book where the "Pythonic" way of doing things has been eschewed for pedagogical reasons...This is done purposefully in an effort to meet students "where they're at."
Basic statements and assignments are followed by simple math, input/output, strings, files, and graphical objects. Then come functions and flow control. The rest of the book is dedicated to design, object orientation, and problem solving. The level throughout is suitable for late high school or early college.
The appendices include a quick reference to Python, a guide to using the IDLE development environment with Python, and a glossary of terms. These appendices are well focused and admirably brief.
The CD-ROM content, while adequate, exhibits, in contrast to the book itself, a lack of attention to detail that has come to characterize the majority of CD-ROM offerings accompanying programming books lately. There is no unified HTML presentation/explanation of the content starting with an /index.html, which would make things so much simpler for today's beginner who knows a lot more about reading web-based content than about any other computer task. Then there's the .tar file on the accompanying disk, which turns out really to be a .tar.gz file. Maybe it's just too much work nowadays to prepare CD-ROM content with the same care with which a book is designed. In that case, the day of CD-ROMs accompanying textbooks is over and all content should simply be distributed over the Web from the publisher's or author's web site, in which case the content would (one hopes) be well indexed by default.
The web site for the book, which includes a chapter listing and a form to request an instructor review copy, is http://www.fbeedle .com/99-6.html.