Back to my homepage
Syllabus:
Basic algorithms: Asymptotic notation, recursion, divide-and-conquer paradigm, basic data structures; possibly fast Fourier Transform.
Sorting: Merge sort, bucket and radix sort; medians and order statistics.
Data structures: Priority queues and heaps, dictionaries, hash tables, bloom filters, binary search trees, interval trees.
Additional possible topics: union-find, range trees, fractional cascading etc.
More algorithms: Dynamic programming, graph algorithms: DFS, BFS, topological sorting, shortest path algorithms, network flow problems.
Additional topics: String algorithms, suffix trees, geometric algorithms.
References:
1. Introduction to algorithms: Cormen, Leiserson, Rivest and Stein (Main textbook)
2.
Online lecture notes by Jeff Erickson
3. The Algorithm Design Manual: Steven Skiena
4. Algorithm Design: Kleinberg and Tardos
5. Data structures and algorithm analysis in C++(Java): Mark Weiss
6. Data structures and algorithms in C++(Java): Adam Drozdek
7. Data structures and algorithms: Aho, Hopcroft and Ullman