Module I: Algorithm Analysis
|
Notation and Analysis [Week
1-2] |
Tue, Aug. 29 |
Lec. 1:
Introduction
What: design and analysis
How: syllabus, logistics
|
|
|
Thu, Aug. 31 |
Lec.
2: Basic Algorithm Analysis
Proof: Induction
Performance: Time complexity
|
|
|
Fri, Sep. 1 |
No Discussion
|
|
hw0 out
|
Tue, Sep. 5 |
Guest Lecture:
How to Prepare for the Coding Interview
|
|
|
Thu, Sep. 7 |
Lec. 3:
Potential Method
|
|
|
Fri, Sep. 8 |
Reviews: Proofs, Asymptotic notation, Information
|
|
hw0 due
hw1 out
|
Module II: Algorithm Design
|
Design Paradigms
[Week 3-6]
|
Tue, Sep. 12 |
Lec. 4: Greedy
What: linear chain
How: (by data structure) set, array, graph (MST)
Why: Matroid
|
|
|
Thu, Sep. 14 |
Guest Lecture:
How to Do Well during the Coding Interview
|
|
|
Fri, Sep. 15 |
Reviews: Greedy and Potential
|
|
hw1 due
hw2 out
|
Tue, Sep. 19 |
Lec. 5:
Divide and Conquer I
Array: binary search, merge sort, Karasuba
Master theorem
|
|
|
Thu, Sep. 21 |
Lec.
6: Divide and Conquer II
Tree: balanced BST construction
Geometry: convex hull, closest pair of points
|
|
|
Fri, Sep. 22 |
Reviews: Divide and Conquer
|
|
hw2 due
hw3 out
|
Tue, Sep. 26 |
Lec.
7: Dynamic Programming I
Array: coin changes, longest increasing subsequence, longest common subsequence
|
- [CLRS] Chap. 15
- [M] Chap. 8
- [LC] 198, 5, 152
|
|
Thu, Sep. 28 |
Lec.
8: Dynamic Programming II
Matrix: pair of sequence, matrix, subset (sum, knapsack)
|
|
|
Fri, Sep. 29 |
Reviews: Dynamic Programming
|
|
hw3 due
hw4 out
|
Tue, Oct. 3 |
Lec.
9: Dynamic Programming III
Graph: shortest path for a single pair (Dijkstra's) and all pairs (Floyd–Warshall's)
|
|
|
Midterm [Week 6-7] |
Thu, Oct. 5 |
Lec. 10:
Midterm Review
|
|
hw4 due (Fri)
practice midterm out
|
|
No Class (Happy Fall Break) |
Thu, Oct. 12 |
Midterm Exam (in class)
|
Fri, Oct. 13 |
Exam Walkthrough
|
|
|
Randomized Algorithms [Week
8-10] |
Tue, Oct. 17 |
Lec. 11:
Probability,
Randomness in Computation
Types: Las Vegas and Monte Carlo
Maths review
|
- [CLRS] Chap. 5, Appendix C
- [M] Chap. 6
|
|
Thu, Oct. 19 |
Lec. 12: Primality Testing
|
|
|
Fri, Oct. 20 |
Algorithms: 1-Sided Error Reduction
|
|
hw5 out
|
Tue, Oct. 24 |
Lec. 13: QuickSort, Verifying Polynomial Identities
|
- [CLRS] Chap. 7, 30.1
- [M] Chap. 10
|
|
Thu, Oct. 26 |
Lec. 14: Chernoff Bounds and Applications
|
|
|
Fri, Oct. 27 |
Quick Select
|
|
hw5 due
hw6 out
|
Tue, Oct. 30 |
Lec. 15: Hashing
Hash function, collision handling
|
- [CLRS] Chap. 11
- [M] XI (Hash Table)
- [LC] 49, 347, 75
|
|
Thu, Nov. 1 |
Lec. 16: More on Sorting
Comparative: lower bound
Non-comparative: bucket sort and radix sort
|
|
|
Fri, Nov. 3 |
Applications:
Hashing and Sorting
|
|
hw6 due
hw7 out
|
Graph Algorithms
[Week 11-12]
|
Tue, Nov. 7 |
Lec. 17: Graph Basics
Types: directed, weighted, connectivity pattern
Representation: adjacency matrix/list
|
|
|
Thu, Nov. 9 |
Lec. 18: Graph Traversal
Whatever-first-search: BFS and DFS
Connectivity problems
|
- [CLRS] Chap. 22.2, 22.4
- [M] XI (Topological Sort)
|
|
Fri, Nov. 10 |
Applications:
BFS, DFS
|
|
hw7 due
hw8 out
|
Tue, Nov. 14 |
Lec. 19: Topological Sorting
DFS-post-order, Kahn's algorithm
Connectivity analysis
|
|
|
Thu, Nov. 16 |
Lec. 20: Bipartite Graphs and Dijkstra's Algorithm
|
- [CLRS] Chap. 24.3
- [M] XI (Dijkstra)
- [LC] 1631, 1584, 743
|
|
Fri, Nov. 17 |
Applications:
Shortest Paths
|
|
|
NP-Completeness
[Week 13-15]
|
Tue, Nov. 21 |
Lec. 21: Efficiently Verifiable Problems
P, NP (P-verifiable), AP, EXP
NP-completeness: SAT
|
|
hw8 due
hw9 out
|
|
No Class (Happy Thanksgiving) |
Tue, Nov. 28 |
Lec. 22: Approximation Algorithms I
Minimum vertex covering: double cover
Maximum clique, maximum independent set
|
|
|
Thu, Nov. 30 |
Lec. 23: Approximation Algorithms II
Maximum cut
3-coloring
|
|
|
Fri, Dec. 1 |
Algorithms: More on Approximation
|
|
hw9 due
hw10 out
|
Tue, Dec. 5 |
Lec. 24: KNAPSACK and DP Review
Classic: fractional, 0/1
Extension: Bounded, unbounded
|
|
|
Final [Week
15-16] |
Thu, Dec. 7 |
Lec.
25: Material Review
|
|
hw10 due (Fri)
practice final out
|
Tue, Dec. 19 |
Final Exam (12:30pm)
|