Skip to main content Link Menu Expand (external link) Document Search Copy Copied


Table of contents

  1. About CS 171
  2. Books
  3. Prerequisites

About CS 171

Cryptography or cryptology is the science of designing algorithms and protocols for enabling parties to communicate and compute securely in an untrusted environment (e.g. secure communication, digital signature, etc.) Over the last four decades, cryptography has transformed from an ad hoc collection of mysterious tricks into a rigorous science based on firm complexity-theoretic foundations. This modern complexity-theoretic approach to cryptography will be the focus. E.g., in the context of encryption we will begin by giving a precise mathematical definition for what it means to be a secure encryption scheme and then give a construction (realizing this security notion) assuming various computational hardness assumptions (e.g. factoring).


The prescribed textbook for this course is Katz and Lindell’s text Introduction to Modern Cryptography (not free, some copies available in the library). Any edition is fine for this class. Here are some other excellent (and mostly free) resources:


The only formal prerequisite is a course on discrete mathematics (CS70). Specifically, we will assume familiarity with basic (discrete) probability and modular arithmetic. Students enrolled are also expected to have had some exposure to algorithms, mainly to be comfortable reading pseudocode and to be familiar with big-O notation.