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. 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.

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

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. 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.

Compare

## 30 review for Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers

## Related products

**4**out of 5

### Rocks and Flowers in a Box (Lorna & Tristan #2)

**5**out of 5

5out of 5Greg Nigh–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 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.

5out of 5Nathan Brodsky–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.

4out of 5rmn–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 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.

4out of 5Stephany Wilkes–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 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.

4out of 5Vincent–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 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.

5out of 5Tditada–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.

4out of 5Casey–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 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.

5out of 5Vadym D.–Very good for starter. And best for making you to want more.

4out of 5Howard B.–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 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.

5out of 5Jacob–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 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 ;)

5out of 5Roberto Rigolin F Lopes–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.

5out of 5Caio Paiva–Simple and interesting for a casual read. Too trivial for a computer scientist or programmer

5out of 5Tiago Fragoso–Best explanation on RSA I've read. Even better than its source material (The Code Book by Simon Singh)

4out of 5YHC–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 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.

5out of 5Kend–Simply and straightforwardly written, illustrated sparingly but usefully, this would make a great introductory text for programming in either high school or the first year of college. I could see assigning it in a composition course, even, since it teaches basic logic, deduction, and narrative-building techniques in order to teach these algorithms. I probably would not have grasped the implications of PGP (Pretty Good Privacy) encryption (which I read about more extensively in We Are Anonymous: Simply and straightforwardly written, illustrated sparingly but usefully, this would make a great introductory text for programming in either high school or the first year of college. I could see assigning it in a composition course, even, since it teaches basic logic, deduction, and narrative-building techniques in order to teach these algorithms. I probably would not have grasped the implications of PGP (Pretty Good Privacy) encryption (which I read about more extensively in We Are Anonymous: Inside the Hacker World of LulzSec, Anonymous, and the Global Cyber Insurgency and This Machine Kills Secrets: How WikiLeakers, Cypherpunks, and Hacktivists Aim to Free the World's Information ) if it were not for MacCormick's "paint-mixing" analogy.

4out of 5John–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 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.

5out of 5Mbogo J–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 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 Brian Greene 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.

5out of 5Eric–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 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.

5out of 5Karen–GREAT BOOK!!! I'm amazed at MacCormick's explanation of various algorithms and concepts! He makes complicated concepts very easy to understand and also interesting to read! Although one regret I have is that I didn't read this book sooner. As an undergraduate student studying Computer Science and Mathematics, this book is way too simple for me and I regret that MacCormick had to omit certain more technical concepts to cater to more general public. But other than that, I think this book is great!!!

4out of 5Derek Andrews–Well written easy to grasp Liked the journey through the technology we rely on daily. Also wanted to find out about the Edison's of our time. At what point will these people be routinely studied in history class? Can you name the most important inventors of the late 20th and 21st century? Non technical and entertaining. The nine were well curated. The 10th greatest algorithm will be a competent auto correct instead of the annoying ones we have today.

4out of 5pwujczyk–Book describes couple interesting algorithms (page rank, digital signature, indexing, encrypting data, pattern recognition...) It is written in very easy language so all non tech people also should understand the main concept. For me (developer with couple years of experience) some of the information was still very interesting. From the book you can choose the chapters which are the most interesting for you and read only this. I think two of those chapters I will read in the future again.

5out of 5David Greenes–I bought this book for my high school age son, who is interested in learning about coding. I decided to read it myself and found it so engrossing and inspiring. Really a great book for anyone who wants to appreciate some of the elegant solutions to thorny problems that computer scientists have developed over the years.

4out of 5Kyle Reinholt–Excellent introduction to the amazing work people have done with technology help keep information safer and give us cool services like Google. The underlying concepts of ground breaking discoveries are explained in layman's terms so you don't have to spend all of your time trying to understand new processes. The analogies in this book are great!

4out of 5Fabrice–Together with "Algorithms To Live By" by Christian and Griffiths, this one now tops my list of favorite books! Hugely recommended to anyone who, without prior knowledge, wants to get a grasp of the working principles of computers. Those principles are based on simple, easily understandable tricks, that are explained in this book.

4out of 5Hiro–Excellent readable book which explains nine computer science topics relevant to everyday use of computers with accessible examples to illustrate the underlying ideas. Avoids typically dry academic topics such as sorting and focuses more on immediately relatable applications, which helps to keep the book interesting for non-experts.

4out of 5Ramon van Dam–An interesting read, but I'm not the target audience and thus nothing was really new for me. However, many sections (especially regarding error correction and databases) brought me back to my classes at university. Computer scientists can still enjoy this, but I mainly recommend this to people who are interested in the field and have no real knowledge on the subjects.

5out of 5Bryn Louise–Provides a readable explanation of the nine algorithms mentioned in the title. I have a math/comp sci background so I thought that MacCormick tended to over explain. I found myself skipping paragraphs when I saw where the explanation was going pretty frequently. Overall pretty interesting though.

5out of 5Grace–Lovey, fascinating read that is easy for people with no previous background in computer science to understand. (As some have complained that MacCormick dumbs everything down too much, I'm speaking as a rising high school sophomore who was assigned this as pre-class summer reading.)

4out of 5TheSaint–Interesting, but I will not understand the math, no matter how beautiful it is. Also, hardcover was first published in 2012, so maybe a little dated?

5out of 5TurtleLiving–A wonderfully accessible book about the behind-the-scenes of how much of the digital world works. I wish it covered more as the writing is very informative while also a very pleasant read.