This page contains a brief summary of each class topic and the
associated reading, with links to online "handouts" that were referenced.
This page morphs frequently, being updated at least weekly.
You may need to *reload* it at each viewing
to avoid being shown a stale version from your browser cache.
Most recent items are at the top.
Last updated **May 16**, 2011.

Resources: UDAlgorithms notes Skiena's slides

**Mon, May 23** 8:00AM-10:00AM Final Exam in Gore 117 (our classroom).

- Basics of reading covered: Skiena chapters 1-9 excluding 7, class notes (as outlined below), UDAlgorithms notes (on early topics), Selected items in hitchhiker's guide (Skiena part II), homeworks.
- Types of question: similar to midterm
- Emphasis: 3/4 on second half, 1/4 on first half.

**Mon, May 16**

- FFT, polynomial and integer multiplication
- easy, hard, harder, impossible
- review
- Homework #6 programming problem phase 2 due. Submit by email to Tim

**Fri, May 13**

- quiz
- Red-Black trees
- Reading: Ch 3.4, 12.1
- Phase 1 program suitable as starting point for phase 2 is ~saunders/algorithms/lcss.cc on Strauss.

**Wed, May 11**

- Dictionary data structure
- Reading: Ch 3.3
- Homework #6 programming problem phase 1 due

**Mon, May 9**

- Implementing dynamic programming for longest common subsequence
- Reading: Ch 8
- Homework #6 problems 1, 2 due.

**Fri, May 6**

- Longest common subsequence
- Reading: Ch 8

**Wed, May 4**

- Matrix chain multiplication
- Reading: Ch 8

**Mon, May 2**

- Edit Distance
- more problems that yield to dynamic programming
- Reading: Ch 8

**Fri, Apr 29**

- Introduction to dynamic programming
- fibonacci and longest increasing subsequence
- Reading: Chapter 8.

**Wed, Apr 27**

- Closest pair of points (another problem from computational geometry).
- Divide and conquer algorithm for closest pair of points
- Tools for manipulating graphs

**Mon, Apr 25**

- Finish Graham scan algorithm for convex hull

**Fri, Apr 22**

- Graham scan algorithm for convex hull
- Reading: 17.2, Wikipedia Graham_scan article
- Homework #4 due

**Wed, Apr 20**

- Introduction to the use of NP for cryptography.
- RSA public key encryption scheme
- Reading: 18.6 and Wikipedia RSA article
- Reading: 18.6

**Mon, Apr 18**

- quiz 2 on approximation, reductions
- reduction of vertex cover to HAM (sketch)
- Reading: Chapter 9.

**Fri, Apr 15**

- Reduction of 3-SAT to vertex cover.
- Summary of NP-Completeness
- Reading: Chapter 9.

**Wed, Apr 13**

- Cook's theorem
- Homework #3 due
- Reading: Chapter 9.

**Mon, Apr 11**

- Traveling Salesman Problem
- Approximation for TSP
- Reading: Chapter 9.

**Fri, Apr 8**

- quiz on reductions in section 9.2, 9.3
- Maximal independent set (IS): reduction to GMS
- Hamiltonian cycle Problem (HAM)

**Wed, Apr 6**

- Optimization/Search/Decision problems
- The nature of reductions
- reduction of Sorting to Convex Hull.
- Vertex cover (VC): Def (in 9.5) and reduction to IS
- Reading: 9.2, 9.3, VC Def in 9.5, notes on hard problems

**Mon, Apr 4**

- exam results
- movie scheduling: Def and solution.
- Generalized movie scheduling (GMS) and maximal independent set (IS): defs.
- Reading: 1.2, 9.3

**Fri, Mar 25** Midterm exam

**Wed, Mar 23**

- bipartite matching
- Network flow
- Reading: Ch 6.5, CMU lecture on network flow
- review mid-review.pdf

**Mon, Mar 21**

- log*(x) function
- All pairs shortest paths
- Reading: Ch 6.3
- Homework assignment, hw2.pdf, is due Wed, April 6.

**Fri, Mar 18**

- union-find

**Wed, Mar 16**

- Kruskal's MST alg.
- dynamic disjoint sets

**Mon, Mar 14**

- Analysis of Prim's's MST alg.

**Fri, Mar 11**

- Correctness of Dijkstra's SSSP alg.
- Correctness of Prim's's MST alg.
- Run time of Dijkstra SSSP, Prim MST algorithms

**Wed, Mar 9**

- From BFS to Dijkstra to Prim
- Single source shortest paths in weighted graphs
- Dijkstra's SSSP algorithm
- Prim's MST algorithm

- Reading: 6.1 6.3

**Mon, Mar 7**

- Graph representation
- Breadth First Search and shortest paths.
- Reading: Chapter 5

**Fri, Mar 4**

- Quick Sort
- Introspective Sort
- Reading: 4.6

**Wed, Mar 2**

- Priority queues, heaps, heapsort
- Reading: 3.5, 3.6, 4.3, 4.4

**Mon, Feb 28**

- Priority queues, heaps, heapsort
- Reading: 3.5, 3.6, 4.3, 4.4

**Fri, Feb 25**

- svn, course environment, makefiles, speedup

**Wed, Feb 23**

- Combining merge sort and insertion sort
- Subtleties of timing processes.

**Mon, Feb 21**

- Master theorem proof sketch
- Course programming environment:
- location of headers for sequence, data structures, algorithms
- timing and testing framework

- Reading: sections 4.3 and 4.4 (priority queues and heap_sort)

**Fri, Feb 18**

- Faster polynomial multiplication: T(n) = 3T(n/2) + Θ(n).
- Master theorem.
- Reading: Scan Chapter 3 (Data Structures).
- Homework assignment, hw1.pdf, is due Wed, March 2.

**Wed, Feb 16**

- Function approximation, "big-O" and friends.
- Exponentiation, binary search: T(n) = T(n/2) + Θ(1).
- polynomial multiplication: T(n) = 4T(n/2) + Θ(n).
- recall merge_sort: T(n) = 2T(n/2) +Θ(n).
- recall insertion_sort: T(n) = T(n-1) +Θ(n).
- Reading: Chapter 2 (emphasis on second half).

**Mon, Feb 14**

- Merge Sort (Skiena section 4.5, page 120.)
- Recurrence solution or upper bound by substitution method (guess, then inductively prove).
- Reading: Chapter 2 (emphasis on second half).

**Fri, Feb 11**

- Discussed two algorithms for Max_n_2nd_largest, one using about 3n/2 comparisons and one using about n + lg(n) comparisons.
- Insertion sort requires about n
^{2}/2 comparisons. - Reading: Chapter 2 (emphasis on first half).

**Wed, Feb 9**

- Syllabus, Sakai site.
- Max_n_min problem solved in about 3n/2 comparisons.
- That is optimal (lower bound proof)
- Max_n_2nd_largest problem posed.

**Mon, Feb 7**

- Algorithmic problems are well specified.
- Maximum of a sequence requires n-1 comparisons.
- Moore's law continues but with new consequences (multiprocess vs GHz).

Some useful links: The Standard Template Library. The STL Documentation at SGI.