Channels ▼

Mike Riley

Dr. Dobb's Bloggers

Practical Programming Book Review

July 21, 2009

The Pragmatic Bookshelf continues to release new titles at a rapid pace, with their latest focusing on newcomers to the practice of programming.  Practical Programming: An Introduction to Computer Science Using Python uses the Python language to teach readers everything from basic programmatic syntax to thinking through the construction and execution of moderately straightfoward algorithms.  Does it succeed?  Read on to find out.

As a seasoned developer, it's easy to take for granted all the foundational knowledge, techniques and best practices I autonomically use on a daily basis.  That's why a book like Practical Programming is so important for newbies -  these patient authors have taken the time to clearly describe the most rudimentary aspects of computer programming.  By exclusively doing so using the Python language only elevates the immediacy of learning that those new to programming will appreciate.

The book walks through real scientific and engineering examples to show readers how simple and logical it is to codify and solve such scenarios.  This elevates the relevance factor by taking code examples out of academic ivory towers and placing them into more practical day-to-day situations coders might find themselves facing in the real world.  More importantly, these examples show why programming is so powerful and exciting.  Python's clean syntax combined with its elegant simplicity compared to more verbose languages like C# or Java makes so much more sense to draw in those new to the programming experience.

Practical Programming kicks off with two introductory chapters, covering the concept of programming, followed by defining types, assignment statements and functions.  Chapters follow on string manipulation, modules, lists, boolean logic and program flow, loops, file processing, sets and dictionaries, algorithms, search and sort, exceptions and debugging, a 20+ page chapter on object oriented programming, building GUI's using the Tkinter module (though I still prefer the cleaner wxPython approach for my cross-platform Python GUI's) and finally databases using the built-in SQLite support in Python 2.5.

I was glad to see early in the book the advocacy for test harnessing.  The authors did a good job showing how easy and effective this process can be, pointing readers to the Nose testing project.  Considering the various testing frameworks available for Python, Nose was the perfect choice for its ease of configuration and use.  For more on Python testing frameworks, check out this useful article by Brandon Craig Rhodes that was recently posted on the IBM developerWorks website.

The only area the book stumbled ever so slightly for me was the fact that it was written by four separate authors who each have a distinct writing voice.  While editor Daniel Steinberg (host of the Pragmatic Podcasts) did an commendable job of melding the contributions into a relatively seamless learning experience, there were times when certain idioms, comments and levity attempts were off-kilter.  I have read programming books five times the size of Practical Programming written by a single author - the book would have been made even better had a single individual narrated the journey.

In conclusion, Practical Programming delivers what it promises.  My daughter, who most readers know is quite the artistic techie (and now a Blender 3D animator) in her own right, asked if she could read the book after I was done reviewing it.  She read Chris Pine's Learn to Program but wants to learn Python due to her recently heightened interest in the Blender Python API.  Needless to say, the book will be placed on her desk with my recommendations right after I post this review.



Title: Practical Programming: An Introduction to Computer Science Using Python
Authors: Jennifer Campbell, Paul Gries, Jason Montojo, Greg Wilson
ISBN: 978-1-93435-627-2
Pages: 350
Price: $32.95 US

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags


<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags


<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

