Algorithmic Number Theory and Cryptography

CS 303

Winter 2024


Schedule: Monday/Wednesday 10:30 am - 11:50 am
Location: 3675 Market St, Room 1052

Instructor: Naomi Sirkin
Office Hours: Monday/Wednesday 1:00 pm - 2:00 pm, 3675 Market St, Office 1139

Course Assistant: Yashodha Ravichandran
Office Hours: Tuesdays 2-4pm, Thursdays 12-2pm, CLC (Room 1066)

Course Description

This course will provide an introduction to the foundations of cryptography, with an emphasis on provable security. Cryptography enables mutually distrustful parties to interact securely in a variety of settings. These interactions include the ability to communicate securely over untrusted channels, compute over encrypted data, and certify information about secrets without divulging the secrets themselves. Goals for the course include learning how to reason about adversaries, define security in different settings, and gain familiarity with various cryptographic tools.


This is a proof-based course, which will require some mathematical maturity with reading and writing proofs. The course will also rely on familiarity with basic probability. The pre-requisites required for this course include undergraduate data structures (CS 260), a course in linear algebra (MATH 201 or equivalent), and a course in discrete math (MATH 221 or equivalent).


Resources each lecture will be posted after each class. The recommended textbook for this class is Introduction to Modern Cryptography by Jonathan Katz and Yehuda Lindell, and students are highly encouraged to refer to this textbook for reading that will compliment the lectures. The relevant chapters will be posted alongside the lecture notes. Parts of the course will also follow The Joy of Cryptography by Mike Rosulek. These books are linked below, along with some excellent references which may be useful throughout the course.

Course Schedule (updated weekly)

(KL is the Katz-Lindell book, JC is Joy of Cryptography)

Jan 8: Introduction and Course Overview

Jan 10: One-Time Pad and Perfect Secrecy

Jan 15: **MLK Day, no class**

Jan 17: Computational Hardness

Jan 22: Pseudorandom Generators

Jan 24: PRGs to Encryption, Reductions, and Hybrid Arguments

Jan 29: PRG Expansion, Hybrid Arguments, and CPA Security

Jan 31: Pseudorandom Functions

Feb 5: CPA-Secure Encryption from PRFs and PRFs from PRGs

Feb 7: Authentication

Feb 12: Midterm Review

Feb 14: Midterm

Feb 19: CCA-Secure Encryption

Feb 21: Constructing CCA-Secure Encryption and starting Public-Key Encryption

Feb 26: Number Theory Preliminaries

Feb 28: Number theory, prime numbers, and factoring

Mar 4: Diffie-Hellman Key Agreement

Mar 6: Public-Key Encryption and RSA

Mar 10: Digital Signatures

Mar 13: Final Review


There will be about 4 homework assignments. For exams, there will be a midterm and a final.

The midterm will be on Wednesday, February 14.

The final will be on Friday, March 22 from 1:00pm - 3:00pm in room 1054-1055.

Grading: 45% Homework, 20% Midterm, 25% Final, 10% Class Participation

Homework Policy

All assignments will be posted on Blackboard.

Deadline. Assignments are due at 11:59pm on the posted date. They must be submitted via Blackboard.

Format. Homeworks must be submitted as a PDF. You are strongly recommended to typeset your assignments using Latex.

Collaboration. You are allowed (and encouraged!) to collaborate with up to two other students on each homework assignment. However, you must write up your solutions individually, without relying on any shared notes or solutions from any other students, and you should be able to explain each of your solutions. If you discuss the homework with other students, please write the names of those students on your submitted homework. You are allowed to consult the textbooks listed on this page, and other published textbooks, as a reference when solving the assignments. If you use a textbook not listed in the resources section, please specify it on your assignment. All other sources are not allowed.

Late Days. You are allowed five late days in total during the course. Each late day can be used to extend a homework assignment deadline by one day. Late days cannot be split into "partial" days. You can use all of your late days on a single assignment, or use them on different assignments (or not use them at all).



Computational Hardness and Pseudorandomness

Symmetric-Key Cryptography

Public-Key Cryptography