Date
|
Topic
|
Tues 1/9 |
Course overview and introduction.
Overview
and discussion of algorithms. Two examples of
algorithmic problems: greatest
common divisor and integer
factorization.
|
Thu 1/11 |
Introduction to asymptotic
analysis and asymptotic notation. Classes of
functions, especially logarithmic, polynomial, and
exponential functions.
|
Tues 1/16 |
Distinction between worst-case, average-case, and
best-case complexity analysis, with examples. Retrieval
algorithms: sequential search, binary
search, interpolation
search, hash-table
lookup. Sorting algorithms: insertion
sort, selection
sort. |
Thu 1/18 |
Quiz and review. First homework assignment due on
Friday.
|
Tues 1/23
|
Square root algorithms: binary
search, Babylonian method (Newton's method) |
Thu 1/25
|
Recursion: linear recursion, tail recursion,
and tree recursion. Merge sort as an example of the
divide-and-conquer strategy for algorithm design. Asymptotic
analysis of recursive algorithms: solving recurrence
relations and the Master
theorem. |
Tues 1/30 |
Divide-and-conquer
integer multiplication, also known as Karatsuba's
algorithm (interesting paper
written by Karatsuba) |
Thu 2/1 |
Divide-and-conquer sorting and selection: quicksort
and quickselect |
Tues 2/6 |
Heapsort
and the binary
heap data structure for priority queues |
Thu 2/8 |
Lower
bound on the complexity of comparison-based
sorting. Quiz
|
Tues 2/13 |
Linear-time sorting algorithms: Counting sort, Radix sort,
Bucket
sort |
Thu 2/15 |
Computational
geometry, the convex hull problem, and the quickhull
algorithm |
Tues 2/20 |
Review
|
Thu 2/22 |
First exam
|
Tues 2/27 |
Greedy algorithm: Huffman
encoding algorithm for lossless compression |
Thu 3/1 |
Greedy algorithm: Prim's
algorithm for minimal spanning tree problem |
Tues 3/6 |
Limitations of the greedy strategy: Coin change problem,
Fractional and 0-1 knapsack problems |
Tues 3/20 |
Dynamic
programming and memoization:
Fibonacci
numbers, Coin
change problem, 0-1
knapsack problems |
Thu 3/22 |
Dynamic programming: Longest
common subsequence and edit
distance problems |
Tues 3/27 |
Single-source
shortest path problem: breadth-first search, Dijkstra's
algorithm |
Thu 3/29 |
Single-source shortest path problems continued: Bellman-Ford
algorithm |
Tues 4/3 |
Depth-first
graph traversal and topological
sort |
Thu 4/5
|
Depth-first graph traversal continued:
decomposition of a graph into connected
components |
Tues 4/10 |
Review
|
Thu 4/12 |
Second exam |
Tues 4/17 |
Introduction to NP-complete problems
|
Tues 4/19 |
NP-complete problems continued
|
Tues 4/24
|
Review
|
Tues 5/1 |
Final
exam 12 - 3
|