This is a truly entertaining book. Since the old days of computing in 0s and 1s, I appreciated algorithms and structures. But I would have never expected to call a book that is effectively a textbook on computing ‘entertaining’. I suspect that many others will experience the kind of pleasure I have derived from reading how stories can be turned into algorithms and computing elements.
The author could have selected many different stories to make his points, but it is clear that each of the one he has used, plays a particular function in the whole book while the text moves from basics to more and more complicated issues. The author defines the computation as a problem-solving process, though not any computation is problem solving and not all problem solving involves computation (p. 23-24). However, the author concentrates on many different types of problems that need computation approaches. The book is divided into two parts – the first one dealing with algorithms and the second one with languages, though arbitrary signs and semantics appear already in the first part and the algorithms become more and more sophisticated in the second one.
The author takes the reader through narratives deconstructing them to illustrate the processes of computing and the steps of problem solving. The stories involve a simple tale of Hansel and Gretel, a classic mystery of The Hound of the Baskervilles, adventures of Indiana Jones, a ballad Over the rainbow, two fantasy films Groundhog Day and Back to the future and the stories of Harry Potter. But these are only the ones that are named in the titles of the chapters, you can find many more in the actual text of the book. There is nothing remarkable in analysing the stories and getting to their basic elements and their relations. It was done by many: folklorists, semioticians, psychoanalysts and more. The basic formulas of different genre stories are even used to produce mass literature. The narrative analysis is a method that has become rather popular in many social sciences. But in this book, the stories are used to help understanding of and most probably to popularize computation.
From my point of view, the idea was implemented successfully. As a librarian I have really appreciated the Sherlock Holmes story of collecting the facts and data, storing them and retrieving when needed, but also the computation of searching strategies exemplified by Indiana Jones’ stories. Two final chapters based on Back to the Future and Harry Potter have appealed to my researcher’s side as I have recognized that I was often computing without even thinking of it. Solving problems is a natural state in doing research and even simply analyzing collected data, sometimes in the mode of Sherlock Holmes, but sometimes moving from one abstraction level to another, involves different levels of computation.
I am quite sure that this book will be useful for many teachers of computing, programming and similar courses on different levels. Students will also enjoy it for its clear style, deep professionalism of the author, and entertaining presentation of what is often perceived as a dull subject. I have emphasised the fun side of the book, but I would recommend it to other professionals and the broad audience as a very useful guide explaining how to deal with many problems arising at work or in everyday life. It may not help to patch ruined family relations, but definitely may provide a clue of how to organize a busy day.
Swedish School of Library and Information Science