Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers

Image of Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers
Author(s): 
Release Date: 
May 5, 2013
Publisher/Imprint: 
Princeton University Press
Pages: 
232
Reviewed by: 

“That, indeed, would likely be the best use of Nine Algorithms that Changed the Future: as an adjunct text in a freshman computer science course. It’s basic if somewhat inconsistent in tone, the explanations agreeably technical for someone wanting (or needing) to understand some of the details of the workings of the magic box on our desks.”

Seeing the word algorithm in a book title is vaguely akin to seeing Michael Bay listed as the director of a movie: You’ve got a pretty good idea of what you’re going to get before you go in. In the case of the latter, explosions are the order of the day; for the former, you can expect to encounter phrases like cryptographic hash function. And that’s fine, since you know that going in: The choice of director, or in this case the author’s choice of title, effectively preselects the intended audience.

Or does it?

Certainly one of the major challenges in popular science writing is choosing the target level of your technical writing. At what point do the terms of art, the parlance of the technology, start to cross the line into opaque jargon as viewed by the desired audience?

And if you as the author choose to stay a safe distance from that imaginary, poorly visible line, how high is the risk of sliding into condescension toward the more tech-savvy sector of your readership?

It’s a tough call, and computer research John MacCormick has clearly struggled with it in Nine Algorithms that Changed the Future: The Ingenious Ideas that Drive Today’s Computers, a look under the hood of much of the software that—often invisibly—drives our interaction with computers.

On one early page, Dr. MacCormick defines a “pixel,” certainly a very basic concept indeed; but it seems likely that any reader who requires such a definition is going to find himself in very deep water indeed when later encountering a discussion of inhibitory and excitatory neurons in a neural network. Which is a pity: author MacCormick’s explanations are clear and cogent at, say, a college sophomore or freshman or even advanced high-school level, but he is sacrificing part of his potential readership by failing to find an altogether consistent tone.

Dr. MacCormick has much to offer an interested, computer-savvy reader with some technical background—but that selfsame reader is likely to be put off by his attempts to speak to a non-computer savvy audience.

Example: I actually learned a great deal about how database transactions work, albeit at a level that is likely to either put off or bore most laypersons, but I was repeatedly jarred by the author’s endlessly repeated use of the word trick to describe some key underpinning of an algorithm. (We learn of the shorter symbol trick for data compression, the redundancy trick for error correction, the prepare-then-commit trick for database transactions, ad nauseum.) This faux-casual vocabulary feels condescending, and it is surely unnecessary: This is a book about algorithms, so use the word!

The author’s choices of influential algorithms are good ones, even if they are not all strictly algorithms in the formal sense of the word. The nine chapters more accurately describe critical computing concepts or broad techniques, each comprising many algorithms.

These include Internet searches (with a very good explanation of basic idea behind Google’s page ranking algorithms); data compression (which you use every time you watch a Youtube or Netflix video); public key cryptography (crucial for online banking); pattern recognition (which itself comprises a veritable universe of algorithms), and more.

They’re great topics, though all presented with relatively little context or historical background; the chapters are basically a rolling series of technical explanations, presented in a digestible chatty tone but unlikely to appeal to most readers outside the context of a computer science course.

That, indeed, would likely be the best use of Nine Algorithms that Changed the Future: as an adjunct text in a freshman computer science course. It’s basic if somewhat inconsistent in tone, the explanations agreeably technical for someone wanting (or needing) to understand some of the details of the workings of the magic box on our desks.

Nine Algorithms that Changed the Future: The Ingenious Ideas that Drive Today’s Computers won’t find much of an audience among the general public, which is a missed opportunity because the author seems as if he would be an excellent teacher—when he has a clear picture of whom he is teaching.