### Tentative Course Outline

• Topic: Introduction to algorithm analysis and asymptotic notation
• Reading: Chapters 1, 2 and 3 of CLRS (Read the appendix covering mathematical background if you need to)
• Principles of algorithm analysis
• Asymptotic notation
• Comparing growth rate of functions
• Growth rate as a measure of efficiency of use of a faster processor
• Topic: Proving Greedy Algorithms Correct Using an Exchange Argument

• Reading: Chapter 16
• Example: Matroids
• Topic: Divide and Conquer
• Reading Chapters 4 and 30
• Example: FFT algorithm for polynomial multiplication
• Solving recurrence relations. The master theorem. Expansion. Induction.
• Topic: Problem Complexity, Information Theoretic and Adversarial Lower Bounds
• Reading: Chapter 9
• Time complexity of a problem
• Example: Searching lower bound
• Example: Sorting lower bound
• Example: Element Uniqueness lower bound
• Example: n-1 lower bound for find the maximum
• Example: 3n/2 lower bound for computing smallest and largest number (not in the book)

• Topic: Average-case analysis, randomized algorithms, and bounding tails of distributions
•  Reading: Chapters 5, 7, 9, 11, 12, and 13, and Handout on randomized algorithms.
• Linearity of expectations
• Example: Hiring Problem
• Example: Quicksort, Expected linear time selection, Randomly built Search trees
• Example: Expected time for insert in closed addressed hash table
• Example: Expected time for insert in open addressed hash table using uniform hashing
• Example: Universal Hash Functions
• Example: Randomized Monte-Carlo Min-Cut Algorithm
• Las Vegas vs. Monte Carlo algorithms
• Bounding Tails and Union Bounds
• Example: Analysis of streaks in Bernoulli trials
• Example: High confidence analysis of Quicksort, Expected linear time selection, Randomly built Search trees
• Yao's technique
• Example: Average case information theoretic lower bound for sorting
• Example: Randomized Las Vegas lower bound for sorting
• Topic: Single Source Shortest Path Algorithms
• Reading: Chapter 24
• Example: Dijkstra (greedy and exchange argument proof of correctness)
• Example: Bellman-Ford (dynamic programming)
• Example: Linear time algorithm for directed acyclic graphs
• Topic: Network Flow
• Reading: Chapter 26
• Example: Ford-Fulkerson algorithm
• Example: Karp-Edmonds Algorithms
• Poly-time, pseudo poly-time, and strong poly-time
• Example: Push-relabel algorithm (skipping on first pass)

• Topic: Linear Programming
• Reading: Chapter 29
• Example: Writing network flow as a linear program
• Example: Writing shortest path as a linear program
• Simplex greedy algorithm vs. divide and conquer interior point methods
• Weak duality, complementary slackness and statement of strong duality
• Example: Writing the diet problem as a linear program and computing its dual
• Example: Dual of network flow
• Example: Dual of the shortest path problem

• Topic: NP-completeness
• Read: Chapter 34
• Example: NP-hardness of Vertex Cover
• Example Dynamic program for Subset Sum and  NP-hardness of Subset Sum

• Topic: Approximation algorithms
• Reading: Chapter 35
• Example: 2 and 3/2 approximations for Traveling Salesman
• Example: Vertex Cover using maximal matching lower bound
• Example: Maximum weight vertex cover using linear programming lower bound
• Example: Greedy weighted set cover using dual feasible solution as a lower bound
• Example: Randomized 2 approximation for MAX2SAT, derandomization using method of conditional expectations
• Example: PTAS for knapsack
• Example: Gap reduction for TSP without triangle inequality to prove non-approximatability

• Topic: Fixed Parameter Tractability (skipping on first pass)
• Topic: Amortization and potential functions
• Reading: Chapter 17
• Example: Multipop
• Example: Counting in Binary
• Example: Dynamic Table

• Topic: Online algorithms
• Example: Paging, general lower bound and resource augmentation analysis of LRU
• Example: Move to Front for List Update and general lower bound
• Example: Speed Scaling for the objective of fractional flow plus energy (notes, survey paper)  (skipped this semester)

• Topic: Parallel and Distributed Computing
• Example: Luby's algorithm for maximal independent set in the CONGEST model (reference)

• Topic: Online Learning From Experts and Regret Analysis
• Example: Analysis of the weighted majority and randomized weighted majority algorithms (Source: Notes by Nina Balcan)

• Topic: Fixed Parameter Tractable Algorithms
• Example: Vertex Cover (Source: Notes from class taught by David Karger)