Credits: 5

Schedule: 12.09.2016 - 09.12.2016

Teaching Period (valid 01.08.2018-31.07.2020): 

I - II (Autumn)

Learning Outcomes (valid 01.08.2018-31.07.2020): 

At this course you will become familiar with a number of fundamental structures and principles underlying the design of efficient algorithms, and will learn to approach new algorithmic problems using these generic paradigms. You will also come to appreciate the possibilities and limitations of theoretical a priori analysis of algorithm efficiency, and learn to perform such analyses in simple cases.

Content (valid 01.08.2018-31.07.2020): 

Fundamental algorithm design paradigms: divide-and-conquer, greedy algorithms, dynamic programming. More advanced philosophy of algorithms design: Randomization, duality, and algebraic techniques. 

Assessment Methods and Criteria (valid 01.08.2018-31.07.2020): 

Exercise sessions, programming assignments, and exam. 

Workload (valid 01.08.2018-31.07.2020): 

Lectures. Exercise sessions. Exam. Independent work. 

Study Material (valid 01.08.2018-31.07.2020): 

S. Dasgupta, C. Papadimitriou, U. Vazirani: Algorithms. McGraw-Hill 2008.

Substitutes for Courses (valid 01.08.2018-31.07.2020): 

Replaces the courses T-79.4202 Principles of Algorithmic Techniques and T-106.4100 Design and Analysis of Algorithms.

Prerequisites (valid 01.08.2018-31.07.2020): 

First year engineering mathematics, together with an introduction to probability theory (e.g. MS-A05XX), and programming skills (e.g. CS-A111X). Familiarity with basic data structures (e.g. CS-A114X) an asset.

Grading Scale (valid 01.08.2018-31.07.2020):