Complexity Explorer Santa Fe Institute

Your progress is not being saved! Enroll now or log in to track your progress or submit homework.

Introduction to Computation Theory

Lead instructor:

About the Tutorial:

Introduction to Computation Theory is an overview of some basic principles of computation and computational complexity, with an eye towards things that might actually be useful without becoming a researcher. Students will examine the formal mathematics for foundational computation proofs, as well as gain tools to analyze hard computational problems themselves. 

Students who take this course should have basic knowledge of the principles of graphs. Some tutorial material references linear algebra, but familiarity is not necessary. This tutorial uses proofs, and requires understandings of formal math notations.

About the Instructor(s):

Josh Grochow is an Assistant Professor in the Department of Computer Science at the University of Colorado at Boulder, where he is a member of the CS Theory Group. Before joining the University of Colorado, he was an Omidyar Fellow at the Santa Fe Institute. Prior to SFI, he was a postdoc in the University of Toronto CS Theory Group, and prior to that he got his Ph.D. at the University of Chicago.

His research has two main thrusts (with deep underlying relations beneath):

1) Interactions between theoretical computer science and mathematics (particularly algebraic geometry, representation theory, and group theory), and

2) Developing the theory of complex systems and complex networks, and applying this theory with his collaborators in a variety of fields, such as ecology, evolutionary biology, economics, climate, and beyond.

Read more about Josh Grochow at his website here.

How to use Complexity Explorer
Enrolled students:


View Participant Map


Like this tutorial?

23 Student


  1. What is an algorithm?
  2. Absolute Limitations on Algorithms
  3. Resource limitations on algorithms
  4. Types of Algorithms
  5. P versus NP
  6. An algorithmic perspective on complex systems
  7. Algorithms for NP-hard problems in the real world
  8. Randomized algorithms and derandomization
  9. Homework