Classics of Cryptography
CS359C — Spring 2017

This course will review some of the greatest discoveries in modern cryptography: zero-knowledge proofs, factoring algorithms, elliptic- curve cryptography, post-quantum cryptography, and more. Some of the topics we will cover have immediate practical applications. Other topics we will study for their potential future applications. And yet others, we will study for the theoretical insights they provide. The course readings will be a combination of the original "classic" papers and more modern treatments of the same topics.

This course was inspired in part by Christos Papadimitriou's UC Berkeley course on "Reading the Classics."

Final projects! Read the students' final projects online here.

Administrative Information

Lectures: Wednesdays, 2:30-4:55pm
Instructors: Henry Corrigan-Gibbs and David Wu
Course Assistant: Sam Kim (skim13 at stanford dot edu)
Prerequisites: An introductory crypto course, such as CS255, and an introductory algorithms course, such as CS161. If you are not sure whether you have the background necessary to take the course, just come to the first lecture and chat with us afterwards if you are still unsure.
Grading, Problem Sets, and Projects: Detailed information on grading, problem sets, and the final project is available on this page.
Ask us for a list of sample project ideas. You must use the Usenix LaTeX template for your milestone and final project reports. For the final project report, you must submit a hard-copy in class and an electronic copy to (to be posted to the course website at the conclusion of the course).
Proposal due April 19, 2017
Milestone due May 17, 2017
Final Report due June 7, 2017 (no late days)
Feedback Form: You can send anonymous feedback to the course staff at any time during the quarter by filling out this feedback form. We want your feedback!
Office Hours:
Henry: Thursdays 1:15pm-2:15pm in Gates 492
David: Tuesdays 3-4pm in Gates 492
Sam: Fridays 2-3pm in Gates 490
Questions? Email or post a question to Piazza


April 5 – Definitions and Foundations
April 12 – Symmetric-Key Primitives
April 19 – Number-Theoretic Cryptography
April 26 – Elliptic-Curve Cryptography
May 3 – Basics of Zero Knowledge
May 10 – More Zero Knowledge Protocols
May 17 – Oblivious Transfer and Yao's Garbled Circuits
May 24 – Secret Sharing, Error Correction, and Multi-party Computation
May 31 – Classical Cryptanalysis
June 7 – Lattice-Based Cryptography and Quantum Cryptanalysis