John MacCormick

John MacCormick

Professor of Computer Science

  • B.A., University of Cambridge, 1993
  • M.S., University of Auckland, 1996
  • Ph.D., University of Oxford, 2000


On sabbatical leave for the 2024-25 academic year.
Sabbatical position: Visiting Academic, University of Auckland, 2024-25.


Bio

John MacCormick’s work in computer science spans several sub-fields, including artificial intellegence, 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 麻豆区.


Featured media

. The Academic Minute featured speaker, September 8, 2023.

, lead article in The Conversation, May 9, 2023


Books

New edition and audiobook of "9 Algorithms"

Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers has been re-released in a for the Princeton Science Library series, together with an narrated by Quentin Cooper.

Nine Algorithms that Changed the Future

 

What Can Be Computed? A Practical Guide to the Theory of Computation

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

Here are direct links to ancillary materials for the book, which are released under the : 

  • Python progams, 
  • Java programs, 
  • the online appendix, 
  • lecture slides, 

The book also has a page at , and is available from the usual sources such as and .

cover of "What Can Be Computed?" by John MacCormick

Reviews and Media Coverage

  • on Linkedin, 8/25/18
  • at Computing Reviews, 5/1/19
  • at Computing Reviews, 2/21/19
  • at mathemafrica.org, 5/27/18
  • at mltrain.cc, 6/29/18
  • at ubyssey.ca, 8/15/18
  • at SIGACT News, March 2020
  • interesting , Dec 2019
Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers

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

9Algs cover

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, , or check out the . There's more good stuff at the , and the book's . If you want to buy it, 9 Algorithms is available as an eBook or hardcover from all the usual suspects, including and . 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:

  • Chuck Thacker, winner of the 2010 Turing Award—the highest award in computer science—said: "This book is for those who have wondered, 'What actually goes on in my computer?' MacCormick clearly explains some of the algorithms used by hundreds of millions of people daily. Not the simple algorithms like arithmetic and sorting, but more complex things such as how to determine the importance of web pages, if and when we are justified in trusting a computer-mediated conversation with another person, and the puzzling issue of what cannot be computed. I recommend it highly."
  • Andrew Fitzgibbon, who created the Emmy-award-winning camera software boujou, said: "It's been a long time since any book has given me the excitement I remember from reading Hawking and Feynman in my teens. This book does exactly that. It reminds me why I love computer science. MacCormick's explanations are easy to understand yet they tell the real story of how these algorithms actually work. This is a book that deserves not just to be admired, but celebrated."

Award from the Association of American Publishers

9 Algorithms received an for the 2012 Award for Best Professional/Scholarly Book in Computing & Information Sciences, awarded by the Association of American Publishers.

Translations

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

Media coverage of the book includes:

  • in EE Times, by Clive Maxfield, April 3, 2012.
  • Featured on the Australian Broadcasting Corporation's national radio program, Future Tense, in an episode called "The Algorithm": , .
  • Review in Financial World, by Diana Hunter, p45, April 2012: Html; PDF.
  • Review in SIAM News, March 2012 issue, by Ernest Davis. ; full text available in print only at present; appears online at after 6-8 weeks.
  • Review in the journal Science, Volume 335, p1305, 16 March 2012: Stunningly Successful Solutions, by Paul Curzon. ; (requires subscription); (requires subscription).
  • Scientific American Book Club's for March 2012.
  • with Sol Lederman, part of the Inspired by Math podcast series on the Wild about Math blog, March 12, 2012.
  • Review in , by Detlef Borchers, March 4, 2012.
  • Review in the , February 23, 2012, by Paul Di Filippo.
  • Review in Nature Physics, Vol 8(2), February 2012, p105, by Andreas Trabesinger. ; (subscription required).
  • by Brent Yorgey on his blog, The Math Less Traveled, February 4, 2012.
  • Review in BBC Focus magazine, p103, February 2012, by Robert Matthews. ; (requires subscription).
  • ’s Book of the Week in the January 26, 2012 edition (issue 2034), pages 52-53. Reviewed by John Gilbey.
  • with Michael "TechTalk" Kastler and Dave "Sparky" Saganaki on the WRLR radio show and podcast, . January 21, 2012.
  • An article about algorithms in the Italian daily newspaper Corriere Della Sera, written by me and translated by Maria Sepa: the article, entitled , appeared on page 7 of the La Lettura section, on January 15, 2012.
  • Review in (issue 2847, 14 January 2012, page 47), by Kevin Slavin. Also published as a New Scientist .
  • An on the Irish radio station Newstalk. The interview took place on January 18, 2012, on the show .
  • blog post, by Diane Coyle, January 8, 2012.
  • review, by Richard Isaacman, January 3, 2012.
  • Review for the , by Art Gittleman, December 26, 2011.
  • , November 23, 2011.
Stochastic Algorithms for Visual Tracking

 

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.


Recommended books about algorithms

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


Teaching

Courses

Spring 2024:

Fall 2023:

Spring 2023:

Fall 2022:

  •  (sections 1 and 2)

Spring 2022:

Fall 2021:

Spring 2021:

Fall 2020:

Spring 2019:

  • [global study course for the Dickinson Sciences Program, based at the University of East Anglia in Norwich, England]

Fall 2018:

  • [global study course for the Dickinson Sciences Program, based at the University of East Anglia in Norwich, England]

Spring 2018:

  • [global study course for the Dickinson Sciences Program, based at the University of East Anglia in Norwich, England]

Fall 2017:

  • [global study course for the Dickinson Sciences Program, based at the University of East Anglia in Norwich, England]

Spring 2017:

Fall 2016:

Spring 2016:

Fall 2015:

Spring 2015:

Fall 2014:

Spring 2014:

Fall 2013:

Spring 2013:

  • Independent study: C++ for Financial Engineering

Fall 2012:

Spring 2011:

Fall 2010:

Spring 2010:

Fall 2009:

Spring 2009:

Fall 2008:

Spring 2008:

Fall 2007:

Information for students

Research

Research overview

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

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 .

Here are a few of the questions my research has attempted to address over the years:

  • How can we track a person's finger accurately enough with a video camera to allow fluent human-computer interaction without using any type of touchscreen, mouse, or pointing device? (This is work from my PhD thesis, later published as chapter 7 of the book , and in the conference paper .)
  • When undergraduate students work in pairs on programming assignments in an introductory computer science course, how should pairs be assigned? Randomly? Or is it better to pair strong students with other strong students and less able students with other less able students? Or do pairs of mixed ability lead to better outcomes? (This question is tackled in a SIGCSE conference paper, .)
  • Suppose you are trying to store, in a data center, millions of files on behalf of thousands of customers. To guard against data loss, each file should have, say, three copies stored on different computers in the data center. How do you decide where to store the copies of each file, in such a way that the file can be efficiently retrieved later, while keeping the load on each computer balanced? (A possible solution is provided by an article in the ACM Transactions on Storage, .)
  • These days it's not uncommon to use video chat software such as Skype with two cameras, such as the front and back cameras on a tablet or cell phone. But can we enhance the experience using more cameras? If so, is this technically possible on commodity hardware? Is the conversation further enhanced by giving the remote viewer the ability to control the viewpoint? These questions are addressed by the research project and MultiCam software. The results appear in a and a .

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.

Research with Undergraduate Students
  • Advisor for honors thesis: Comparison and application of Neural Radiance Field single-object 3D reconstruction algorithms. Dzung Dinh, 2024.
  • Co-advisor for honors thesis: Efficient Bug Finding in Robotic Deep Learning. Hailie Mitchell, 2024.
  • Advisor for student research: COMP560, Applied Object Recognition, fall 2022, Dzung Dinh.
  • Advisor for honors thesis: An Analysis of Object Detection Systems for the Automatic Detection and Localization of Basking Rattlesnakes in Images. Anthony Vo, 2021.
  • Advisor for summer research project: Visualization of Deep Convolutional Neural Networks. Boo Sung Kim, 2021.
  • Advisor for honors thesis: An exploration of the incremental learning of neural networks. Jiahao Han, 2017.
  • Advisor for honors thesis: Whiteboard Scanning using Super-resolution. Wode Ni, 2016.
  • Advisor for student senior research project: . Justine Heritage, 2014.
  • Advisor for student senior research project: . Daniel Appello and Danielle Erickson, 2014.
  • Advisor for student senior research project: . Danfei Xu, 2013.
  • Advisor for NSF-funded student research project: . Danfei Xu, 2012. NSF grant IIP-0917466, subaward 4501-DC-NSF-7466.
  • Co-advisor for student senior research project: . Philip Hubert. 麻豆区 senior project thesis, 2012.
  • Advisor for honors thesis: . James Doyle. 麻豆区 computer science honors thesis, 2010. Presented at Dickinson Science Research Symposium, 2010 ().
  • Advisor of student-faculty summer research project: . Fabio Drucker, 2009. Also appeared as: , Fabio Drucker and John MacCormick, in Proc. IEEE Workshop on Motion and Video Computing (WMVC), 2009.
  • Advisor for honors thesis: . Ke Zhou. 麻豆区 computer science honors thesis, 2009. Presented at Sigma Xi Research Symposium, St. Joseph's University, 2009 ().
  • Advisor for honors thesis: . Ritwik Niyogi. 麻豆区 mathematics honors thesis, 2009. Presented at Sigma Xi Research Symposium, St. Joseph's University, 2009 (). It also appeared as: Time-varying gain modulation on neural circuit dynamics and performance in perceptual decisions, R. Niyogi and K.F. Wong-Lin, Abstract #246, Computational and Systems Neuroscience (CoSyNe) 2010, Salt Lake City, UT, USA (Feb, 2010), and was later published in a peer-reviewed journal as: Niyogi RK, Wong-Lin K (2013) . PLoS Comput Biol 9(6).
Publications

Books

  • .
    J. MacCormick.
    Princeton, 2018. 408pp.
  • .
    J. MacCormick.
    Princeton, 2012. 248pp.
  • .
    J. MacCormick.
    Springer, 2002. 174pp.

Peer-reviewed conference and journal papers

Book chapters

  • Needles in the World's Biggest Haystack: The Algorithm that Ranked the Internet.
    John MacCormick.
    In . Edited by T. Bosch. Chap. 17, pp. 108-112. Princeton University Press, 2022.
  • Statistical models of shape and motion.
    A. Blake, M. Isard, and J. MacCormick.
    Sequential Monte Carlo methods in practice, ed. A. Doucet, J.F.G. de Freitas and N.J. Gordon, pages 339-357. Springer, 2000.
    Earlier version available as a journal article.
  • A geometrical approach to calculating determinants of Wiener-Hopf operators.
    J. MacCormick and B. Pavlov.
    In A. Bohm, H. Doebner, and P. Kielanowski, editors, Irreversibility and causality: semigroups and rigged Hilbert spaces, pages 333-42. Springer, 1998.
    Full version available as a technical report.

Other publications and media

  • .
    John MacCormick.
    The Academic Minute featured speaker, September 8, 2023.

  • John MacCormick.
    The Conversation, May 9, 2023.
  • .
    John MacCormick.
    arXiv preprint arXiv:2302.09403, 2023.
  • .
    John MacCormick.
    ACM SIGACT News, Volume 51, Issue 1, March 2020, pp 12–14.
  • Python software accompanying What Can Be Computed?.
    John MacCormick.
    Available from , 2018. 13,000 lines of code.
  • Java software accompanying What Can Be Computed?.
    John MacCormick.
    Available from , 2018. 10,000 lines of code.
  • Lecture slides accompanying What Can Be Computed?.
    John MacCormick.
    Available from , 2018. 301 slides.
  • Online appendix to What Can Be Computed?.
    John MacCormick.
    Available from , 2018. 31 pages.
  • (Abstract Only).
    John MacCormick.
    Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education (SIGCSE '17), page 700 (2017).
  • . (Plain text.)
    John MacCormick.
    Math Horizons, p16, February 2017.
  • Alan Turing and the Turing Test. (Plain text; e-magazine.)
    John MacCormick.
    Dickinson Science Magazine, volume 1, issue 2, p31 (2014).
  • Curvature regularization for resolution-independent images.
    John MacCormick and Andrew Fitzgibbon.
    麻豆区 technical report. May, 2013.
  • Video Chat with Multiple Cameras.
    John MacCormick.
    Extended abstract in Proc. ACM CSCW Companion, 2013.
    Also available as a poster; a 10-page version (this is probably the most useful version for a first reading); and a technical report.
  • Video Chat with Multiple Cameras.
    J. MacCormick.
    Technical report, 麻豆区, 2012.
    Also available as on arXiv as .
  • Gli algoritmi del successo.
    J. MacCormick (translated by Maria Sepa).
    Corriere Della Sera, La Lettura, p7, 15 Jan 2012.
  • The efficiency of methods for storing capabilities and revocations in a secure SAN.
    J. MacCormick.
    Technical note 2002-005, HP Systems Research Center, Palo Alto, California, 2002.
  • Constellation: automated discovery of service and host dependencies in networked systems.
    Barham, P., Black, R., Goldszmidt, M., Isaacs, R., MacCormick, J., Mortier, R., and Simma, A.
    Microsoft Research Technical Report, MSR-TR-2008-67, 2008.
  • Hand tracking for vision-based drawing.
    M. Isard and J. MacCormick.
    Technical report, Visual Dynamics Group, Dept. Eng. Science, University of Oxford, 2000.
  • Probabilistic modelling and stochastic algorithms for visual localisation and tracking.
    J. MacCormick.
    PhD thesis, University of Oxford, 2000.
  • Learning switching linear models of human motion.
    V. Pavlovich, J. Rehg, J. MacCormick.
    Technical report 99-15, HP Cambridge Research Laboratory, 1999.
  • A Bayesian theory of multi-scale cross-correlation in images.
    A. Blake, J. Sullivan, M. Isard and J. MacCormick.
    In K. Mardia, R. Aykroyd, and I. Dryden, editors, Spatial-temporal modelling and its applications, 18th LASR Workshop, Leeds University Press, 1999.
  • Towards tracker initialisation by random sampling.
    J. MacCormick and A. Blake.
    In K. Mardia, C. Gill, and R. Aykroyd, editors, The Art and Science of Bayesian Image Analysis, pages 184-188, 17th LASR Workshop, Leeds University Press, 1997.

Talks
  • An accessible theory course, FOSS in the capstone, and other stories: an overview of CS education research at 麻豆区. University of Auckland CELT research group, August 23, 2024. .
  • Functional programming, in the data structures course, in Java. CCSC-NE conference presentation; Ithaca, NY; April 2023. .
  • Would you like a checksum with that? Guest lecture for AP computer science principles course, May 2021. .
  • Undecidability and more, using real computer programs. Computer science seminar, Open University, UK. 11/1/18. .
  • Algorithms do change the world. Conference on Mathematics for the 21st Century, Fondation Helvetica Educatio, Geneva. 5/25/18. ; ; .
  • Strategies for basing the CS theory course on non-decision problems. SIGCSE 2017 (Baltimore). 2/23/17. .
  • Practical approaches to teaching the CS theory module: nondecision problems and real computer programs. Colloquium talk, School of Computing Sciences, University of East Anglia. 10/4/17. .
  • Some Reasons Why Computer Scientists Should Study Math, and Mathematicians Should Study Computer Science. Math and Computer Science Majors' Dinner, 麻豆区, April 2017. (This is an updated version of the 2011 majors' dinner talk.) .
  • The Science of Search Engines. 9 Algorithms Workshop, Defence Institute of Advanced Technology, India (delivered via video link) 1/21/17. .
  • Why are password rules so annoying? (Dickinson college FaculTea talk, presented as part of cybersecurity month.) 10/28/15. .
  • Some ideas about computer programming, for the 麻豆区 Idea Fund, 4/13/2015. .
  • A few connections between 麻豆区, privacy, and security. Thoughts for a "contemporary moment" discussion between 麻豆区 students, 11/13/2013. .
  • The magic of error-correcting codes. Gettysburg College CS Colloquium, 10/3/13. .
  • , Microsoft author talk series, Microsoft Corp., Redmond, WA, 10/16/12.
  • A Brief Overview of Some of the Most Interesting Cutting-Edge Research on Computer Systems: highlights from the 2011 Symposium on Operating Systems Principles (SOSP). Informal departmental seminar, 麻豆区, 12/8/11. .
  • How does the Kinect work? 麻豆区 Math/CS Chat, 9/6/11. .
  • Some Reasons Why Computer Scientists Should Study Math, and Mathematicians Should Study Computer Science. Math and Computer Science Majors' Dinner, 麻豆区, 4/26/11. .
  • Did Alan Turing analyze the Halting Problem? Microsoft Research Silicon Valley Lab, July 2010. .
  • The Benefits of Pairing By Ability. SIGCSE 2010 (Milwaukee). .
  • The Coolest Theorem in Computer Science: Computers Can't Do Everything. 麻豆区 Math/CS Chat, 4/6/10. .
  • What should a scientist know about computer science? 麻豆区 Rush Hour interdisciplinary seminar, 10/13/09. .
  • How to keep a secret, even on the Internet. 麻豆区 Math/CS Chat, 11/4/08. . Similar talks were given at Princeton (3/3/10, as part of Princeton's Lunch and Learn series) and Messiah College (11/31/09).
  • Retrospective on leaving Silicon Valley Lab of Microsoft Research. July 2007. .
  • The Need for Polite Software. Microsoft Research Silicon Valley Lab, July 2007. .
  • Can Computers See? 麻豆区 Math/CS Chat, 2/2/07. .
  • The Science of Search Engines. 麻豆区 Math/CS Chat, 11/14/06. .
  • The Online Index-Merging Problem. Princeton Computer Science Colloquium, 10/14/05. .
Patents
  • A platform for distributed modeling of network service behavior.  Paul Barham, Moises Goldszmidt, Rebecca Isaacs, John MacCormick, Richard Mortier.  Filed 2006.
  • Searchable Storage System. Bill Hoffman, Marcus Jager, John MacCormick, Kristof Roomp, Chandu Thekkath. Filed 2006, issued 2010.
  • Replica placement using r-out-of-k hash functions for cost-effective, fast, and reliable distributed storage systems.  John MacCormick, Nick Murphy, Venugopalan Ramasubramanian, Udi Wieder, Junfeng Yang and Lidong Zhou. Filed 2006, issued 2008.
  • Dynamic activity model of network services. Paul Barham, Richard Black, Moises Goldszmidt, Rebecca Isaacs, John MacCormick, Richard Mortier. Filed 2006, issued 2011.
  • Relocating item in distributed storage system. Marcus Jager, John MacCormick, Douglas McCulloch. Filed 2007, issued 2013.
  • Automatic discovery of service/host dependencies in computer networks. J MacCormick, P Barham, M Goldszmidt. Issued 2010.
  • Network flow for constrained replica placement. John MacCormick. Issued 2010.
  • Data Replication In A Distributed System.  Bill Hoffman, Marcus Jager, John MacCormick, Kristof Roomp, Chandu Thekkath, Lidong Zhou.  Filed 2006, issued 2009.
  • Scheduling of index merges.  John MacCormick and Frank McSherry.  Filed 2005, issued 2010.
  • Efficient Recovery of Replicated Data Items. John MacCormick, Chandu Thekkath, Lidong Zhou. Filed 2004, issued 2010.
  • Systems and methods for structuring distributed fault-tolerant systems. John MacCormick, Chandu Thekkath, Lidong Zhou. Filed 2005, issued 2006. 
  • Method and system for renaming consecutive keys in a B-tree.  John MacCormick. Filed 2004, issued 2009. 
  • Distributed detection with diagnosis. Paul Barham, Richard Black, Moises Goldszmidt, Rebecca Isaacs, John MacCormick, Richard Mortier. Filed 2006.
  • Balanced prefetching exploiting structured data. C. A. Thekkath, John MacCormick, Lidong Zhou, Nicholas Murphy. Filed 2005, issued 2009.
  • Method and system for estimating the three dimensional position of an object in a three dimensional physical space.  Adrian E. Broadhurst, John P. MacCormick, Donald Tanguay, Michael Harville. Filed 2005, issued 2015. 
  • Method and apparatus for estimating time delays in systems of communicating nodes.  Marcos K. Aguilera, John MacCormick. Filed 2004, issued 2006. 
  • Method and system for managing access control.  Marcos K. Aguilera, Minwen Ji, Mark Lillibridge, John MacCormick, Oerwin Oertli, Dave Anderson, Mike Burrows, Tim Mann, Chandu Thekkath. Filed 2003, issued 2004. 
  • Method and system for securing block-based storage with capability data.  Marcos Aguilera, Minwen Ji, Mark Lillibridge, John MacCormick, Oerwin Oertli, Dave Anderson, Mike Burrows, Tim Mann, Chandu Thekkath. Filed 2003, issued 2004.
  • System and method for preventing replay attacks.  Marcos K. Aguilera, Mark Lillibridge, John MacCormick. Filed 2003, issued 2011.