Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Python for software design : how to think like a computer scientist
Downey A., Cambridge University Press, New York, NY, 2009. 272 pp. Type: Book (9780521725965)
Date Reviewed: Jun 18 2009

I found the title of this book a little misleading. In fact, it is simply an introduction to programming, using Python as a programming language. In a volume of this size, it is not really possible to present software design seriously.

I volunteered to review this book because I have taught introductory programming for more than 40 years and, thus, I feel deeply concerned with this subject. Moreover, I did not know Python and wanted to see whether it was more suitable for this task than any of the numerous programming languages that have been used in the past.

Since this book is intended for students, there is no discussion about either the choice of programming as the introductory subject to computer science, or the choice of Python as a first programming language. The very few words about the goals of this book are in the preface and, in summary, they are: keep it short; be careful with vocabulary; build gradually; and focus on programming, not the programming language.

The first goal is clearly attained. The second goal is helped by glossaries at the end of every chapter. The third goal may be considered to be achieved, at the expense of coherence--some subjects, judged to be more difficult than others, are split into small steps, scattered among chapters; thus, despite the detailed index, it would be difficult to use this book as a reference. The fourth goal, however, is not achieved, as this is clearly a book about Python. In order to focus on programming only, it would be necessary to first present the fundamental concepts of programming, and then illustrate them with Python. As soon as you are forced to explain why the equal sign no longer has the meaning mathematicians gave it centuries ago, why a÷b×c has the same meaning as a×c÷b, why some common English words cannot be used as variable names, why parameter passing does not have the same meaning when the argument is a string as when it is a list, you are presenting a lot of absurdities as if they were cleverly designed. It is useful to quote a letter to the editor from Communications of the ACM [1]. The use of Python as an introductory programming language, intended to teach good practices in software design, is an example of the “pervasive use of scripting languages that abandon static safety altogether.”

To conclude, if you think that programming is the first thing a student in computer science must learn, that the ease of use of the supporting language is its most important characteristic, that static safety is a notion of the past, and that Python is an excellent programming language, then this book is a very good one. It is short and well written, it follows a very smooth progression, and its companion Web site is very good. It is regrettable, however, that all of the external references are to Wikipedia, thus enforcing the idea, already much too widespread among students, that it is the only existing and reliable source of information.

Reviewer:  O. Lecarme Review #: CR136977 (1005-0435)
1) Bates, R.M. Letter to the Editor. Comunications of the ACM 52, 5(2009), 7–7.
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
Sequential Programming (D.1.4 )
 
 
Python (D.3.2 ... )
 
 
Object-Oriented Programming (D.1.5 )
 
Would you recommend this review?
yes
no
Other reviews under "Sequential Programming": Date
A technique for developing loop invariants
Remmers J. Information Processing Letters 18(3): 137-139, 1984. Type: Article
Jul 1 1985
Learning Joomla! 1.5 extension development: creating modules, components, and plugins with PHP
LeBlanc J., Packt Publishing, 2007.  176, Type: Book (9781847191304)
Feb 8 2008
Python for software design: how to think like a computer scientist
Downey A., Cambridge University Press, New York, NY, 2009.  272, Type: Book (9780521725965), Reviews: (2 of 2)
Jun 26 2009
more...

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