Date |
Topic |
Readings |
Notes |
Homeworks |
Jan 19 |
Introduction, Class overview, RAM model, Worst-case complexity, Insertion sort, and Asymptotics |
Chapter 1, Section 2.1, 2.2 and 3.1 |
Note 1 Zoom Note |
|
Jan 24 |
Asymptotics, Induction, Divide and conquer, Merge sort, Recurrence, Recursion tree |
Section 2.3 and 3.2 Sort with dance Sorting algorithms in six minutes |
Note 2 Zoom Note |
Homework 1 |
Jan 26 |
Binary search, Powering, Matrix multiplication, Strassen's algorithm Master theorem |
Section 4.2, 4.3 and 4.5 |
Note 3 Zoom Note |
|
Jan 31 |
Randomized algorithms Quicksort and its analysis |
Chapter 5, Section 7.1 and 7.2 Appendix C for basics of probability |
Note 4 |
|
Feb 2 |
Randomized Quicksort |
Sectioin 7.3 and 7.4 |
Note 5 |
|
Feb 7 |
Selection in linear time, and Lower bound on comparison sorts |
Section 9.2, 9.3 and 8.1 |
Note 6 |
Homework 2 |
Feb 9 |
Counting sort and Radix sort Hash tables and hash functions |
Section 8.2 and 8.3 Section 11.1 and 11.2 |
Note 7.1 Note 7.2 |
|
Feb 14 |
Universal hashing |
Section 11.3.3 |
Note 8 |
|
Feb 16 |
Perfect hashing and Binary search trees |
Section 11.5 and Chapter 12 |
Note 9.1 Note 9.2 |
|
Feb 21 |
Red-Black trees |
Chapter 13 |
Note 10 |
Homework 3 |
Feb 23 |
Augmenting data structures Order statistics, Interval trees |
Chapter 14 |
Note 11 |
|
Feb 28 |
Greedy algorithms Activity selection |
Section 16.1 and 16.2 |
Note 12 |
|
Mar 2 |
Greedy: Huffman trees, Dynamic programming: Rod cutting |
Section 16.3 and 15.1 |
Note 13 |
|
Mar 7 |
Dynamic programming: Longest common subsequence |
Section 15.3 and 15.4 |
See Note 13 |
|
Mar 9 |
Midterm evaluation |
|||
Spring Break, Mar 14 -- Mar 18 |
||||
Mar 21 |
Dynamic programming: Optimal binary search tree; midterm problems |
Section 15.5 |
Note 14 |
Homework 4 |
Mar 23 |
Amortized analysis |
Chapter 17 |
Note 15 |
|
Mar 28 |
Graphs and Breadth-first search |
Section 22.1 and 22.2 |
Note 16 |
|
Mar 30 |
Breadth-first search and its correctness |
Section 22.2 |
See Note 16 |
|
Apr 4 |
Depth-first search and Topological sort |
Section 22.3 and 22.4 |
Note 17 |
Homework 5 |
Apr 6 |
Strongly connected components
Minimum spanning tree: the generic method |
Section 22.5 and Section 23.1 |
Note 18 |
|
Apr 11 |
Minimum spanning trees: Kruskal and Prim |
Chapter 23 and Section 21.1-2 |
Note 19 |
|
Apr 13 |
Single-source shortest path: Bellman-Ford and Dijkstra |
Chapter 24 |
Note 20 |
|
Apr 18 |
All-pairs shortest paths |
Chapter 25 |
Note 21 |
Homework 6 |
Apr 20 |
Maximum Flow: Ford-Fulkerson |
Section 26.1 and 26.2 |
Note 22 |
|
Apr 25 |
Edmonds-Karp, and Maximum bipartite matching |
Section 26.2 and 26.3 |
Note 23 |
|
Apr 27 |
NP-completeness |
Chapter 34 |
Note 24 |
|
May 2 |
NP-completeness |
Chapter 34 |
Note 25 |
|
Final evaluation |