- Kursusudbyder: Københavns Universitet
This course introduces students to techniques for solving complex programming tasks arising in modern IT systems. Focus in the course is on algorithm design and identification of computationally hard problems. The course contains both theoretical and analysis and implementation exercises.
After the course, the student should be able to solve a wide range of real-life programming problems in a scalable way by employing algorithmic design techniques and tools.
In particular, the student should able to:
- Identify and formulate precisely (if possible) the algorithmic problem underlying in a given programming task.
- Apply the following algorithmic techniques when solving a problem: Greedy, divide and conquer dynamic programming, reduction to network flow.
- Look up suitable NP hardness results in a compendium, and perform simple reductions from such problems to establish NP hardness.