Course Schedule

[Note: this webpage last modified Wednesday, 18-Apr-2012 12:38:39 EDT]

This web-page will be kept up to date with the required reading to perform before each lecture.

Things from 458/558: These are things you already know from the last course: dynamic programming, greedy algorithms, divide and conquer, fundamental data structures, sorting, searching shortest path, minimum spanning tree, graph coloring, bzip compression / huffman coding, evaluating infix arithmetic expressions,

Things we will do: We will study most of these are algorithms/ideas in this course, roughly in this order.

Maybe also: FFT, hashing, SVD, KMP string matching, expander codes.

Readings/Topics Schedule

Here I will post the readings and perhaps some brief descriptions of what is covered each day in class.

WeekReading Topics
Jan 10, 12 1.2, 1.3, 1.4.2

modular arithmetic, modular exponentiation, euclid's algorithm, modular division, primality testing, RSA cryptography

Supplementary reading: better analysis for running time of Euclidean algorithm

Jan 17, 19 2.1, 2.5, 2.6

Finish up chapter 1 on Monday.

On Tuesday, start chapter 2 - integer multiplication using divide and conquer, matrix multiplication using divide and conquer (Strassen's algorithm), fast multiplication of polynomials using fast Fourier transform (FFT).

Jan 24, 26 2.1, 2.5, 2.6

Continuing in chapter 2.

Jan 31, Feb 2 2.6

Finishing FFT multiplication.

Feb 7, 9

Catching up. Big-O practice, Recurrence relation practice (including analyzing using recursion trees).

Feb 14, 16 exam 0 on Feb 14

Take the exam on Tuesday, go over solutions on Thursday.

Feb 21, 23

probability, min-cut, Appendix A2 from here,

Probability: random experiment, random variable, expected value, variance, Markov's inequality, linearity of expectation, birthday paradox, Chernoff bounds, random sampling.

Feb 28, Mar 1

Randomized Algs on Wikipedia, Section 2.4

Randomized algorithms: selection, min cut.

Mar 6, 8 Spring break, no classes
Mar 13, 15

Miller-Rabin ref 1 | ref 2, Section 13.4 of this, Ch. 7

Randomized algorithms: primality testing, 3-satisfiability.

Polynomial identity testing wikipedia, lecture notes

Mar 20, 22

Set balancing

Mar 27, 29 exam 1 on Mar 29

Verifying Matrix Mult

Apr 3, 5 Ch 7, 8, 9

NP, NP-completeness

Coupon collector's problem - ppt, see also CLRS algorithms textbook.

Apr 10, 12

Pollard's rho factoring algorithm (section 3.2.2 of this)

Linear Programming (simplex algorithm, geometric interpretation, reducing network flow to LP, reducing bipartite matching to network flow)

Apr 17, 19

More LP.

Dealing with NP-hard problems. Backtracking search - examples for SAT and sudoku solving. Approximation algorithms - example for vertex cover, TSP, or knapsack. Briefly mention local search (hill climbing, simulated annealing).

Apr 24, 26 Lecture 10 from link ->

Continuing the previous, and also an LP-based approximation algorithm for an NP-hard problem, probably for vertex cover. See lecture 10 from this set of lecture notes. Lectures 11, 12, and 13 on that course show more advanced techniques that we will not cover in class.

May 1, 8-10am final exam