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.
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?
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.
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.
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.