Given two topological objects (knots in three-space, say, or a pair of manifolds) can we tell if they are homeomorphic? What does it mean to 'give' a topological object? Where the problem is decidable (ie there is an algorithm which gives a yes or no answer) how effective is the solution? Ideas of Haken and Rubinstein give answers to these questions. Starting at an elementary level, we'll get all the way to the following theorem: three-sphere recognition is in the complexity class NP.