Schedule
Week 0 | |||||||
# | Day | Date | Topic | Work Due | |||
1 | F | 8/25 |
An introduction to the course
We begin to consider the core ideas of the course. |
|
|||
Week 1 | |||||||
# | Day | Date | Topic | Work Due | |||
2 | M | 8/28 |
Shortest path
We continue our exploration of the shortest path problem from the prior class. |
|
|||
3 | W | 8/30 |
Asymptotic analysis
We begin to consider ways to analyze the running times of algorithms. |
|
|||
4 | F | 9/1 |
Reflective activities
We reflect on the learning goals of the first few days of class and ground our understanding in a variety of exercises. |
|
|||
Week 2 | |||||||
# | Day | Date | Topic | Work Due | |||
5 | M | 9/4 |
Divide-and-conquer algorithms and structures
We explore one of the important algorithm design techniques, divide and conquer. Divide and conquer algorithms and structures achieve some efficiency by splitting the input in half. |
|
|||
6 | W | 9/6 |
Asymptotic analysis and recurrence relations
We explore ways to think about the running time of divide-and-conquer algorithms. |
||||
7 | F | 9/8 |
The Master Theorem
We consider proofs related to recurrence relations, and therefore to divide-and-conquer algorithms. |
|
|||
Week 3 | |||||||
# | Day | Date | Topic | Work Due | |||
8 | M | 9/11 |
Roles of data structures and abstract data types
We begin to consider the ADTs and data structures that underlie many of the algorithms we write. |
|
|||
9 | W | 9/13 |
Hash Tables
We consider hash tables, one of the more popular implementations of the dictionary ADT. |
|
|||
10 | F | 9/15 |
More on dictionaries
We consider some basic issues of the tree ADT / data structure. |
|
|||
Week 4 | |||||||
# | Day | Date | Topic | Work Due | |||
11 | M | 9/18 |
Binary search trees
We continue trees in general and binary search trees in particular. |
|
|||
12 | W | 9/20 |
Red-black trees
We start to consider red-black trees, one of the approaches for keeping search trees relatively balanced. |
|
|||
13 | F | 9/22 |
Red-black trees, continued
We continue our exploration of red-black trees. |
|
|||
Week 5 | |||||||
# | Day | Date | Topic | Work Due | |||
14 | M | 9/25 |
2-3 trees
We continue to explore balanced trees by considering another approach to balancing trees. |
|
|||
15 | W | 9/27 |
Pause for breath
We pause to catch up on balanced trees and other issues. |
|
|||
16 | F | 9/29 |
Sorting
We begin our consideration of one of the most common algorithmic problems, that of putting a collection of values in order. |
|
|||
Week 6 | |||||||
# | Day | Date | Topic | Work Due | |||
17 | M | 10/2 |
Lower bounds on sorting algorithms
We consider lower bounds on comparison-based sorting algorithms. |
|
|||
18 | W | 10/4 |
O(n) sorting algorithms
We consider some algorithms that achieve O(n) running time, often by limiting the input in certain ways. |
|
|||
19 | F | 10/6 |
Radix sort
We continue our exploration of O(n) algorithms, focusing primarily on bucket sort and radix sort |
|
|||
Week 7 | |||||||
# | Day | Date | Topic | Work Due | |||
20 | M | 10/9 |
Discussion of exam 1
We consider exam 1 |
|
|||
21 | W | 10/11 |
Tries
We explore the trie data structure. |
|
|||
22 | F | 10/13 |
Pause for breath
We wrap up a variety of topics |
|
|||
Fall Break | |||||||
Week 8 | |||||||
# | Day | Date | Topic | Work Due | |||
23 | M | 10/23 |
Detour - Skip lists
We consider some details of skip lists. |
|
|||
24 | W | 10/25 |
Program verification (1)
We begin to explore why and how we we use formal techniques to verify our algorithms. |
|
|||
25 | F | 10/27 |
Program verification (2)
We consider the details of common verification mechanisms. |
|
|||
Week 9 | |||||||
# | Day | Date | Topic | Work Due | |||
26 | M | 10/30 |
Program verification (3)
We continue our exploration of program verification. |
|
|||
27 | W | 11/1 |
Program verification (4)
We conclude our exploration of program verification with a traditional example. |
|
|||
28 | F | 11/3 |
Shortest paths
We start our exploration of graphs by considering algorithms for computing the shortest path between nodes in a graph. |
|
|||
Week 10 | |||||||
# | Day | Date | Topic | Work Due | |||
29 | M | 11/6 |
Minimum spanning trees
We consider an important class of graph algorithm, that of computing the minimum spanning tree of a graph. |
|
|||
30 | W | 11/8 |
Minimum spanning trees, continued
We explore the details and proofs of correctness of some MST algorithms. |
|
|||
31 | F | 11/10 |
Implementing graphs
We consider how we might implement/represent graphs in the computer. |
|
|||
Week 11 | |||||||
# | Day | Date | Topic | Work Due | |||
32 | M | 11/13 |
Sets and union-find
We consider an algorithm and structure that are useful in a variety of situations. |
|
|||
33 | W | 11/15 |
Network flows
We explore network flow algorithms and their applications. |
|
|||
34 | F | 11/17 |
Dynamic programming (1)
We consider another important algorithm design technique. |
|
|||
Week 12 | |||||||
# | Day | Date | Topic | Work Due | |||
35 | M | 11/20 |
Dynamic programming (2)
We continue our consideration of dynamic programming |
|
|||
36 | W | 11/22 |
Discussion of exam 2
We consider common issues on exam 2 |
|
|||
Thanksgiving Break | |||||||
Week 13 | |||||||
# | Day | Date | Topic | Work Due | |||
37 | M | 11/27 |
Dynamic programming (3)
We conclude our initial exploration of dynamic programming by visiting a common dynamic programming algorithm, approximate string matching. |
|
|||
38 | W | 11/29 |
Basics of string matching
We consider some basic issues in string matching algorithms |
|
|||
39 | F | 12/1 |
Improved string-matching algorithms
We continue to explore string-matching algorithms |
|
|||
Week 14 | |||||||
# | Day | Date | Topic | Work Due | |||
40 | M | 12/4 |
Knuth-Morris-Pratt, concluded
We conclude our exploration of string matching with the Knuth-Morris-Pratt algorithm |
|
|||
41 | W | 12/6 |
Wrapup
We start to conclude the class |
||||
42 | F | 12/8 |
Evaluate and debrief
We conclude the class |
|
|||
Finals Week | |||||||
# | Day | Date | Topic | Work Due | |||
43 | W | 12/13 |
Final Examination
|
|