Lesson 1: Challenging Problems
An introduction to tough problems and their analysis
Lesson 2: Understanding Hardness
What we mean when a problem is "hard" and the concept of NP-completeness
Lesson 3: Showing Hardness
Tools to let you recognize and prove that a problem is hard
Lesson 4: Intelligent Force
Smart techniques to solve problems that should – theoretically – be impossible to solve
Lesson 5: Sloppy Solutions
Gaining speed by accepting approximate solutions
Lesson 6: Poking Around
Why randomness can be of help – sometimes. An introduction to complexity classes.
Lesson 7: Ultimate Limits
Problems that no computer can ever solve. In theory.