| 1 | Introduction., Review syllabus and expectations., Why study algorithms? |
| Algorithm Analysis Framework, Order of growth, Coding contest 1 assigned |
| Order of growth, Review coding contest |
| 2 | Labor Day – No class |
| Analysis of non-recursive algorithms |
| Recursion and analysis of recursive algorithms |
| 3 | Quiz 1 |
| Brute Force – selection sort, Coding contest 2 assigned, Coding contest 1 due |
| Brute force, exhaustive search |
| 4 | Depth first search and breadth first search graph traversals |
| Depth first search and breadth first search graph traversals |
| Decrease and Conquer, topological sort |
| 5 | Quiz 2 |
| Decrease and Conquer, Insertion sort, permutations |
| Decrease and Conquer, binary search, Russian peasant multiplication, fake coin problem, Coding contest 3 assigned., Coding contest 2 due |
| 6 | Mergesort |
| Quicksort |
| Quicksort |
| 7 | Review for midterm |
| Midterm |
| Work on coding contest 3, Coding contest 3 due |
| FALL BREAK |
| 8 | Quickselect |
| Multiplication of large integers, binary tree algorithms |
| Binary tree algorithms, presorting, Coding contest 4 assigned |
| 9 | Transform and Conquer, Balanced Search Trees |
| Transform and Conquer, Heapsort |
| Transform and Conquer, Heapsort |
| 10 | Quiz 3 |
| Space and time tradeoffs, string matching – Horspools algorithm |
| Space and time tradeoffs, string matching – Boyer-Moore algorithm |
| 11 | Space and time tradeoffs, Hashing |
| Dynamic Programming intro, Coin-row problem, knapsack problem, Coding contest 4 due |
| Dynamic Programming, Floyd-Warshall algorithm, Coding contest 5 assigned |
| 12 | Dynamic Programming, Floyd-Warshall algorithm |
| Quiz 4 |
| Greedy – Prims, Kruskall’s algorithm |
| 13 | Work on coding contest 5 |
| Greedy – Dijsktra, Huffman Trees |
| P, NP, NP-Complete |
| 14 | P, NP, NP-Complete |
| Quiz 5 |
| Work on sample final, Coding contest 5 due |
| 15 | Last day of class, Office hours |