Author: Jeremy Kubica
Publisher: No Starch Press
Audience: Computer Science newbies
Reviewer: Sue Gee
The idea of teaching computer science via a detective story sounds as if it could be fun and appeal to a wide audience.
Jeremy Kubica is a Google principal engineer working on machine learning and algorithms and this is by no means his first attempt to make computational thinking more accessible by merging it with fantasy fiction. His Computational Fairy Tales blog introduces computer science concepts from introductory programming to high level CS concepts led to two books, Computational Fairy Tales and Best Practices of Spell Design, written as a novella.
Little material has been added to the blog since his first book was published and apart from the characters Princess Ann and the Wizard Marcus, who are mentioned in his new detective novel, there is little overlap with former books - except that it's a fantasy world where wizardry and dragons are part of everyday experience.
The main character is the story is Frank Runtime, an ex-policeman thrown out of the force for employing heuristics and "doing things his way" rather than sticking to algorithmic orthodoxy laid down by its rule book. At the start of the story he is visited by the police chief who wants him to solve an embarrassing case - theft of documents from police headquarters. Search is Runtime's area of expertise so he accepts the challenge.
He soon finds he's not the only person intent on finding the culprits. Rookie Officer Notation, who graduated first in her class in both Data Structures and Police Algorithms. Within a few chapters both Runtime and Officer Notation are trapped on a smuggler's boat, having been cornered by the dreaded Rebecca Vinettee and her henchmen and are rescued by Socks Repellent, a teenage boy dressed in wizard's clothing, who admits to having been trailing them and turns out to be apprentice to a wizard named Gretchen.
Enough of the story, suffice it to say there are many twists and turns and you'll only understand some of its references - the location Port Usb, the characters Professor Heappens and Dr Loop - and appreciate its humor - Brazen Booleans who see the world only in black and white - if you are computer literate. What of the computer science content?
With the exception of the final one each of the books 29 chapter introduces a new concept which is made explicit in a final boxout titled "Police Algorithms 101" as an expert lectures delivered by Professor Drecker, often spanning multiple pages. Starting with an explanation of the brute-force exhaustive search readers are introduced to best-first and depth-first search, iterative deepening, parallelizing and binary search. Arrays are introduced in Chapter 3 and heaps, stacks, and queues are among other basic data structures covered. Along the way you'll discover how to adapt search algorithms to unusual data structures and the most efficient algorithms to use in a given situation. Towards the end, we come to understand the value make a start on a problem for which no obvious algorithm is apparent.
I've awarded this book a rating of 4 on the grounds that Kubica's approach is unusual and imaginative. He is reasonably successful in devising a plot that can be made to fit around some core computer science concepts. However the story and its characters are not entirely compelling and the pace and style are not of a prize winning calibre. Despite there being wizards in the story this is not a Harry Potter, nor despite the main character being a Private Detective, nor is it a Philip Marlowe.
Nobody is likely to want to read the technical boxouts alone, but they are good summaries of the concepts covered.
This isn't a text book but it could have a useful role in a computer science class as well as for individual readers in age range 10-14.
Visit Book Watch Archive for hundreds more titles.
Follow @bookwatchiprog on Twitter or subscribe to IProgrammer's Books RSS feed for each day's new addition to Book Watch and for new reviews.
To have new titles included in Book Watch contact BookWatch@i-programmer.info