The Computational Lens

Course ID 15155

Description What is knowable, in principle and in practice? - What does it mean to be intelligent? - Can creativity be automated? - What is the role of randomness in the universe? - How can we achieve provable guarantees of security, privacy, fairness, etc. in various settings? - What does the social network of the world look like? - Do we live in a simulation? Despite their differences, all of these questions are fundamentally about the notion of computation. And all these questions can be put under the following single umbrella: What is computation and how does it shape our understanding of life, science, technology, and society? This course is for anyone interested in these questions and more broadly, anyone interested in the algorithmic lens to tackle hard, foundational problems. Our goal will be to find reliable explanations through modeling and rigorous reasoning. We will discuss great and powerful ideas from the field of theory of computation and see how these ideas shed new light on human reasoning, laws of nature, life, technology, and society.

Key Topics
Introduction to mathematical reasoning
Formalization of computation
Uncountability
Uncomputability
Unprovability
Computational complexity
Graph/network theory
P vs NP
Overview of randomness in computer science
Randomized algorithms
Cryptography
Quantum computation
Statistical physics
Learning theory
Evolution as a learning algorithm
Fair division
Algorithmic game theory
Interactive Proofs

Required Background Knowledge
Some elementary programming experience. No mathematics background beyond high school mathematics is expected.

Course Relevance
Theory of computation is one of the richest and deepest intellectual fields with connections to computer science & engineering, mathematics, physics, biology, statistics, philosophy, social sciences, economics, etc. The reason for this is that computation (i.e. information processing) is very fundamental, and in many systems ¿ whether natural or human-made, primitive or emergent ¿ the most important or relevant aspect of the system is how information evolves. Theory of computation brings powerful ideas and techniques like modeling, abstractions, algorithms, reductions, classifications, etc. that help us push the boundaries of what we know, what we understand, and what we can explain. Future intellectuals and leaders, whether they have a technical background or not, should recognize the true nature of computation as one of the pillars of human knowledge, understanding and discovery.

Course Goals
Define the notions of computation, algorithm, and computational complexity.
Express and compare the computability and computational complexity of problems.
State and give examples of the connections of the theory of computation with mathematics, physics, biology, statistics, philosophy, social sciences and economics.
State and give examples of technological real-world applications of the theory of computation.
Recognize the use of ideas and techniques from the theory of computation, like modeling, abstraction, algorithmic thinking, reductions, classifications.
State and explain the important and well-known open problems in the theory of computation and their connections to other fields.

Learning Resources
Course notes, online readings, course discussion board

Assessment Structure
Weekly homework. No exams.

Course Link
http://computationallens.com