Course was designed and taught by Niyaz Nigmatullin at ITMO University in 2017–19 (year2017, 1st–4th semesters).
- Linear data structures
- themes: amortized analysis
 - statements (ru), solutions
 
 - Sorts and searches
- themes: sorts, search algorithms
 - statements (ru), solutions
 
 - Priority queues and DSU
- themes: priority queue, disjoint set union
 - statements (ru), solutions
 
 - Dynamic programming
- themes: dynamic programming
 - statements (ru), solutions
 
 
- Search trees
- themes: search data structures
 - statements (ru), solutions
 
 - Hash-tables
- themes: hashing
 - statements (ru)
 
 - Segment queries
- themes: segment queries, binary indexed tree, least common ancestor
 - statements (ru), solutions
 
 - Sorting nets
- themes: sotring nets
 - statements (ru), solutions
 
 
- DFS
- themes: basics of graph theory, connectivity in graphs, depth-first search
 - statements (ru), solutions
 
 - Shortest paths and spanning trees
- themes: spanning trees, shortest path problem
 - statements (ru), solutions
 
 - Independent edge set
- themes: matching problem
 - statements (ru), solutions
 
 - Flows
- themes: maximum flow problems, minimum-cost flow problem
 - statements (ru)
 
 
- String algorithms
- themes: basics of string theory, string searching algorithm
 - statements (ru), solutions
 
 - Suffix data structures
- themes: string searching algorithm, suffix tree, suffix array
 - statements (ru), solutions
 
 - Exponential algorithms
- themes: exponential algorithms
 - statements (ru)
 
 - Arithmetical and algebraic algorithms
- themes: basics of number theory, fundamental theorem of arithmetic, basics of group theory
 - statements (ru), solutions