Algorithm analysis and asymptotic notation. Advanced data structures analysis. Design and analysis of: divide-and-conquer algorithms, dynamic programming, greedy algorithms, and amortized analysis; multithreaded algorithms, linear programming, number-theoretic algorithms, computational geometry and approximation algorithms.