Lecture slides by Richard Cleve (with some additions by Jon Yard)