Efficient Algorithms and Data Structures (MA030270)
Design and analysis of algorithms and data structures is a core part of Computer Science and is of fundamental importance to all application areas. The goal of this course is to provide a representative sample of advanced algorithmic notions and techniques that constitute a modern toolbox for solving real-life problems. We will mainly deal with basic discrete objects – sets, trees, graphs, strings, … - and present efficient data structures and algorithms for solving various basic problems on these objects. Therefore, this course can be viewed as a basis for more specialized subjects. Lecture part of the course will focus on principles and ideas as well as on their mathematical justification. The practical part will include programming exercises including homework assignments that will be graded through an automatic code-testing system codeforces.com. These will strengthen practical problem solving skills using techniques taught in the course.