CS 4803/8803 PC: Programmable Cryptography, Fall 2026
This course introduces recent tools for programmable cryptography, such as:
- zero-knowledge proofs (ZKPs),
- multi-party computation (MPC),
- fully homomorphic encryption (FHE),
- private information retrieval (PIR),
- differential privacy (DP), and
- trusted execution environments (TEEs).
These tools take as input a computation, and execute it securely and privately over data, for different definitions of secure and private. We will learn:
- what these tools do,
- how they work internally,
- how to prove their security,
- and how to write code to use and implement them.
History
Cryptography began as the study of secure communication. That is what ciphers, digital signatures, public-key exchange, and hashing are for. These primitives allow us to protect (hide and authenticate) data.
The focus of this course is secure computation. That, the tools listed above. All of these tools secure computations, not just data. Usually, the computation itself is an input to the tool—so the tool is programmable.
Acknowledgements
Thanks to Jacob Mattingley’s jemdoc tool for this website’s design.
This course is based on Stanford’s CS 355; thanks to all its prior instructors—Dan Boneh, David Wu, Henry Corrigan-Gibbs, Sam Kim, Dima Kogan, Florian Tramer, Saba Eskandarian, Alex Ozdemir, Riad S. Wahby, Wilson Nguyen, Neil Perry, Trisha Datta, Aditi Partap, and Rohit Nema—for sharing the joy of cryptography with so many students (including me) over the years.