Math 566 - Discrete optimization