have a clear understanding of the notation of asymptotic growth of functions and be able to use this notation to describe the complexity of computational problems
describe equations for the complexity of algorithms and solve such equations
work with common algorithmic techniques such as dynamic programming, greedy algorithms.
deal with basic problems using graph algorithms, string matching, computational geometry and flow networks.
Asymptotic notation and recurrence equations. Data structures for disjoint sets. Dynamic programming. Greedy algorithms. Graph algorithms such as shortest path and minimum spanning tree. Maximum flow problems in flow networks. Applications of string matching, computational geometry, data compression.
Lectures, lessons, and exercises.
Written exam (3 credits). Assignments (2 credits).