This page focuses on the course 6.890 Algorithmic Lower Bounds: Fun with Hardness Proofs as it was taught by Professor Erik Demaine in Fall 2014.
This course addressed algorithmic reductions and techniques for proving problems are computationally hard for a variety of complexity classes. Students created interesting gadgets, learned many hardness proof styles, explored the connection between games and computation, surveyed several important problems and complexity classes, and crushed hopes and dreams (for fast optimal solutions).
Students met twice a week for lectures and had the opportunity to meet once a week for optional problem-solving sessions focused on jointly solving open problems.
Course Goals for Students
- Learn when to give up the search for efficient algorithms
- See connections between computational problems
- Solve puzzles to prove theorems
- Solve open problems
Possibilities for Further Study/Careers
Many students who took this course in Fall 2014 met after the course was over to continue their work on open problems.
Other possibilities for further study included courses in complexity theory or advanced algorithms.
- 6.046 Design and Analysis of Algorithms or equivalent background in discrete mathematics and algorithms
- Alternatively, permission from the instructor
- No background in computational complexity required; all needed notations defined in class
6.890 was offered for the first time in Fall 2014.
In the following videos, Professor Erik Demaine describes various aspects of how he taught 6.890 Algorithmic Lower Bounds: Fun with Hardness Proofs.
- Inspiration for Developing the Course
- The Role of Fun in Research, Teaching, and Learning
- Inviting Students to Solve Open Problems
- Collaboration as a Problem-Solving Approach
- Students Scribing Lecture Notes
- Final Projects
- Using a Survey to Get to Know Students
- Course Iteration
The students’ grades were based on the following activities:
- 20% Problem sets
- 10% Scribed notes
- 50% Final project
- 20% Final presentation
Breakdown by Year
Both graduate and undergraduate students
Breakdown by Major
Mostly computer science majors
Typical Student Background
Although many students were computer science majors, few were theoretical computer scientists. Most had strong backgrounds in algorithms.
The course was designed for people working on challenging problems (by using heuristics or relatively slow algorithms, for example) and who needed to learn how to prove that their approaches were the best choices for solving the problems. 6.890 provided these students with a practical approach for proving hardness.