Focuses on using zero-knowledge proofs to design and implement systems for privacy-enhancing technologies and computer security applications such as payments, identity systems, and counter-disinformation mechanisms. For years, zero-knowledge proofs were a primarily theoretical tool that allowed Alice to show that f(x, y) = z without revealing anything about x or y. However, zero-knowledge proofs have undergone incredible advances in the past ten years as a result of practical academic work and billions of dollars invested in industrial development, primarily in blockchains. This course will cover those advances with an eye to building practical applications in other domains.