CSE 4833/6833  Introduction to Analysis of Algorithms (Spring 2017) - Course Schedule 



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 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.
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 divide-and-conquer strategy for algorithm design. 
Tues 9/5
Asymptotic analysis of recursive algorithms: solving recurrence relations and the Master theorem.
Thu 9/7 Divide-and-conquer integer multiplication, also known as Karatsuba's algorithm (interesting paper written by Karatsuba)
Tues 9/12 Divide-and-conquer 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 comparison-based sorting. Linear-time 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 0-1 knapsack problems
Tues 10/17 Dynamic programming: Coin change problem, 0-1 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 Single-source shortest path problem: breadth-first search, Dijkstra's algorithm, Bellman-Ford algorithm
Tues 10/31 Depth-first graph traversal and topological sort
Thu 11/2 Depth-first graph traversal continued: decomposition of a graph into connected components
Tues 11/7 Review
Thu 11/9 Exam 2
Tues 11/14 Introduction to NP-complete problems
Thu 11/16
Tues 11/21
Tues 11/28 Review
Wed 12/6 Final exam 3 - 6