This course is about designing approximation algorithms for difficult

optimization problems for which no optimal algorithms with running

time polynomial in the problem size are known. Approximation

algorithms find feasible solutions that may not be optimal but are not

too far from the optimal one.

We overview various interesting

algorithm design techniques that may prove extremely useful to

graduate students tackling research questions in various fields and to

undergraduates who may encounter interesting problems in their future

projects in the industry.