Lectures
| Feb. 5 (F) | Introduction / Course overview | HW 1 out |
| Feb. 8 (M) | Frequency counting | |
| Feb. 10 (W) | Data structures review | |
| Feb. 12 (F) | Skip lists | HW 1 due / HW 2 out |
| Feb. 15 (M) | Chord | |
| Feb. 17 (W) | Dijkstra | HW 2 due / HW 3 out |
| Feb. 19 (F) | (No class - holiday.) | |
| Feb. 22 (M) | Dijkstra / Other heaps | |
| Feb. 24 (W) | Floyd-Warshall | |
| Feb. 26 (F) | Kruskal / Union-Find | HW 3 due / HW 4 out |
| Mar. 1 (M) | Union-Find / Amortized analysis | |
| Mar. 3 (W) | SCC / Topological sort | |
| Mar. 5 (F) | Pagerank | HW 4 due / HW 5 out |
| Mar. 8 (M) | Bloom filters | |
| Mar. 10 (Th) | Cuckoo hashing | |
| Mar. 12 (F) | String matching | HW 5 due |
| Mar. 15 (M) | (No lecture - Exam.) | Quiz 1 out |
| Mar. 17 (W) | String matching | Quiz 1 due |
| Mar. 19 (F) | RLE, Move-to-Front | |
| Spring Break | ||
| Apr. 5 (M) | Huffman codes | |
| Apr. 7 (W) | Huffman codes | Project proposal due |
| Apr. 9 (F) | Burrows-Wheeler | HW 6 out |
| Apr. 12 (M) | Compression | |
| Apr. 14 (W) | Compression | |
| Apr. 16 (F) | Compression [huffman.cc] | HW 6 due / HW 7 out |
| Apr. 19 (M) | Network flow | |
| Apr. 21 (W) | Network flow | |
| Apr. 23 (F) | Network flow | HW 7 due / HW 8 out |
| Apr. 26 (M) | Bin packing | |
| Apr. 28 (W) | Intractable problems | |
| Apr. 30 (F) | Intractable problems | HW 8 due |
| May 3 (M) | Erasure codes | Quiz 2 out |
| May 5 (W) | Erasure codes | Quiz 2 due |
| May 7 (F) | Cryptography | HW 9 out |
| May 10 (M) | Cryptography | |
| May 12 (W) | Cryptography | |
| May 14 (F) | Wrap-up | HW 9 due |
Course Info :
Lecture: MWF 11-11:50, Physics 113
Professor: Barath Raghavan
Office Hours: Tu/Th 10-noon, 2-4
TA: Erdem Sahin
TA Hours: Wed 9:30-11:30pm, TCL 312 (Unix lab)
Homework Assignments
Homework 1 [PDF]. (Time-stamp counter header file: rdtsc.h)
Homework 2 [PDF, TeX]. (Solution: PDF, skiplist.cc, skiplist.h)
Homework 3 [PDF, TeX]. (Solution: PDF, hw3.tar.gz)
Homework 4 [PDF, TeX]. (Solution: PDF)
Homework 5 [PDF, TeX]. (Solution: PDF)
Homework 6 [PDF, TeX]. (Solution: PDF)
Course Overview
Official Course Description: This course investigates methods for designing efficient and reliable algorithms. By carefully analyzing the structure of a problem within a mathematical framework, it is often possible to dramatically decrease the computational resources needed to find a solution. In addition, analysis provides a method for verifying the correctness of an algorithm and accurately estimating its running time and space requirements. We will study several algorithm design strategies that build on data structures and programming techniques introduced in Computer Science 136. These include induction, divide-and-conquer, dynamic programming, and greedy algorithms. Particular topics of study include graph theory, hashing, network flow, and advanced data structures.
Course Grading and Logistics
50%: Ten homework assignments each worth 5% of your total grade. Each homework is graded out of 100 points. Homeworks may be turned in late; a homework turned in n hours late loses 2n/6 points. All late homework must be submitted electronically. Each homework typeset in LaTeX will receive an extra 10%; that is, a handwritten homework that receives a 90/100 would receive a 99/100 if typeset.
10%: An independent project.
20%: Two takehome quizzes each worth 10% of your total grade. Each quiz is due 48 hours after it is assigned in class. Quizzes cannot be turned in late. (Each quiz will have a self-timed time limit.)
20%: A takehome final exam.