Available courses
CSE5854: Cryptography—Primitives and Protocols
This course builds on a standard first-semester cryptography course, exploring zero-knowledge proofs, private function computation, and lattice-based cryptography.

CSE5707: Discrete Optimization
The course will delve into methods and techniques used to solve combinatorial optimization problems with examples drawn from industry and covering scheduling, resource allocation or routing to name just a few. It will focus on mainstream optimization techniques with an emphasis on mathematical programming (e.g., Linear Programming, Integer Programming, Constraint Programming).
- Teacher: Laurent Michel
CSE 3160. Functional Programming Fundamentals. (3 Credits)
The course covers fundamental techniques in functional programming. While the primary focus is purely functional programming, side effects are explored for various purposes such as modeling I/O and rendering stateful objects. The course introduces elementary types, control flow, environments and scoping, closures, and other structural features of typical functional programs. The course may cover additional topics such as typed functional programming languages, type inference, continuation-passing, streams, and monads.
Enrollment Requirements: CSE 3100.
- Teacher: Tim Curry
- Teacher: Laurent Michel
Introduction to Modern Cryptography
Three credits. Prerequisites: CSE 3400, CSE 3500; and STAT 3025 or 3345 or 3375Q or MATH 3160.
An introduction to the fundamentals of modern cryptography focusing on development of secure cryptographic tools based on hard computational problems. Topics include one-way functions, pseudorandom generators, encryption, digital signatures, and protocols.
- Teacher: Alexander Russell