CS 3511 -- Design and Analysis of Algorithms

Spring 2010

[Main Page] [Assignments]


 
Topics
Date(s)
Reading
Review of big-O notation
Algorithms for basic arithmetic
      (addition, multiplication, division)
Modular arithmetic, substitution rule
Algorithms for modular arithmetic
      (addition, multiplication)
Monday, January 11

[DPV] Chapters 1.1 and 1.2.1
Modular exponentation
Multiplicative inverses
Extended Euclid algorithm
Wednesday January 13

[DPV] Chapters 1.2.2-1.2.5

Extended Euclid algorithm analysis
Fermat's little theorem
Primality testing
Generating random primes
Friday January 15

[DPV] Chapters 1.2.4 and 1.3

Proof of Fermat's little theorem
Euclid's theorem
Start of RSA cryptosystem
Wednesday January 20

[DPV] Chapters 1.3 and 1.4

RSA cryptosystem
Proof of correctness of RSA
Friday January 22

[DPV] Chapter 1.4

Miller-Rabin primality test
Chinese Remainder Theorem
Monday January 25

The Miller-Rabin primality test is discussed on page 28 of [DPV].
The Wikipedia has a nice description of the Miller-Rabin algorithm
and also the Chinese Remainder Theorem.


Divide and conquer:
Multiplication of n-bit integers

Friday January 29

[DPV] Chapter 2.1 and 2.5

Solving recurrences and the Master theorem
Matrix Multiplication
Monday February 1

[DPV] Chapter 2.2 and 2.5


Fast Fourier Transform (FFT)

Wednesday February 3
and
Friday February 5

[DPV] Chapter 2.6


Median in linear time:
Deterministic and randomized algorithms

Monday February 8

Randomized algorithm is in [DPV] Chapter 2.4


Exam 1: RSA and divide-and-conquer

Wednesday February 10



DFS:
Connected components of undirected graphs
Topological sorting a DAG

Friday February 12

[DPV] Chapter 3.1-3.3


DFS:
Strongly connected components of directed graphs

Monday February 15

[DPV] Chapter 3.4

BFS
Dijkstra's algorithm for shortest paths
Wednesday February 17

[DPV] Chapters 4.1-4.4

Priority queue (min-heap) implementation
Friday February 19

[DPV] Chapter 4.5

Shortest paths with negative length edges:
Negative weight cycles
Bellman-Ford algorithm
Monday February 22

[DPV] Chapter 4.6

Minimum spanning trees:
Cut property
Prim's algorithm
Wednesday February 24

[DPV] Chapters 5.1.5 and 5.1.2

Minimum spanning trees:
Kruskal's algorithm
Union-find data structure
Friday February 26

[DPV] Chapter 5.1

Analysis of union-find data structure
including path compression and log*n
Monday March 1

[DPV] Chapter 5.1


Exam 2: Graph algorithms

Wednesday March 3


Dynamic Programming:
Fibonacci numbers
Longest increasing subsequence
Shortest paths in DAGs
Friday March 5

[DPV] Chapters 6.1-6.2

Dynamic Programming:
Knapsack
Monday March 8

[DPV] Chapter 6.4

Dynamic Programming:
Chain Matrix Multiplication
Edit distance
Wednesday March 10

[DPV] Chapters 6.3 and 6.5

Dynamic Programming:
Floyd-Warshall for all-pairs shortest path
Balanced partition
Friday March 12
For Floyd-Warshall, see:
[DPV] Chapter 6.6, or Wikipedia
For balanced partition, see:
MIT Lecture Notes
Review of Dynamic Programming for the exam
Monday March 15


Exam 3: Dynamic programming

Wednesday March 17


Guest lecture by Milena Mihail on
Approximation algorithm for Knapsack

Prof. Mihail will be teaching Advanced Algorithms in the fall, sign up!
Friday March 19
[DPV] Chapter 9.2.4
Linear programming:
Simple examples
Duality
Simplex algorithm
Max flow
Max-flow=min-cut
Bipartite matching
Monday March 29
to
Friday April 2
[DPV] Chapter 7
NP-completeness
Monday April 5
to
Friday April 9
[DPV] Chapter 8
NP-completeness of SAT
Undecidability of the halting problem
Monday April 12
[DPV] End of Chapter 8.3
Approximation algorithms:
Method of conditional expectation for 1/2-approx for MAX-SAT
2-approx for Min Vertex Cover
Wednesday April 14
See [DPV] Chapter 9.2 for vertex cover approx alg.
Bloom filters
Friday April 16
See Wikipedia
Review for Exam 4
Monday April 19


Exam 4: NP-completeness, linear programming, and max-flow

Wednesday April 21


Markov chains
Friday April 23

Quantum computing guest lecture
by Ken Brown
Monday April 26

PageRank
Wednesday April 28

Review for Final Exam
Friday April 30