Teaching

CS 6222: Introduction to Cryptography

This course will provide an introduction to modern cryptography and its applications to computer security. This course will cover the fundamentals of symmetric cryptography (i.e., encryption and message authentication) and public-key cryptography (i.e., key-exchange and signatures) as well as cryptographic protocols like zero-knowledge proof systems.

Course Websites: Spring 2021, Spring 2020

CS 4102: Algorithms

This course introduces the analysis of algorithms and the effects of data structures on them. Algorithms selected from areas such as sorting, searching, shortest paths, greedy algorithms, backtracking, divide-and-conquer, and dynamic programming. Data structures include heaps and search, splay, and spanning trees. Analysis techniques include asymtotic worst case, expected time, amortized analysis, and reductions between problems.

Course Websites: Fall 2020, Fall 2019

CS 6501: Advanced Topics in Cryptography

This course will cover a collection of advanced topics in modern cryptography. We will begin with the theoretical foundations of cryptography, and then move on to discuss zero-knowledge proof systems, multiparty computation, elliptic-curve cryptography, post-quantum cryptography, and more.

Course Website: Spring 2019

CS 355: Advanced Topics in Cryptography

An advanced course in cryptography. Topics include foundations of cryptography, cryptographic protocols, elliptic-curve cryptography, post-quantum cryptography, and recent real-world applications of cryptography.

Course Website: Spring 2018

CS 359C: Classics of Cryptography

This seminar course revisits some of the greatest discoveries in modern cryptography: zero-knowledge proofs, factoring algorithms, elliptic-curve cryptography, post-quantum cryptography, and more. The course readings will be a combination of the original “classic” papers as well as more modern treatments of the same topics.

Course Website: Spring 2017