13/04/2014 in: Reviews
The book is split into essentially three projects (one with extensions - see below) with the compulsory Getting Started with the Pi that all Pi books seem to have leading the reader in. However kudos to the author for both introducing the command line in the first chapter (an important topic), and also providing a short troubleshooting section for common my-Pi-doesn't-work problems.
Over to the projects: the first, writing a simplified version of Angry Birds in Scratch, is a great way into programming. What I absolutely love about this project is that it introduces an element of real world physics into the equation of how the character moves around the screen. This isn't just yet-another "my cat moves" project. Oh no. On Page 30/31:
First, let's add some gravity".
This is done by using separate x and y "speed" variables. Changing the value of y by a negative amount will effectively act to pull the character a little back to earth. This is a great concept to introduce to kids: that variables can be used to control stuff, and you can simulate real-world physics in a computer. It really sets off those neurons: what else can I model in a computer? Absolute top marks to the author for including this. I was smiling a lot when I read this section while reviewing the book.
Onto the second project, and from here on in we're moving from Scratch to Python. What's more the author introduces a basic electronic circuit in the form of a home-made (Blue Peter style with tape and paperclips) game pad controller. This is an entirely achievable project for kids as it involves no soldering. However it may be an idea to work with young kids on this project as there is a possibility of frying the Pi's GPIO port if the cables are badly connected. Done well it'll work a treat. One especially nice touch in this chapter is that the author shows a section of code in Scratch and then presents the same functionality in Python. This definitely eases the transition from one to the other.
And finally the third project. This introduces user interfaces via a project to interface with Google Maps. It's a more complex (but not unachievably so) project that takes one through creating a GUI (using Python's TKinter), obtaining map data via the Google API (and pre-selecting the map's location, scale and size in pixels) and then adding additional user-interactive (via detecting mouse clicks) functionality to the map. As with the previous projects there are some great touches here-in such as introducing the concept that computer languages generally count from 0 and not 1 (ie: the first item is 0 and the second is 1).
So why 4 and not 5 stars? Well, it's a tricky one: the projects genuinely are interesting, achievable, and people of all ages will learn from them, and the book is a reasonable length for a reasonable price. However one does feel that just one more chapter would have been good. I say this as the extensions to the interactive map project, while great ideas, could have been flushed out into a chapter of their own. This is however a grumble more than a genuine complaint. If I could, I'd have given 4.5 stars.
This is an absolutely great read and I genuinely believe that kids will be able to follow these projects at their own pace and gain from them.