Computer Science 282
Design and Analysis of Efficient Algorithms
Fall 2008
Instructor: Daniel Stefankovic
Class: Tuesday, Thursday 11:05am-12:20pm, CSB 601.
Instructor office hours: after class (Tuesday, Thursday 12:30pm-1:30pm, CSB 620).
Problem session: Monday 8pm-9pm, CSB 601.
TA: Tivadar Papai
TA office hours: Monday, Wednesday 5pm-6pm, CSB 725.
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 Tu - QUIZ #0
TOPIC: Number Theory/Cryptography
Sep. 4 Th - Why is number theory interesting (RSA)? Basic operations (addition, multiplication, division)
Sep. 9 Tu - GCD. Euclid's algorithm. Modular arithmetic. Extended Euclid's algorithm.
Sep. 11 Th - Primality testing.
Sep. 16 Tu - QUIZ #1
TOPIC: Divide and Conquer Algorithms
Sep. 18 Th - recurrences, Karatsuba-Offman
Sep. 23 Tu - deterministic linear-time k-select algorithm, basics of probability
Sep. 25 Th - Basics of probability, randomized k-select
Sep. 30 Tu - Fourier transform
Oct. 2 Th - QUIZ #2
TOPIC: Graph algorithms
Oct. 7 Tu - Finding connected components, DFS, testing whether graph is strongly connected.
Oct. 9 Th - Linearization (topological sorting). Strongly connected components.
Oct. 14 Tu - BFS, Shortest paths - Dijkstra.
Oct. 16 Th - Dealing with negative edge weights(Bellman Ford). Floyd-Warshal.
Oct. 21 Tu - Minimum spanning trees.
Oct. 23 Th - QUIZ #3
TOPIC: Greedy algorithms/Dynamic programming
Oct. 28 Tu - When does greedy algorithm for the coin change problem work?
Oct. 30 Th - Dynamic programming for the coin change problem. Knapsack (integer weights).
Nov. 4 Tu - Knapsack revisited (integer values). Longest increasing subsequence.
Nov. 6 Th - Edit distance. Chain matrix multiplication.
Nov. 11 Tu - QUIZ #4
TOPIC: Linear programming
Nov. 13 Th - Solving systems of equations, Rank of a matrix, Gaussian elimination.
Nov. 18 Tu - Linear programming, duality, zero-sum games.
Nov. 20 Th - Solving linear programs - simplex algorithm.
Nov. 25 Tu - QUIZ #5
Nov. 27 Th (thanksgiving)
TOPIC: Hardness/Coping with hardness
reading: DPV Chapters 8,9,
Dec. 2 Tu - NP completness, reductions.
Dec. 4 Th - Approximation algorithms: vertex cover, clustering.
Dec. 9 Tu - Approximation algorithms: metric TSP, knapsack.
Dec. 11 Th - QUIZ #6
Comprehensive final exam
Dec. 19 Friday FINAL EXAM (4:00pm, CSB 601)
Grading
- Homeworks: 15%.
- Quizzes: 60%.
- 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 everybody's one lowest homework score will be dropped.
-
Each problem must be written on a separate
letter-size paper.
-
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 6 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 .