Course Outline
- Introduction to Analysis of Algorithms
- Overview of algorithms
- Analyzing algorithms
- Designing algorithms
- Proofs
- Growth of Functions and Notations
- Big Oh, Little Oh, Big Omega, Little Omega, and Big Theta notations
- NP-Complete Problems
- Approximation Algorithms
- Recurrences
- Iteration method
- Recursion-tree method
- Master method
- Sorting in Linear Time
- Lower bounds for sorting
- Counting sort
- Radix sort
- Medians and Order Statistics
- Minimum and maximum
- Selection in expected linear time
- Selection in worst-case linear time
- Greedy Algorithms
- Elements of the greedy strategy
- Huffman codes
- Elementary Graph Algorithms
- Representations of graphs
- Breadth-first search
- Depth-first search
- Topological search
- Strongly connected components
- Minimum Spanning Trees
- Algorithms of Kruskal and Prim
- Single-Source Shortest Path
- Bellman-Ford algorithm
- Single-source shortest paths in directed acyclic graphs
- Dijkstra's algorithm
- All-Pairs Shortest Paths
- Maximum Flow
- Distributed Algorithms
- Distributed Paradigm
- Consensus and Election
Revised 2012