Discrete optimization is a lively field of applied mathematics in which techniques from combinatorics, linear programming, and the theory of algorithms are used to solve optimization problems over discrete structures, such as networks or graphs. The course will emphasize algorithmic solutions to general problems, their complexity, and their application to real-world problems drawn from such areas as VLSI design, telecommunications, airline crew scheduling, and product distribution. Topics will be selected from: Network flow, optimal matching, integrality of polyhedra, matroids, and NP-completeness. This course will be offered in 2022-23, and in alternating years thereafter.