This course covers a variety of important data structures, algorithms and algorithm design techniques. Relevant mathematical concepts are an integral part of this course, as are detailed algorithm implementations in Java.
This courses includes:
- Advanced techniques for design, analysis, and implementation of algorithms and data structures
- Algorithmic design paradigms: greedy, divide-and-conquer, dynamic programming, randomization
- Advanced Analysis techniques: amortization and expected running time
- Advanced data structures: random hash families, disjoint sets
- Advanced graph algorithms: network flow, connectivity, minimum spanning trees, shortest paths
- Mathematical tools: graphs and digraphs, graph properties, planar graphs, networks
- String search
- Data compression