John MacCormick’s work in computer science spans several sub-fields, including computer vision, large-scale distributed systems, computer science education, and the public understanding of computer science. He is the author of three books, including Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers and What Can Be Computed?: A Practical Guide to the Theory of Computation. Dr. MacCormick holds 19 US patents on novel computer technologies and is the author of numerous peer-reviewed articles; his Nine Algorithms book has been translated into eight languages. Dr. MacCormick has degrees in mathematics from the University of Cambridge and the University of Auckland, and a doctorate in computer vision from the University of Oxford. He was a research fellow at Linacre College, Oxford from 1999-2000, a research scientist at HP Labs from 2000-2003, and a computer scientist with Microsoft Research from 2003-2007. Since 2007, Dr. MacCormick has been a professor of computer science at Dickinson College.
This is an undergraduate textbook for a course on Theory of Computation. The key characteristic of the book is that it is designed to be uniquely accessible to undergraduates, focussing on real computational problems using real computer programs as the computational model. Please see the official What Can Be Computed? website.
Here are direct links to ancillary materials for the book, which are released under the Creative Commons Attribution 4.0 International License:
What is this book about? It explains how your cell phone, laptop, tablet, and other computers do the amazing things they do. How they can search the entire web in a fraction of a second. How they can transmit vast amounts of data over unreliable wireless connections, without making a single error. How they can recognize your speech and handwriting. And many others.
The book assumes no knowledge of computer science. It's designed to be read and enjoyed by anyone who's curious about how our computing devices manage to be so smart. Interested? Please, peek inside, or check out the table of contents. There's more good stuff at the 9 Algorithms Facebook page, and the book's official page at Princeton University Press. If you want to buy it, 9 Algorithms is available as an eBook or hardcover from all the usual suspects, including Barnes & Noble and Amazon. And of course there's a YouTube video:
Some people were kind enough to say nice things about the book; here are two of them:
9 Algorithms received an Honorable Mention for the 2012 Award for Best Professional/Scholarly Book in Computing & Information Sciences, awarded by the Association of American Publishers.
9 Algorithms has been translated (or in some cases, is currently being translated) into the following eight languages: traditional Chinese, simplified Chinese, Japanese, Korean, Russian, Italian, Greek, and Turkish.
Media coverage of the book includes:
Stochastic Algorithms for Visual Tracking: Probabilistic Modelling and Stochastic Algorithms for Visual Localisation and Tracking
Springer, 2002. 174 pages.
This technical monograph describes a mathematical and computational framework for implementing algorithms that track moving objects in video. The approach emphasizes the use of probability distributions to model knowledge of the object state. A key consideration is how to approximate, store, and efficiently update such distributions when the dimensionality of the object state is large.
It's one of my goals in life to help anyone and everyone understand computer science and algorithms. So please check out my list of recommended books about algorithms for people who know nothing about algorithms, on shepherd.com.
My computer science research is motivated by the fundamental questions at the heart of artificial intelligence and computational theory: what problems can computers solve, and to what extent can computer programs exhibit the type of intelligence we recognize as human? I am currently working on modern reinterpretation of these questions based on the phenomenal advances we have seen in AI during the 21st century. This project takes the form of a book manuscript targeted at a general audience, entitled AI Alive: Minds, Brains, and the Modern Revolution in Artificial Intelligence.
In recent years, I have also investigated new approaches to teaching theory of computation to an undergraduate audience—approaches described in the book What Can Be Computed? and a 2020 article in Communications of the ACM.
In addition to these recent strands of research, I enjoy working on a wide variety of problems in computer science. These include computer vision—that is, getting computers to understand images and video—large-scale distributed data storage systems, and pair programming techniques for undergraduate computer science education.
Complementing this technical research, I have another personal goal: the public understanding of computer science in general and algorithmic thinking in particular. Efforts to achieve this type of public understanding led to the book Nine Algorithms That Changed the Future.
Here are a few of the questions my research has attempted to address over the years:
To get a more complete picture of my research, please take a look at my publications and patents. You may also be interested in the list of talks I have given, and a separate section describing research with undergraduate students below.