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