Teaching at MIT


6.033: Computer Systems Engineering - Recitation instructor

This junior-level course will introduce you to a number of the most interesting and influential ideas in computer systems: virtual memory, DNS, BGP, TCP, and more. We will read a mix of historical computer-systems papers (e.g., the original UNIX paper from the 1970s), and recent research works. By the end of the course, you will have a solid foundation for graduate-level courses in computer systems and you will have a much deeper understanding of how to design and build large systems.

For students: Recitation notes.


6.893: Cryptographic Systems for Protecting Privacy - Instructor

This graduate-level cryptography course explores a number of beautiful cryptographic ideas for keeping sensitive data safe. In parallel, it considers why so few of these ideas make their way into real systems. What are the technical, economic, and social barriers to deploying privacy technologies? And even if we could use these privacy technologies in practice, to what extent would they address the most important privacy threats we face?


Teaching at Stanford


CS355: Topics in Cryptography - Co-Instructor

In Spring 2019, Dima Kogan, Florian Tramèr, and taught Stanford's 38-student advanced course on cryptography. This iteration of the course covered standard cryptographic protocols, privacy-enhancing technologies, lattices, and classical cryptanalysis.


CS355: Topics in Cryptography - Co-Instructor

In Spring 2018, David Wu, Sam Kim, and taught Stanford's 37-student advanced course on cryptography. Our version of the course covered cryptographic protocols, lattice-based cryptography, and recent real-world applications of modern cryptography.


CS359C: Classics of Cryptography - Co-Instructor

In 2017, David Wu and I designed and taught a seminar course on topics in cryptography. The goal of the course was to expose students to some of our favorite "classic" topics in cryptography and to give them a taste of research through a quarter-long independent project.


CS255: Introduction to Cryptography - Course Assistant

In 2016, I served as one of five teaching assistants for Stanford's 217-person introductory cryptography course. In that role, I gave two guest lectures in the course and designed a new programming project designed to expose students to the intricacies of the TLS protocol.