This class was taught a number of times before at Columbia. Class notes for the 1999 class have been collected into a CS department technical report that you might have fun reading.
Past classes can be accessed here: 2000, 2001, 2002, 2003, 2004, 2006.
A more advanced version of this course (aimed only at PhD students) was given at Stanford University by Don Knuth. Your instructor was a TA for one of those courses. The course documents can be found here.