Discrete optimization deals with problems of maximizing or minimizing a function over a feasible region of discrete structure. These problems come from many fields like operations research, management science and computer science. The primary objective of this module is twofold: (a) to study key techniques to separate easy problems from difficult ones and (b) to use typical methods to deal with difficult problems. Major topics: Integer programming: cutting plane techniques, branch and bound enumeration, partitioning algorithms, the fixed charge and plant location problems. Sequencing and job-shop scheduling. Vehicle routing problems.