CS255: Introduction to Cryptography

Introduction to Cryptography

Winter 2020

Cryptography is an indispensable tool for protecting information in computer systems. This course explains the inner workings of cryptographic primitives and how to correctly use them.


Course syllabus (and readings)
Course overview (grading, textbooks, coursework, exams)
Lectures: Monday, Wednesday, 1:30-2:50pm, Gates B01
Sections: Friday, 4:30-5:20pm, Thornton 102
Questions for CAs: cs255ta@cs.stanford.edu or use Piazza
Videos: cs255 online   (for video lectures and slides covering the material in class)

Final Exam

In lieu of the final exam, students are invited to complete the following voluntary worksheet.

Previous final exams:

2019.pdf ,   2018.pdf ,   2017.pdf ,   2016.pdf ,   2015.pdf ,   2014.pdf ,   2013.pdf ,   2012.pdf ,   2011.pdf ,   2010.pdf.


All homework submission is to be done via Gradescope. Please use course code 93662W to sign up. Note that Gradescope requires that the solution to every problem start on a new page.

Homework #0:   [html]
Due: Jan. 13
Homework #1:   [pdf]
Due: Jan. 27
Homework #2:   [pdf]
Due: Feb. 17
Homework #3:   [pdf]
Due: Mar. 9
Optional worksheet:   [pdf]


Project #1 (password manager):   pdf   starter code
Due: Mon., Feb. 3, 11:59pm
Project #2 (chat client):   pdf   starter code
Due: Mon., March 2, 11:59pm



  • Basic number theory fact sheet I, primes:   [pdf]
  • Basic number theory fact sheet II, composites:   [pdf]
  • A Primer on number theory for computer scientists: [pdf]