The student gets a clear and well-founded understanding of algorithm design techniques in the selected topics.
The course introduces advanced data structures, greedy algorithms in graphs and scheduling, and divide and conquer techniques.
The student will also become familiar with how to establish efficiency properties of an algorithm and how to prove correctness of an algorithmic solution.