"Any sufficiently advanced technology is indistinguishable from magic," says the third of Arthur C. Clarke's 'laws' — and to many of today's iPad/Android/tablet/mobile phone generation that's exactly what computers look like. In Nine Algorithms That Changed the Future, John MacCormick, a professor of computer science at Pennsylvania's Dickinson College (and a former researcher at Oxford, Hewlett-Packard and Microsoft), takes on the mantle of the magician who reveals the trade's secrets.
To be included among the nine studied here, algorithms had to meet specific criteria. They had to be in common, everyday use by ordinary computer users. They had to solve specific, real-world problems. They had to relate to computer science theory — that is, they couldn't just be about software or hardware. And they need to have an imaginative, ingenious leap — which MacCormick calls a "trick" — to make them work.
The subject areas covered by the algorithms are: search engine indexing; public key cryptography; error-correcting codes; pattern recognition; compression; databases; and digital signatures.
You may not recognise these as things you use every day, but indeed they are. Without error-correcting codes there would be no internet communications; without compression no DVDs; without public key cryptography no secure spontaneous online transactions between strangers; without databases no e-commerce or government benefits systems; without pattern recognition no spam filtering.
MacCormick leaves in a lot more detail than you'll usually find in a book aimed at a general audience.
MacCormick writes in a very clear, simple style, leading the reader step by step through even the most complex explanations. He does, of course, elide some aspects — no-one could fit a complete explanation of the inner workings of cryptography algorithms in a single chapter. Having said that, he leaves in a lot more detail than you'll usually find in a book aimed at a general audience. The result ought to be understandable to a wide variety of readers, including science and maths-oriented secondary school students.
At the end of the book, MacCormick spends a chapter exploring the limits of what can be computed, and these are pretty significant, as anyone who has studied computer science theory knows: it is provably impossible to write a program that can detect all possible crashes in another program (as a university sophomore, my computer science class was assigned this proof as one of a dozen problems to complete by the end of the semester). By "provably impossible", MacCormick is referring to the unique characteristic of his own field of mathematics, which is that once something is proven it stays proven — and mathematics is the base upon which computer science is built.
If those in charge of making public policy read only that last chapter, it would be a vast societal benefit. They would learn this: computers are not magic, after all, and expecting them to do the impossible is a good way to spend a lot of money on failed IT projects.
Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers
By John MacCormick
Princeton University Press