Å·±¦ÓéÀÖ

Jump to ratings and reviews
Rate this book

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

Rate this book
Every day, we use our computers to perform remarkable feats. A simple web search picks out a handful of relevant needles from the world's biggest haystack: the billions of pages on the World Wide Web. Uploading a photo to Facebook transmits millions of pieces of information over numerous error-prone network links, yet somehow a perfect copy of the photo arrives intact. Without even knowing it, we use public-key cryptography to transmit secret information like credit card numbers; and we use digital signatures to verify the identity of the websites we visit. How do our computers perform these tasks with such ease?


This is the first book to answer that question in language anyone can understand, revealing the extraordinary ideas that power our PCs, laptops, and smartphones. Using vivid examples, John MacCormick explains the fundamental "tricks" behind nine types of computer algorithms, including artificial intelligence (where we learn about the "nearest neighbor trick" and "twenty questions trick"), Google's famous PageRank algorithm (which uses the "random surfer trick"), data compression, error correction, and much more.


These revolutionary algorithms have changed our world: this book unlocks their secrets, and lays bare the incredible ideas that our computers use every day.

219 pages, Hardcover

First published January 1, 2012

255 people are currently reading
3,208 people want to read

About the author

John MacCormick

2Ìýbooks14Ìýfollowers
John MacCormick is a computer science teacher and researcher. He grew up in New Zealand, studied mathematics and computer science in England, and now lives in Pennsylvania, USA. MacCormick has a PhD in computer vision from the University of Oxford, has worked in the research labs of Hewlett-Packard and Microsoft, and is currently a professor of computer science at Dickinson College. His work spans several sub-fields of computer science, including computer vision, large-scale distributed systems, computer science education, and the public understanding of computer science.

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
460 (28%)
4 stars
661 (40%)
3 stars
405 (24%)
2 stars
90 (5%)
1 star
20 (1%)
Displaying 1 - 30 of 160 reviews
Profile Image for Greg Nigh.
29 reviews26 followers
June 24, 2013
Physicist Richard Feynman remarked about scientists that if you can't explain what you are doing to your grandmother, then you don't understand what you are doing. That's from the guy who made common sense out of quantum electrodynamics (QED).

The sorry fact of the matter is that science relies upon obscure vocabulary, technical jargon and a maze of self-reference, a practice that holds the curious public at a comfortable two-arms-length distance. Important information is certainly conveyed through that technical mess, for sure, but important interests are protected from general scrutiny just as surely.

John MacCormick's "9 Algorithms That Changed the Future" has done for a handful of computer algorithms what Feynman did for QED. I would add two caveats to that statement, though. First, these 9 algorithms are profoundly more relevant to the everyday lives of virtually everyone using a computer. They are, in fact, what make modern computing possible. We use these algorithms with every search, email and internet transaction. Second, these algorithms are accessible to a popular understanding in a way that QED will, I doubt, ever be, even in hands of a genius like Feynman.

The only way to make complex topics accessible to a general audience is through the skillful us of analogy, and here is MacCormick's talent. For example, sending encrypted messages between two computers (such as we do each time we make an online purchase) is analogous to the problem of having to share a secret between two people at opposite ends of a crowded room when information can only be yelled from one end of the room to the other, in full earshot of everyone present. This is the task of computers trading your credit card number, for example. MacCormick makes this complicated task - the algorithm that accomplishes this seemingly impossible obstacle - easily evident by using yet another analogy, one related to the solution instead of the problem, one involving buckets of paint.

I'll not go into the details of that analogy. Readers can check out chapter 4 of MacCormick's book.

He distills a broad set of computer tricks down to a set of analogies that I think are accessible to anyone. However, this book is not all analogy. There are several cases where he is simply telling the reader how something happens, but he makes it unintimidating. Consider error correction, for example, that beautiful algorithmic trick that lets us transmit a file with millions of bits of data without a single little smidgeon arriving out of place. Without it we could not rely on the integrity of a single communication we make. With it, we generally have no idea it is there, hovering over every puff of transmission we send and receive, checking every bit twice to be sure the noise in the line doesn't degrade our eloquence and attention to detail.

MacCormick has done two groups of people a favor. The first and largest is the computer using public. I have long lamented that I am, almost universally, strictly a user of modern technology. If I were transported back in time 100,000 years with nothing but my current knowledge, I don't know that I know much that would advance the technology or civilization of people of that time. I could not, for example, demonstrate how to generate electricity, build a combustion engine (I certainly have no idea how to forge metal), or even get water out of a well with anything other than buckets. While this book doesn't allow me to instruct neanderthals about error correction in digital communications, it does, at least, let me see behind the curtain a bit and have a sense that I understand how this seeming miracle actually works. I am morphed from a passive user to an active one, if only in a trivial sense.

The second group that benefits from MacCormick's book is that of computer scientists, as well as the mathematicians and programmers that largely round out the technical aspects of computer program architecture. This book makes at least these few algorighms accessible. At the same time, the book inspires a sense of admiration for the brilliance behind the tricks and manipulations that make our computers do what they do.

MacCormick has done an admirable job. I recommend this book to anyone with a curiosity about how computers, and more specifically computers in communication, do what they do.
Profile Image for Nathan Brodsky.
15 reviews13 followers
September 20, 2019
I should have read this book at the beginning of my career. On the other hand, after 10 years experience I may appreciate it even more.
190 reviews41 followers
August 31, 2012
A surprisingly interesting and simple read (though perhaps overly simple in many parts) on some of the most important computer algorithms used today and how computer scientists solved for them. The writing is better than you would expect, the concepts are interesting (how google developed search algorithms, how secure transactions are run online, etc.), and the details are explained in a way so that no prior knowledge of algorithms or computer programming is necessary.

The only thing some readers may find annoying is that the author really dumbs down the math (almost insulting so, and to like a first grade level in parts), but to be honest, the fact that he made things so granular and simple shows that he really thought about explaining the algorithms in their most basic form to give a clear understanding.

This book is not written for computer scientists, but for regular people who just have a passing interest in how some of the most important algorithms work and how they came to be. It's a good breezy-ish read.
Profile Image for Dan.
480 reviews121 followers
April 23, 2022
Nice insight into some of the programming concepts and tricks that sustain our information society.
Profile Image for Vincent.
2 reviews1 follower
July 6, 2012
I like the premise of this book: Describe the key algorithms that make everyday computing possible in a simple accessible manner. Some of these algorithms include, indexing and pagerank which govern how search engines work, compression algorithms like JPEG which shrink the size of files, public key encryption which is the foundation for secure internet commerce and digital signatures, among others. I believe the author achieves his stated purpose which is to relate these beautiful and critical algorithms in a way that the general public can appreciate, much the same way you can appreciate stargazing more completely by learning a little astronomy. The book is written at a very basic level however so my guess is that anyone with an undergrad education in the physical sciences or engineering and some computing experience will find it too elementary as I did. For example at one point the author explains what exponentiation is. I was able to skim through large sections of elementary discussions very quickly so the book did not take long to read. I found the final chapter on the limits of computability and the halting problem the most interesting. I would love to see a sequel that went into much more detail on some of these algorithms. I’d also like some insight into how they are implemented in large-scale systems. Its one thing to understand how indexing and pagerank work but how do you then use it to service millions or billions of requests every second? One important point that the author makes is that Computer Science is not equivalent, as many people believe, to programming. This is an important distinction that many overlook. Historically, computer science descends from mathematics and the study of algorithms and computability is very different from actual programming. You might think of computer scientists as architects and programmers as builders. A good architect should probably understand building practices well to inform his or her designs. Overall the book achieved the goals set out by the author and I think it would be a very interesting book for a high school student, college freshman or sophomore interested in computer science as a profession.
Profile Image for Stephany Wilkes.
AuthorÌý1 book33 followers
May 12, 2014
Enjoyed this very much. It is utterly enthralling, clearly written, and beautifully typeset. I think that, if people were exposed to this sort of technical clarity in concept early enough, we may have more interest in science and technology than we do in the U.S. currently (lack of interest does not seem to be much of a problem in parts of India, by contrast).

I am more familiar than I realized with the contents (at least in the first chapter), so there is not yet much "new" to me - but I've been making software for a long time (17 years) and I'm not the target audience for this book. Besides, the best thing to do in these cases is to use subject familiarity as an opportunity to focus on how the author manages to explain technical concepts so simply and beautifully. I am learning as much from the author's style as the content.

Exceptional book.
Profile Image for Jacob.
879 reviews62 followers
June 2, 2015
This book is actually not really targeted to computer scientists like me, since I knew 8 of the 9 algorithms described in the book (Internet searches and indices was the exception). However, it did remind me a bit of my college days. Instead, this book is targeted to people who aren't computer scientists and want to get a feel for what computer scientists think about and what they do. To that end, it's difficult to say how successful it is since I don't know how well it introduces the nine ideas to someone unfamiliar with them. My feeling is that it's a bit too much like a textbook for those who aren't familiar with computer science, and to informal to be useful to those who are. I'll pass it to my father and see what he thinks; if he gets a lot out of it then it's probably quite good. Maybe he'll even understand ME better ;)
Profile Image for Emil Petersen.
433 reviews25 followers
August 10, 2021
This is a great general introduction to some algorithms that are used every day. As a computer Scientist I have been exposed to the content already, but I still highly appreciated the way it was explained and compressed into short introductions. It is often very difficult to communicate (maybe I should just stop the sentence here) technical content, but I think MacCormick succeeds very well. I always recommend good short books like this, and I wouldn't mind if he had included a few more chapters.
AuthorÌý7 books30 followers
February 8, 2013
Review of John MacCormick, �9 Algorithms that Changed the Future,� Princeton University Press, 2012.

An algorithm is a well defined procedure for performing a task. A household example of an algorithm is a recipe � for example, the list of ingredients together with the sequence of instructions needed to bake a pie. In order for a computer to perform a task, it needs ingredients � the data � and instructions � the algorithm.

Author John MacCormick, currently Professor of Computer Science at Dickinson College, has chosen nine important tasks performed by computers and explained the algorithms that are used. In a chapter devoted to each, he explains:
� The development of search engines � how to find information on the internet.
� The PageRank process used by Google to produce highly relevant search results.
� Public-key cryptography, enabling secure transmission of secret messages � such as your credit card number � over open communication channels.
� Methods for detecting errors in data transmission and automatically correcting them.
� Several pattern recognition techniques, illustrated by classifying handwritten numbers, facial recognition, and decision trees.
� Data compression. Storing text, music, and images efficiently.
� Databases. Storing and retrieving information efficiently. Techniques for modifying databases reliably, even when computers crash while the modification is in progress.
� Digital signatures. How to be certain data is trustworthy.
� Deciding what is computable.

Even though the techniques that enable these algorithms are complex, Dr. MacCormick explains them in a clear and interesting manner using well constructed examples.

I highly recommend this book for a fascinating and easily accessible look at the core of computer science and its application to everyday lives.
Profile Image for sofia.
127 reviews
December 16, 2023
4.25 🌟// It was pretty interesting. I really enjoyed reading about public key cryptography and neural networks (antonia I finally get it). I do think some chapters in the book were unnecessary though - the chapter about data compression was super boring and not very innovative to learn about. Also, the book simplified concepts A LOT, which was nice if I was confused about something (and anybody who doesn’t do CS can understand very easily), but also very slow and boring for some topics.
138 reviews3 followers
July 26, 2022
An interesting look at computer language and generally how computers work. It does a good job of introducing quite a few concepts but the explanations are lacking and his metaphors are slightly misleading.
Profile Image for Letizia Sechi.
AuthorÌý4 books125 followers
March 23, 2013
3 ragioni per leggerlo


Se pensando al termine “informatica� vi vengono in mente solo aggeggi che fanno bip bip bip o programmi misteriosi che hanno la tendenza a non funzionare proprio quando servono vi state perdendo tantissimo. Potreste scoprire che con qualche strumento in più anche l’informatica diventa affascinante «come un cielo stellato davanti agli occhi di un astronomo dilettante».

Il capitolo dedicato al riconoscimento di forme (pattern recognition) va al di là del puro fascino della comprensione di un’idea geniale, aprendo direttamente una finestra sul futuro dell’intelligenza artificiale.

«Il semplice fatto che un problema sia decidibile da un computer non significa che possiamo risolverlo nella pratica.» La risposta potrebbe � per esempio � richiedere milioni di anni. Cosa saranno in grado di fare in futuro le macchine e quali saranno (e perché) gli algoritmi a rimanere efficaci? Se volete capire se corriamo il rischio di doverci mettere a fare i filosofi per ingannare l’attesa mentre il computer elabora un 42, le conclusioni del libro saranno molto utili.
Profile Image for Idir Yacine.
53 reviews2 followers
August 28, 2021
The book contains a lot of introductory information with a non technical intensive approach .
Although in my opinion not all the chapters are equal I found (search engine , page ranking , public keys) chapters to be the most valuable it might be tho just my personal preference . Overall the less of an it guy you are the more recommended this book is .
Profile Image for Tere.
130 reviews5 followers
January 17, 2014
Too simple, perhaps because I already knew something about the topics. I ended up a little bit annoyed by all the simple examples with colours and padlocks and gave it up. I would recommend it for someone who doesn't know anything about computer algorithms.
Profile Image for Casey.
40 reviews2 followers
January 31, 2018
An accessible, clearly written, and interesting overview of the interesting ideas out there, without getting bogged down in the details of implementation. If you have a more tactical understanding of some of the algorithms described in this book - especially if you've ever had to do the challenging work of implementing any of these ideas in actual code - you may be tempted to write the book off as surface-level or gross oversimplification. But that's the point - any one of these topics could fill an entire library, but the author manages to describe each in about ~20 pages and give some intuition without losing a non-technical reader.

Granted, the book reads a bit like "Computers for Dummies" sometimes - i.e. on page 179, the author explains what a file extension is (lol). But overall the author does a great job of introducing just enough intuition for a given computer science construct that you'd know where to start looking if you wanted to dive deeper, and gives you the sense that you're skimming the surface of a very substantial and interesting iceberg.

A great intro to many diverse corners of computer science, and certainly a book I wish I had found earlier.
14 reviews
January 13, 2025
Read this book after completing my graduate course in Information Security. Great book on some of the most important algorithms in existence. Lucid analogies helped me understand how they work and why they’re used, though the section on determining computability got a bit convoluted. Overall great read I highly recommend even for the layman.
Profile Image for Vadym D..
12 reviews
November 24, 2019
Very good for starter. And best for making you to want more.
Profile Image for Maurizio Codogno.
AuthorÌý55 books144 followers
October 17, 2015
C'è solo una cosa che non mi è piaciuta di questo libro: gli esempi sono così semplificati che spesso diventa difficile riuscire a capire esattamente qual è la relazione con i sistemi reali. Usare la moltiplicazione anziché l'elevamento a potenza può lasciare perplessi, perché tutti sanno fare le divisioni e non si capisce perché invece il logaritmo discreto sarebbe così difficile da calcolare. Allo stesso modo l'insistenza sui "trucchi" per trovare mi sembra un tentativo di far pensare che l'informatica sia un coacervo di metodi ad hoc. Ma questo probabilmente è un mio problema: il libro non è certo stato scritto per chi come me è nel campo e ha anche una formazione matematica, ma per avvicinare il lettore comune ai concetti informatici. È molto rivelatrice la confessione alla fine del libro, dove McCormick ammette che la sua idea iniziale era di un testo diverso - diviso in due parti, una con gli algoritmi "facili" spiegati e l'altra con una semplice presentazione degli algoritmi "difficili" - ma poi si è accorto che tutti gli algoritmi interessanti erano anche "facili". La traduzione di Virginio B. Sala (nome che nella versione elettronica presa in prestito da MLOL non sono riuscito a trovare indicato, e ciò non è bello) è chiara e corretta.
Profile Image for Everson Luis de Campos Moura.
83 reviews1 follower
February 6, 2021
It feels like something is missing in the explanations

In this book, MacCormick tries to do a hard task: explain some very important algorithms in a way anyone can understand. No technical background needed. The author selected nine algorithms by himself, using his own criteria of relevance. As expected, his list is controversial. Being a software engineer, with strong technical background, I consider some explanations provided by the author hard to follow. The author really tried to put the algorithms in simple terms. But, by doing that, some explanations became shallow, incomplete, or confusing. Maybe, my judgement about the book is biased by my technical knowledge. Anyway, if you want to understand a little bit about the algorithms selected by the author and you have no technical background, I think this book is your best choice qnd it is a worth reading.
Profile Image for Pete.
1,053 reviews74 followers
August 25, 2013
Nine Algorithms That Changed the Future (2013) by John MacCormick is a well written good read that looks at exactly what the title suggests. The book covers indexing, pagerank, public key cryptography, error correcting codes, pattern recognition, data compression, database algorithms, digital signatures and also covers computability.
The chapters do involve thought and the book isn’t a completely light read. But it’s well worth it. Along with Patterns in The Stone this is one of the best books I’ve seen that explains computing concepts clearly to people who are not programmers.
Profile Image for Roberto Rigolin F Lopes.
363 reviews108 followers
February 1, 2016
Discuss computer science beyond programming is a great idea. MacCormick even compiled an interesting set of algorithms together with easy to follow explanations. The computability example was fun but the whole book still needs some work on its presentation. I felt a bit annoyed by the constant use of “to keep it simple as possible�; the whole thing should unfold smoothly.
Profile Image for Tiago Fragoso.
50 reviews5 followers
November 10, 2013
Best explanation on RSA I've read. Even better than its source material (The Code Book by Simon Singh)
Profile Image for Caio Paiva.
4 reviews
June 4, 2016
Simple and interesting for a casual read. Too trivial for a computer scientist or programmer
Profile Image for Barry.
419 reviews26 followers
May 29, 2020
We tend to take for granted computer and internet technologies that enable us to surf the net, shop and bank online safely and reliably, and run software that does a whole host of tasks. We are so used to things working rather well that we forget - or never knew - what lies beneath in the hidden recesses of computer code.

Mr. MacCormick sets out to change our forgetting or not knowing, and he does a right good job of it. By giving us a brief history and an extended lay-person explanation of a number of algorithms used in the world of computers, he highlights not only the geniuses who developed the algorithms but gives us a good base upon which we can understand how they work - even if you aren't familiar with computers.

Therein lies the genius of this book: even if you don't know anything about computers or complex math you should come away with a pretty good understanding of these algorithms and how important they are in computing.

The only downside to this book is that sometimes the explanations get tedious. Not because they are hard to understand but because they sometimes are over-explained ad naseum and we lose the point or just become a little numb.

That said, this is a fascinating account of the history of and science behind some major computer technologies.
Profile Image for YHC.
810 reviews5 followers
August 22, 2017
I got this ebook in Chinese for some time already, but i hesitated to read it because it's about computer science. It turned out to be actually very interesting about how the search engine works.
With his very easy examples and explanations, i get to understand "public key cryptography", "pageRank", "hamming code", "two dimensional parity", "low density parity- check code", "nearest -neighbor classifier", " decision tree", "artificial neural network".
For how the zip files work, "same as earlier trick" (ex, Ab1c250 means A repeats 251 times: b= back, c= copy), "shorter-symbol trick ( e=8, t=9, these 2 most used alphabets.)"
I think algorithm is an absolute logical language, it can also help your brain to think more logically. I like it, but i guess i won't be able to dip too deep due to my limited computer knowledge.
Profile Image for Hamit Yanalak.
2 reviews
October 25, 2018
Bir bilgisayar mühendisliği öğrencisi olarak, kitabı fazla basit anlatımlı buldum ama zaten kitabın amacı da bu. Herkesin anlayabileceği şekilde konuları ele almak ve özündeki işleyişi anlatmak. Kitap iyi, sürekleyici bence.
Özellikle sekizinci bölümde bazı imla ve yazım yanlışları var.
Kitapta saçma bulduğum bir olay var. Mesela 120. sayfadaki tabloya göre ya da resme göre diye bir ifade kullanıyor. 120. sayfada ya tablo/resim yok; ya da sözü edilen tablo/resim yok. Birkaç sayfa kaymış oluyor genelde ve bütünlüğü, okuma zevkini bozan bir durum bana göre. Umarım kitabın yeni baskılarında bu durum düzeltilir.
Eskiden Tübitak yayınlarından daha fazla kitap çıkardı ve daha fazla kitap olurdu ama eski kitapların yeni basımları yapılmıyor ve ekledikleri yeni kitaplar genelde çocuklar için oluyor. Umarım bu tarz kitaplar çıkmaya başlar.
İyi kitap, tavsiyedir.
152 reviews
July 18, 2017
Big mistake: I should have bought a paper version of this book and not an electronic.

This is certainly not for everyone but I found it fascinating. I can't say that I understood it all despite being told by the author that I did not need to know the nitty-gritty of computer science. I think he was wrong. You certainly need to have a better knowledge than I had, to appreciate it some of the points he was making and these became more difficult as the book reached its conclusion. It would have been far better to have read a paper version as it is imperative to be able to look back at diagrams and charts. However, I am so glad that I read it as it did extend my knowledge or at least about 60% of it did.
Profile Image for Rubens Altimari.
12 reviews6 followers
April 2, 2021
I think I expected a bit more of this book (or of this title). Still a good read, but not particularly mind-boggling. Something didn't click for me in the way the author explains the algorithms - maybe it's the diluting/simplification, maybe the lack of the Math/CS background when presenting them... In the attempt to make the topics accessible, they became confusing/boring/simplistic. Many people love this book, though, so maybe it's just me, or maybe it has an opposite effect if you DO happen to have a CS background. The algorithms themes covered are:

Search engine indexing
PageRank
Public-key cryptography
Forward error correction
Pattern recognition
Data compression
Database
Digital signature
Profile Image for Mbogo J.
449 reviews29 followers
February 14, 2018
MacCormick really broke down the concepts to the level of a "common reader" whoever that may be. His explanations were completely weeded out of technicalities can be understood by anyone really. This is both a good thing and a bad thing. It is good if you know very little about algorithms and just want the gist of it but if you have prior knowledge then the book is too simplified.

An example is the RSA encryption protocol. John went on and on about padlock and keys and a lot of them until I lost track but having previously came across it from other authors, it seemed the technical explanation will have been a lot better. A little trust on the readers part is needed. The best writer who mergers pop science and technicalities seemlessly is who starts with simplified explanations then tells the reader that they can ignore the more technical explanations and just move to the next chapter and only tenacious readers wade through the murky waters of string theory.

This book is good if you have very little knowledge of algorithms but if you have prior knowledge there is little that is new and whatever is, is very simplified.
Profile Image for Cassidy.
61 reviews
October 29, 2018
A very fun and informative book about some of the core appeals and functionalities in computer science. This book is an excellent read for those who are either considering pursuing the discipline further on their own or those who have no personal investment in the concepts presented, but would still like to be able to have intelligent discussions about the elements of modern technology which permeate our lives. This is an excellent and informative book which gets at the heart of a lot of modern technologies, doing a great deal to demystify the essential processes which dominate the information age. Overall, 9 Algorithms that Changed the Future a very accessible and enjoyable book.
Displaying 1 - 30 of 160 reviews

Can't find what you're looking for?

Get help and learn more about the design.