Date

Topic

Thu 8/17 
Course overview and introduction. Two
examples of algorithmic problems: greatest
common divisor and integer
factorization. (For extra reading, here is a short article
titled "what
are algorithms?".) 
Tues 8/22 
Introduction to asymptotic
analysis and asymptotic notation. Classes of functions,
especially logarithmic, polynomial, and exponential functions.

Thu 8/24 
Distinction between worstcase, averagecase, and bestcase
complexity analysis, with examples. Retrieval algorithms: sequential
search, binary
search, interpolation
search, hashtable
lookup. Sorting algorithms: insertion
sort, selection
sort. 
Tues 8/29 
Square root algorithms: binary search, Babylonian method (Newton's
method)

Thu 8/31 
Recursion: linear recursion, tail recursion, and tree recursion.
Merge sort as an example of the divideandconquer strategy for
algorithm design. 
Tues 9/5 
Asymptotic analysis of recursive algorithms: solving
recurrence relations and the Master
theorem. 

Thu 9/7 
Divideandconquer
integer multiplication, also known as Karatsuba's algorithm
(interesting paper
written by Karatsuba) 
Tues 9/12 
Divideandconquer sorting and selection: quicksort
and quickselect 
Thu 9/14 
Heapsort
and the binary heap data structure for priority queues 
Tues 9/19 
Lower
bound on the complexity of comparisonbased sorting.
Lineartime sorting algorithms: Counting sort, Radix
sort, Bucket
sort 
Thu 9/21 
Computational
geometry, the convex hull problem, and the quickhull
algorithm 
Tues 9/27 
Review 
Thu 9/29 
Exam 1 
Tues 10/3 
Greedy algorithm: Huffman
encoding algorithm for lossless compression 
Tues 10/10 
Greedy algorithm: Prim's
algorithm for minimal spanning tree problem 
Thu 10/12 
Limitations of the greedy strategy: Coin change problem,
Fractional and 01 knapsack problems 
Tues 10/17 
Dynamic programming: Coin
change problem, 01
knapsack problems 
Thu 10/19 
Dynamic
programming
and
memoization:
Fibonacci numbers. 
Tues 10/24 
Dynamic programming: Longest
common subsequence and edit
distance problems 
Thu 10/26 
Singlesource
shortest path problem: breadthfirst search, Dijkstra's
algorithm, BellmanFord
algorithm 
Tues 10/31 
Depthfirst
graph traversal and topological
sort 
Thu 11/2 
Depthfirst graph traversal continued: decomposition of a graph
into connected
components 
Tues 11/7 
Review

Thu 11/9 
Exam 2

Tues 11/14 
Introduction to NPcomplete problems 
Thu 11/16 

Tues 11/21 

Tues 11/28 
Review 
Wed 12/6 
Final exam 3  6
