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:
- symmetric encryption
- hash functions
- cyclic groups
- asymmetric encryption
- digital signatures
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:
- have a year of programming experience (in class or independently) and
- know the Python programming language
- data types: integers, strings, floats, lists, tuples, classes
- programming constructs: while loops, for loops, if statements
- project management: running scripts, import statements
Course Logistics
- Canvas will be used occasionally: for polls, quizzes, etc.
- We’ll be coding using Replit (REP-lit) (the invitation is on Canvas)
- Class: meets from 9am to 11am every day.
- Class will meet over Zoom (the link is on Canvas).
- Agenda for each day:
- short lecture
- problem session
- solution presentations
- questions
- Office hours: 8am to 9am, by appointment.
- The office hours schedule is on Canvas under “Syllabus”.
Schedule
- Part I: Cryptography
- Monday: python
- Tuesday: symmetric encryption
- Wednesday: hash functions
- Thursday: groups
- Friday: asymmetric encryption
- Monday: digital signatures
- Part II: Cryptocurrencies
- Tuesday: the UTXO model
- Wednesday: proof-of-work
- Thursday: a blockchain
- Friday: bonus lecture (elliptic curves, private cryptocurrencies, multiparty computation, …)