Thursday, 5 December 2013

Book Review - Introduction to Computation and Programming Using Python by John V Guttag

As per previous book reviews, this is one that I've written for the British Conputer Science (BCS) : -

I chose to read and review this book purely based upon the title, rather than doing my normal level of research. I was interested in learning more about the Python language, partly because I use Jython on a regular basis ( Jython is an implementation of Python, written in Java ).

This book should not be considered as an introduction to Python; it is, in fact, precisely what the title suggests - an introduction to computation and programming using Python.

The difference may sound quite subtle, and perhaps a bit negative. That is the precise opposite of what I want to suggest - this is an excellent book; one that I would have dearly loved to have when I first started to learn the subject of computer science back in the 1980s.

Had I done my research more fully, I would have read this paragraph, which clearly outlines the purpose and content of the book: -

This book introduces students with little or no prior programming experience to the art of computational problem solving using Python and various Python libraries, including PyLab. It provides students with skills that will enable them to make productive use of computational techniques, including some of the tools and techniques of "data science"for using computation to model and interpret data.

The book begins by introducing Python, including the basic elements of the language, including objects, expressions, typing, variables, branches and strings. Much of this is very translatable to other languages, and would be useful to anyone learning the basic fundamentals of computer programming, regardless of the language.

It then continues to explain the fundamentals of programming, including functions, abstraction, testing, debugging, exception handling, and object-oriented (OO) programming.

At that point, the book then dives into the science element of computer science, including algorithmic complexity, probability theory, graphing, and statistical analysis.

At every stage, the author provides copious examples of how each particular problem can be illustrated / solved using Python, using the building blocks introduced in the early chapters.

In its entirety, the book should be considered as an excellent introduction to computer science and programming - as mentioned previously, I'd have loved to have this book when I started out in Information Science some thirty years ago.

However, if one's objective is to learn Python, it will be necessary to supplement this book with some specific Python tutorials, although the first few chapters will definitely help to establish context and understand the fundamental building blocks of the language.

Even one such as I, who has been working in the IT industry for nearly thirty years, found a huge amount of value from this book, as much of the content provided some good reminders of things that I'd since forgot, including probability and statistical analysis.

In conclusion, I can strongly recommend this book provided that one reads the title in full, and understands that it is a manual for budding computer scientists, as much as an introduction to the Python programming language.

My rating - 9/10 - purely because I didn't do my research, so the book didn't fully my expectations - I was looking for an introduction to Python, rather than an introduction to Comp. Sci.

No comments: