CS255: Introduction to Cryptography

Introduction to Cryptography

Winter 2018

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, 2:30-3:20pm, Huang 18 (starting next week at Nvidia aud.)
Questions for CAs: cs255ta@cs.stanford.edu or use Piazza
Videos: cs255 online   (for video lectures covering the material in class)


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

Homework #0:   [html]
Due: Jan. 12
Homework #1:   [pdf]
Due: Jan. 29
Homework #2: [pdf]
Due: Feb. 19
Homework #3:   not out yet
Due: Mar. 12


Project #1 (password manager):   pdf   starter code
Due: Monday, Feb. 12, 11:59pm
Project #2 (using TLS):   not out yet
Due: Wed., March 14, 11:59pm



  • Psuedorandom functions and block ciphers:   [pdf]
  • 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]