Design and Analysis of Algorithms
Instructor: Vitaly Skachek, office hours: Wednesday 15:00-16:30, or by appointment
Teaching assistants: Thamara Luup Carvalho, Karan Khathuria, Tejas Anil Shah
Lecture (Delta bld. room 1019): Wednesday 12.15 - 14.00
Practice (Delta bld. room 2047): Thursday 14.15 - 16.00 (both face-to-face and online) or Friday 12.15 - 14.00 (face-to-face) or Monday 16.15 - 18.00 (face-to-face)
Language of instruction: English
Main mode of communications: Moodle
- The first lecture will take place on Wednesday, September 1st. There is no class on Monday, August 30th.
- Due to COVID-19 situation, the course follows the corresponding university guidelines. The classes will be held in the hybrid mode. As of now, there will be face-to-face meetings for both lectures and practice classes. The lectures and practice classes on Thursday will also be streamed online.
Final exam and retake of the midterm
The information will be added soon.
There are two dates for the final exam: December 15th and January 19th, both at 12:15-13:55. You can choose any out of these two dates. Please register for the selected date in ÕIS.
Any printed and hand-written materials can be used in the final exam (as well as in the midterm retake). No electronic devices are allowed (i.e. no phones, no laptops, no smart watches).
The midterm exam will take place on November 10th at 12:15-13:55.
Any written and printed material is allowed in the exam. No electronic devices are allowed (no phones, computers, tablets, calculators, etc.)
- S. Dasgupta, C. Papadimitriou and U. Vazirani, Algorithms, McGraw Hill, New York 2008.
- V.V. Vazirani, Approximation Algorithms, Springer-Verlag, Berlin 2003.
- S. Even, Graph Algorithms, 2nd edition, Cambridge University Press, New York 2012.
- T.H. Cormen, C.E. Leiserson, R.L. Rivest and C. Stein, Introduction to Algorithms, MIT Press, Boston 2009.
This course focuses on design and analysis of advanced algorithms in computer science. It is advised to take Algorithms and Data Structures (MTAT.03.133) and Advanced Algorithmics (MTAT.03.238) (or equivalent courses) before you take this course or in parallel. In comparison to "Advanced Algorithmics", this course will emphasize the analysis of the algorithms (proof of correctness, complexity analysis), and will not focus on implementations and programming.
There will be six homework assignments, the midterm and final exam. The final grade will be based on the grade of homework assignments (30%), of the midterm (30%), and of the final exam (40%). The homework assignments will mainly contain questions of design and of analysis of algorithms, and typically will not contain programming tasks.
The following is a preliminary list of topics (some deviations from this list are possible):
Part 1: Deterministic algorithms
- Fast Fourier transform. Algorithm for fast multiplication of polynomials.
- Algorithms for finding a minimum spanning tree in a graph.
- Flow networks. Efficient algorithm for finding a maximum flow in a network.
- Finding maximum flow in 0-1 network.
- Finding a minimum cost flow. Finding a minimum cost matching in a bipartite graph.
- Linear programming. Feasible solution. Primal and dual problem.
Part 2: Approximation algorithms
- Approximation algorithm for set cover problem.
- Travelling salesman problem.
- Knapsack problem.
- Linear programming in approximation algorithms.
- Linear programming approach to set cover problem.
- Primal-dual approach.