Algorithms for NP-hard problems in Coursera Discrete Optimization class.