Algorithms-UCSanDiego
- Week 1: Programming Challenges
- Week 2: Algorithmic Warm-up
- Week 3: Greedy Algorithms
- Week 4: Divide and Conquer
- Week 5: Dynamic Programming - Part 1
- Week 6: Dynamic Programming - Part 2
Course 2: Data Structures
- Week 1: Basic Data Structures
- Week 2: Priority Queues and Disjoint Sets
- Week 3: Hash Tables and Hash Functions
- Week 4: Binary Search Trees
Course 3: Algorithms on Graphs
- Week 1: Graph Decomposition
- Week 2: Graph Decomposition (continued)
- Week 3: Paths in Graphs
- Week 4: Paths in Graphs (continued)
- Week 5: Minimum Spanning Trees
Course 4: Algorithms on Strings
- Week 1: From Genome Sequencing to Pattern Matching
- Week 2: Burrows-Wheeler Transform and Suffix Arrays
- Week 3: Knuth–Morris–Pratt Algorithm
- Week 4: Constructing Suffix Arrays and Suffix Trees
Course 5: Advanced Algorithms and Complexity
- Week 1: Flows in Networks
- Week 2: Linear Programming
- Week 3: NP-complete Problems
- Week 4: Coping with NP-completeness
- Week 5: Streaming Algorithms
Supplemental Resources