Princeton: Algorithms (Parts I & II)
Robert Sedgewick and Kevin Wayne's comprehensive algorithms course, companion to their bestselling textbook.
About This Course
This two-part course covers the essential algorithms and data structures that every programmer needs to know. Part I focuses on elementary data structures, sorting, and searching. Part II covers graph algorithms, string processing, and advanced topics.
Available on Coursera, the course features excellent visualizations and practical Java implementations.
What You Will Learn
Part I
- Union-Find: Dynamic connectivity, quick find, quick union, weighted quick union
- Stacks and Queues: Linked lists, resizing arrays, generics, iterators
- Sorting: Elementary sorts, mergesort, quicksort, priority queues, heapsort
- Searching: Symbol tables, BSTs, balanced search trees (red-black trees), hash tables
Part II
- Graphs: Undirected and directed graphs, BFS, DFS, topological sort, strong components
- Minimum Spanning Trees: Kruskal's and Prim's algorithms
- Shortest Paths: Dijkstra's algorithm, edge-weighted DAGs, Bellman-Ford
- String Processing: Tries, substring search, regular expressions, data compression
Prerequisites
Programming experience in Java (or willingness to learn). Basic familiarity with algebra.
External Links
Course content belongs to Princeton University.