### 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

• 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
• 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,  11
• Worst case analysis vs. Average case analysis of Quicksort
• Linearity of expectations
• Example: Hiring Problem
• 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 to create randomized algorithms
• Example: Quicksort
• Bounding Tails and Union Bounds (Chernoff bounds)
• Example: Analysis of streaks in Bernoulli trials
• Example: Packet Routing (notes) with Chernoff bounds
• Las Vegas vs. Monte Carlo algorithms
• Yao's technique
• Example: Randomized Las Vegas lower bound for sorting
• Topic: Single Source Shortest Path Algorithms
• 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
• Example: Ford-Fulkerson algorithm
• Example: Karp-Edmonds Algorithms
• Poly-time, pseudo poly-time, and strong poly-time

• Topic: Linear Programming
• 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
• Example: NP-hardness of Vertex Cover
• Example Dynamic program for Subset Sum and  NP-hardness of Subset Sum

• Topic: Approximation algorithms
• 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
• Topic: Amortization and potential functions
• 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: Analysis of Round Robin Scheduling for the objective of minimizing total response time

• 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: Lovasv Local Lemma ???
• Topic: Multiplicative weights for games and linear programs ???
• Topic: Push-Relabel Network flow algorithm????