use the notation of asymptotic growth of functions and be able to use this notation to describe the complexity of algorithms and computational problems
derive equations for the complexity of algorithms and solve such equations
work with common algorithmic techniques such as dynamic programming, greedy algorithms, etc.
deal with basic problems using graph algorithms, string matching and flow networks.
define the complexity classes P and NP, and discuss the open question whether P=NP.
present and discuss topics related to the course content orally and in writing with a skill appropriate for the level of education.
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 problem in flow networks. Algorithms for string matching. Theory of intractable problems.
Lectures, lessons, and exercises.
Written exam (3 credits). Assignments (2 credits).