
Fall 2016:  Theory of Computation (CS 353), an undergraduate course. 
Spring 2016:  Theory of Computation (CS 388T), a graduate course. 
Fall 2015:  Randomized Algorithms (CS 378), an undergraduate course. 
Fall 2014:  Coding Theory (CS 395T), a graduate course. 
Spring 2014:  Combinatorics and Graph Theory (CS 388C), a graduate course. 
Spring 2013:  Algorithms and Complexity (CS 378, now CS 331), a required undergraduate course. 
Fall 2009:  Pseudorandomness (CS 395T), a graduate seminar. 
Fall 2008:  Randomized Algorithms (CS 388R), a graduate course. 
Spring 2004:  Polynomials and Computation (CS 395T), a graduate seminar. 
Lecture Notes:  Pseudorandomness and Combinatorial Constructions (CS 395T), a graduatelevel introduction to my research area (2001). 