Computer Science 282
Design and Analysis of Efficient
Algorithms
Fall 2010
Instructor:
Daniel Stefankovic Class: Tuesday,
Thursday 11:05am-12:20pm, CSB 601.
Instructor office hours (CSB 620): Wed 4pm-5pm
TA: Li Lu (CSB 621), Xiaoqing (Sean) Tang
TA office hours: (by appointment)
[NEW]
Problem session Mon 5pm-6pm, CSB 601.
[NEW]
Applied (programming) homework
Textbooks:
- Algorithms, S. Dasgupta, C. Papadimitriou, U.
Vazirani (a
draft is available online), 2006.
- Introduction to Algorithms (2nd edition),
T. Cormen, C. Leiserson, R. Rivest, and C. Stein, 2001.
Other resources/recommended reading:
-
Algorithm Design, J. Kleinberg and E. Tardos, 2005.
- The Design and Analysis of Algorithms, D. Kozen,
1991.
- The Design and Analysis of Computer
Algorithms, A. Aho, J. Hopcroft, J. Ulman, 1974.
-
Probability and Computing: Randomized Algorithms and
Probabilistic Analysis, M. Mitzenmacher, E. Upfal, 2005.
- Randomized Algorithms, R. Motwani, P. Raghavan,
1995.
- Approximation Algorithms, V. Vazirani,
2004.
Prerequisites: MTH150 Discrete Mathematics and CSC172 Data
Structures.
Schedule
Sep. 2 Th - (diagnostic) QUIZ #0
TOPIC: Number Theory/Cryptography
Sep. 7 Tu - Why is number theory interesting (RSA)? Basic operations (addition, multiplication, division)
Sep. 9 Th - GCD. Euclid's algorithm. Modular arithmetic. Extended Euclid's algorithm.
Sep. 14 Tu - Primality testing.
Sep. 16 Th - QUIZ #1
TOPIC: Divide and Conquer Algorithms
Sep. 21 Tu - recurrences, Karatsuba-Offman
Sep. 23 Th - Fast fourier transform
Sep. 28 Tu - deterministic linear-time k-select algorithm
Sep. 30 Th - QUIZ #2
TOPIC: Graph algorithms
Oct. 5 Tu - Finding connected components, DFS, testing whether graph is strongly connected.
Oct. 7 Th - Linearization (topological sorting). Strongly connected components.
Oct. 12 Tu - BFS, Shortest paths - Dijkstra.
Oct. 14 Th - Dealing with negative edge weights(Bellman Ford). Floyd-Warshal.
Oct. 19 Tu - Minimum spanning trees.
Oct. 21 Th - Matchings.
Oct. 26 Tu - QUIZ #3
TOPIC: Greedy algorithms/Dynamic programming
Oct. 28 Th - When does greedy algorithm for the coin change problem work?
Nov. 2 Tu - Dynamic programming for the coin change problem. Knapsack (integer weights).
Nov. 4 Th - Knapsack revisited (integer values). Longest increasing subsequence.
Nov. 9 Tu - Edit distance. Chain matrix multiplication.
Nov. 11 Th - QUIZ #4
TOPIC: Linear programming
Nov. 16 Tu - Solving systems of equations, Rank of a matrix, Gaussian elimination.
Nov. 18 Th - Linear programming, duality, zero-sum games.
Nov. 23 Tu - Solving linear programs - simplex algorithm.
Nov. 25 Th (thanksgiving)
Nov. 30 Tu - QUIZ #5
TOPIC: Hardness/Coping with hardness
Dec. 2 Th - NP completness, reductions.
Dec. 7 Tu - Approximation algorithms: vertex cover, clustering.
Dec. 9 Th - Approximation algorithms: metric TSP, knapsack.
Comprehensive final exam
Dec. 20 Monday FINAL EXAM (4:00pm, CSB 601)
Grading (subject to change)
- Homework: 20%.
- Quizzes: 55%.
- Final: 25%.
Homework Rules
- Homework is collected on the due date, before class.
- No late homework will be accepted without instructor's
permission (a permission must be requested at least 24 hours
before the due date).
- In the final evaluation
the lowest theoretical homework score and
the lowest applied homework score will be
dropped.
- You may work with other people on the
homework, but you must each write up your solutions separately
(without any written aid). If you work with other people, indicate
who you worked with on your solution.
Test Rules
- All tests are closed book. No text
or notes, no scratch paper allowed.
- There will be 5
quizzes. There will be no make-up quizzes.
- In the final
evaluation everybody's one lowest quiz score will be
dropped.
This course follows
The University Policy on Academic Honesty .