Introduction to Cryptography

Location: Pittsburgh

Semester Offered: Fall

Cross listed Courses:

Course Number Department Units
15-356 Computer Science Department 9
15-856 Computer Science Department 12

This course is aimed as an introduction to modern cryptography. This course will be a mix of applied and theoretical cryptography. We will cover popular primitives such as: pseudorandom functions, encryption, signatures, zero-knowledge proofs, multi-party computation, and Blockchains. In addition, we will cover the necessary number-theoretic background. We will cover formal definitions of security, as well as constructions based on well-established assumptions like factoring.


Class format

Lecture and project-based

Home department


Target audience (e.g. undergraduates, MS students, PhD students)

  • Undergraduates: 17-334, 5-436, 19-534
  • MS / Ph.D.: 17-734, 5-836, 19-734. Students enrolled in these course numbers will have extended homework assignments and will be expected to play a leadership role in a group project that produces a paper suitable for publication.

Background required

A basic level of mathematical maturity is expected. It is recommended that you must have taken a course either in: algorithms or theoretical computer science (such as 15-251) or probability/discrete math (such as 21-228)

Learning objectives

  • Gain a solid background in the foundations of cryptography
  • Learn how to write proofs of security
  • Learn about topics at the forefront of cryptographic research such as zero-knowledge proofs, secure multi-party computation and blockchains

Faculty and instructors who have taught this course in the past

Vipul Goyal