I have (co) taught the following courses / lectures:

CS 229r: Graduate seminar on physics and computation - Fall 2018

Harvard CS121: Introduction to Theoretical Computer Science - Fall 2019, Fall 2018 , Fall 2017.

Harvard CS127/CS227R: Cryptography - Spring 2018, Spring 2016. Taught before at Princeton as COS 433: Cryptography ( https://www.cs.princeton.edu/courses/archive/spring10/ , https://www.cs.princeton.edu/courses/archive/fall07/cos433/, https://www.cs.princeton.edu/courses/archive/fall05/cos433/ )

Harvard CS229r / MIT 6.S898: Proofs, beliefs and algorithms through the lens of Sum of Squares - Fall 2016 - graduate course/seminar on the Sum of Squares algorithm.

Winter school on the Sum of Squares algorithm - January 2017, San Diego.

Addis Coder. Summer course on algorithms and coding for high school students in Ethiopia. Guest lecturer in August 2016 and August 2019.

Lecture on the Rossman-Servedio-Tan circuit depth hierarchy for average-case complexity - guest lecture in Dana Moshkovitz’s advanced complexity course, May 12, 2015.

Sum of squares upper bounds, lower bounds, and open questions - seminar series at MIT, Mondays 2pm-5pm.

Summer course on the Sum of Squares method - in the Swedish Summer School of Computer Science, July 2014.

MIT 6.889 BU CAS CS 937: New Developments in Cryptography - co taught with Shafi Goldwasser, Leo Reyzin, Yael Kalai, and Salil Vadhan

Princeton COS 522 - (graduate) computational complexity : Spring 2009 Spring 2007 Spring 2006

Preceptor in Princeton COS 226 - Algorithms and Data Structures - Fall 2008.

Princeton COS 598D - Mathematical Methods in Theoretical Computer Science - Spring 2008

I maintained the home page for Gil Kalai and Avi Wigderson’s course on Mathematical Methods in Computer Science at the Hebrew University.

I maintained the home page for Nati Linal and Avi Wigderson’s course on Expander Graphs and Their Applications at the Hebrew University. Note: these lecture notes have been superseded by this excellent survey by Hoory, Linial and Wigderson.

I once gave a crash course on the Java programming language. Notes for it (in Hebrew) can be found here.