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. 2007. 2008. 2009. 2010. 2011. 2012. 2013. 2014. 2015.
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.
A paper describing the goals of this class and our experience teaching it at Columbia and elsewhere is available here.