Many relevant computational optimization problems are NP-hard, which prevents us from designing efficient algorithms that guarantee optimal solutions. One of the most reasonable options to handle this class of algorithms is to allow suboptimal solutions but to guarantee that the deviation from the optimum is limited. These algorithms are called approximation algorithms.
We will read modern research paper and learn powerful techniques needed to design approximation algorithms.