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.

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.

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

Note: CS6011 (Programming Lab) consists of four-five assignments, with varying credit.