Full List of Courses Taught

Spring 2014:
CS294-98: Formal Methods for Engineering Education.
Fall 2013:
EECS 149: Introduction to Embedded Systems (co-taught with Edward Lee)
EECS 144 & 244: Fundamental Algorithms for System Modeling, Analysis, and Optimization (co-taught with Stavros Tripakis)
Fall 2012:
EECS 219C: Computer-Aided Verification
EECS 149: Introduction to Embedded Systems (co-taught with Edward Lee)
Fall 2011: EECS 144 & 244: Fundamental Algorithms for System Modeling, Analysis, and Optimization (co-taught with Edward Lee and Jaijeet Roychowdhury)
Spring 2011:
EECS 219C: Computer-Aided Verification
EECS 149: Introduction to Embedded Systems (co-taught with Edward Lee)
Fall 2010: EECS 144 & 244: Fundamental Algorithms for System Modeling, Analysis, and Optimization (co-taught with Edward Lee and Jaijeet Roychowdhury)
Spring 2010: CS 172: Computability and Complexity
Fall 2009: EECS 219C: Computer-Aided Verification
Spring 2009: EECS 149: Introduction to Embedded Systems
Fall 2008: EECS 244: Introduction to Computer-Aided Design of ICs (co-taught with Kurt Keutzer)
Spring 2008:
CS 172: Computability and Complexity
EECS 124: Introduction to Embedded Systems (co-taught with Edward Lee)
Fall 2007:
EECS 244: Introduction to Computer-Aided Design of ICs (co-taught with Kurt Keutzer)
CS 294-25: Current Berkeley Research in Programming Systems (co-taught with R. Bodik, K. Sen, D. Song, and K. Yelick)
Spring 2007: EECS 219C: Computer-Aided Verification
Fall 2006: CS 172: Computability and Complexity
Spring 2006: EECS 219C: Computer-Aided Verification
Fall 2005: EECS 244: Introduction to Computer-Aided Design of ICs (co-taught with Kurt Keutzer)