Syllabus

Course Summary

This course is intended to be a hands-on introduction to cryptography and cryptocurrencies. Students will spend most of their time learning about cryptographic algorithms and implementing them in Python.

This course will cover fundamental cryptographic primitives including:

Each of these is critical to the modern internet. In fact, your web browser used all of them to download this webpage!

We will also see how these primitives can be used to build a cryptocurrency (e.g., Bitcoin). Cryptocurrencies are exciting because they enable decentralized trust in areas that have traditionally been centralized, such as finance. Furthermore, they’re a good example of how long-standing open problems in mathematics (like consensus) can be resolved in the cryptographic setting.

Precise security definitions and proofs of security will not be emphasized in this course. Generally speaking, high school students don’t have the right mathematical background for this. However, if you’re interested in a more precise understanding of security, see A Graduate Course in Applied Cryptography and CS 355: Advanced Topics in Cryptography.

Prerequisites

Students should:

Course Logistics

Schedule