Lectures:
- Introduction. Algorithms and algorithmic problems. Models of computation (e.g., RAM machines, Turing machines, ...). Church-Turing thesis.
- Algorithmically undecidable problems.
- Computational complexity of algorithms. Asymptotic notation. Examples of techniques used in the analysis of computational complexity of algorithms. Analysis of computational complexity of recursive algorithms.
- Complexity classes. Nondeterministic algorithms. Classes P and NP. Reductions between problems. NP-completeness.
- Examples of some classical problems from the area of combinatorial optimization. Examples of problems where some of them are in P and some NP-complete.
- Some other complexity classes (PSPACE, EXPTIME, EXPSPACE, L, NL, ...). Examples of complete problems for these classes.
- Examples of techniques of design of efficient algorithms. Examples of use of these techniques for solving combinatorial problems.
Greedy algorithms and their relationship with matroids. Branch and bound method.
- Complexity of algorithms in an average case. Amortized complexity. Examples of some more advanced data structures and of analysis of complexity of operations on these structures.
- Randomized algorithms.
- Approximation algorithms. Hardness of approximation of some problems.
- Parallel algorithms: Model of computation for parallel algorithms (PRAM). Computational complexity of parallel algorithms.
- Distributed algorithms: Models of computation for distributed algorithms, communication complexity.
Tutorials:
- Algorithms and algorithmic problems. Models of computation (e.g., RAM machines, Turing machines, ...). Church-Turing thesis.
- Algorithmically undecidable problems.
- Computational complexity of algorithms. Asymptotic notation. Examples of techniques used in the analysis of computational complexity of algorithms. Analysis of computational complexity of recursive algorithms.
- Complexity classes. Nondeterministic algorithms. Classes P and NP. Reductions between problems. NP-completeness.
- Examples of some classical problems from the area of combinatorial optimization. Examples of problems where some of them are in P and some NP-complete.
- Some other complexity classes (PSPACE, EXPTIME, EXPSPACE, L, NL, ...). Examples of complete problems for these classes.
- Examples of techniques of design of efficient algorithms. Examples of use of these techniques for solving combinatorial problems.
- Greedy algorithms and their relationship with matroids. Branch and bound method.
- Complexity of algorithms in an average case. Amortized complexity. Examples of some more advanced data structures and of analysis of complexity of operations on these structures.
- Randomized algorithms.
- Approximation algorithms. Hardness of approximation of some problems.
- Parallel algorithms: Model of computation for parallel algorithms (PRAM). Computational complexity of parallel algorithms.
- Distributed algorithms: Models of computation for distributed algorithms, communication complexity.