I have (co) taught the following courses / lectures:
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
Preceptor in Princeton COS 226 - Algorithms and Data Structures - Fall 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.