Schedule

The schedule below shows the tentative dates for all class topics, readings, and assignments. You should complete all assigned reading before class on the day it is listed. Labs will be available shortly before the assigned lab day. There may be some revisions to the schedule during the semester, but I will make sure to announce these changes in class.

If you view this page with JavaScript enabled you can jump to the current week on the schedule, and you should see the next day of class highlighted in the schedule below.

Week 0 :
F
Aug 27
class 1

An introduction to the course

We begin to consider the core ideas of the course.

Topics: Course goals. Course format.

Week 1 :
M
Aug 30
class 2

An introduction to the course, continued

We continue our introduction to the course.

Topics: Approaching algorithms. Testing priority queues. Heaps, continued. Problem: Getting from here to there. Problem: Optimal soldering plans. Problem: Scheduling overlapping tasks.


W
Sep 1
class 3

Asymptotic analysis

We begin to consider ways to analyze the running times of algorithms.

Topics: Review of complexity analysis from 301. Big-Oh, formalized. Characteristics of Big-Oh and associated proofs.


F
Sep 3
class 4

Asymptotic analysis, continued

We continue to explore running time

Topics: Other characteristics of Big-Oh. Other notations (theta, little-oh). Casual and careful loop counting.

Week 2 :
M
Sep 6
class 5

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.

Topics: Divide and conquer, in theory. Review of divide-and-conquer algorithms and structures. Finding the median value in an array. Exponentiation with integer exponents.


W
Sep 8
class 6

Pause for breath

We pause to discuss a variety of outstanding issues.

Topics: Nearest Neighbor, revisited. Other Roughgarden examples.



F
Sep 10
class 7

Asymptotic analysis and recurrence relations

We explore ways to think about the running time of divide-and-conquer algorithms.

Topics: Analyzing recursive algorithms with recurrence relations. Solving recurrence relations. Looking ahead to the master theorem.

Week 3 :
M
Sep 13
class 8

Detour: Nearest Neighbors, revisited

We delve more deeply into the nearest neighbor algorithm.


W
Sep 15
class 9

Asymptotic analysis, revisited

We continue ideas from the prior class.

Topics: Nearest neighbor example. More practice solving recurrence relations. The recurrence formula theorem.



F
Sep 17
class 10

Binary search trees

We continue trees in general and binary search trees in particular.

Topics: A bit more about the recurrence formula theorem. Trees, formalized. Terminology. Binary trees. Traversing trees. Binary search trees. Building balanced BSTs.. Balancing BSTs..

Week 4 :
M
Sep 20
class 11

Red-black trees

We start to consider red-black trees, one of the approaches for keeping search trees relatively balanced.

Topics: Red-black tree basics. Red-black tree examples. Insertion in red-black trees.


W
Sep 22
class 12

Red-black trees, continued

We continue our exploration of red-black trees.

Topics: Deletion in binary-search trees. Deletion in red-black trees.



F
Sep 24
class 13

Pause for breath

We pause to catch up on balanced trees and other issues.

Topics: Red-black trees. Other balanced trees.

Week 5 :
M
Sep 27
class 14

Sorting

We begin our consideration of one of the most common algorithmic problems, that of putting a collection of values in order.

Topics: Characteristics of sorting algorithms. Common sorting algorithms.


W
Sep 29
class 15

Lower bounds on sorting algorithms

We consider lower bounds on comparison-based sorting algorithms.

Topics: Recap from prior class. Some followup questions on algorithms. A theorem about lower bounds. Proving that theorem.


F
Oct 1
class 16

O(n) sorting algorithms

We consider some algorithms that achieve O(n) running time, often by limiting the input in certain ways.

Topics: A sorting exercise. Other strategies for sorting. Bucket sort. Radix sort.

Week 6 :
M
Oct 4
class 17

Prep for Assignment 6

We consier issues of sorting in preparation for assignment 6.


W
Oct 6
class 18

More prep for Assignment 6

We consier issues of sorting in preparation for assignment 6.



F
Oct 8
class 19

Tries

We explore the trie data structure.

Topics: Review of dictionaries. Costs of dictionary implementations. Tries.

Week 7 :
M
Oct 11
class 20

Program verification (1)

We begin to explore why and how we we use formal techniques to verify our algorithms.

Topics: Goals for this unit. Verifying imperative code. Loop invariants. Example - binary search.


W
Oct 13
class 21

Program verification (2)

We consider the details of common verification mechanisms.

Topics: Example - binary search, revised. Example - DNF. Example - Efficient exponentiation with recursion. Example - Efficient exponentiation with iteration.



F
Oct 15
class 22

Program verification (3)

We conclude our exploration of program verification and loop invariants.

Topics: About HW7. Example - Efficient exponentiation with iteration. Other invariants.

Fall Break
Week 8 :
M
Oct 25
class 23

Coded Bias Watch Party

We watch “Coded Bias” in preparation for a discussion.


W
Oct 27
class 24

Implications of Coded Bias

We consider the implications of Coded Bias on our own practices as computer scientists and algorithm designers.



F
Oct 29
class 25

Shortest paths

We start our exploration of graphs by considering algorithms for computing the shortest path between nodes in a graph.

Topics: Graphs. The shortest-path problem. Dijkstra’s shortest-path algorithm. Analyzing Dijkstra’s shortest-path algorithm. All-pairs shortest-path algorithms.

Week 9 :
M
Nov 1
class 26

Minimum spanning trees

We consider an important class of graph algorithm, that of computing the minimum spanning tree of a graph.

Topics: Minimum spanning trees. Examples. Designing an MST algorithm.


W
Nov 3
class 27

Miniumum spanning trees, continued

We explore the details and proofs of correctness of some MST algorithms.

Topics: Prim’s algorithm and Kruskal’s algorithm. Efficiency. Proofs of correctness.



F
Nov 5
class 28

Sets and union-find

We consider an algorithm and structure that are useful in a variety of situations.

Topics: A set ADT. Data structure design, revisited. The union-find structure. Analyzing union find. Improving union-find.

Week 10 :
M
Nov 8
class 29

Implementing MST algorithms

We consider how we might implement MSTs


W
Nov 10
class 30

Network flows

We explore netflork flow algorithms and their applications.

Topics: Looking back to graph algorithms. Network flows.



F
Nov 12
class 31

Network flows, continued

We continue to explore netflork flow algorithms and their applications.

Topics: The Ford-Fulkerson algorithm. Bipartite matching. Further applications of network flow.

Week 11 :
M
Nov 15
class 32

Dynamic programming (1)

We consider another important algorithm design technique.

Topics: Fibonacci numbers. The stamps problem. The value of caching. Dynamic programming, generalized.


W
Nov 17
class 33

The return of greed

Motivated by the stamps problem, we return to greedy solutions for coins and other objects.

Topics: Greedy coins. The activity selection problem. Why prove. Proofs of correctness.


Th
Nov 18

F
Nov 19
class 34

Dynamic programming (2)

We further continue our consideration of dynamic programming

Topics: Generalizing the technique. Other problems.

Week 12 :
M
Nov 22
class 35

Skip Lists (1) and Dynamic Programming (3)

We consider an algorithm from the literature

Topics: Introduction to skip lists. Knapsack, concluded. Edit distance.

Thanksgiving Break
Week 13 :
M
Nov 29
class 36

Dynamic programming (4)

We conclude our initial exploration of dynamic programming.

Topics: Edit distance, continued. Variations of edit distance.


W
Dec 1
class 37

Skip Lists (2)

We return to an algorithm from the literature



F
Dec 3
class 38

Topological sort

We catch up on a missed topic

Week 14 :
M
Dec 6
class 39

Basics of string matching

We consider some basic issues in string matching algorithms

Topics: Approximate substring matching. Exact substring matching. The brute-force approach. The hash-code approach.


W
Dec 8
class 40

Improved string-matching algorithms

We continue to explore string-matching algorithms

Topics: The hash-code approach. Keeping track of look-ahead. Building the table.



F
Dec 10
class 41

Evaluate and debrief

Finals Week
Winter Break