Faculty Profile

John MacCormick

Professor of Computer Science (2007)

Contact Information

jmac@dickinson.edu

Tome Scientific Building Room 242
717-245-1626

Bio

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 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. He joined the Dickinson faculty in 2007.

Education

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

2025-2026 Academic Year

Fall 2025

COMP 130 Introduction to Computing
An introduction to computer science as a scientific discipline. The key elements of computer programming will be introduced, using the Python programming language. This leads to techniques for solving problems and conducting scientific investigations via computation. Core topics include: programming constructs such as conditionals, loops, functions, and parameters; data structures such as arrays and dictionaries; libraries and objects; algorithmic techniques such as recursion; and software engineering techniques such as testing and debugging. Additional topics include social, legal and ethical issues raised by computing and computing for the greater good.Students may not take this course for credit if they have already received credit for COMP 132 or COMP 232.

COMP 378 Database Systems
A study of the conceptual, technical and social issues involved in organizing, storing and accessing large volumes of data. Topics may include data modeling, relational database design, relational algebra, data definition languages, data manipulation languages, and the storage and manipulation of unstructured data. Prerequisites: 232 and MATH 211.