optimization problems and algorithms course