Fall 2025 CS231
This is a course about algorithms; their design and analysis
The language of computer science is to a great extent the language of algorithms. Although there are many thousands of algorithms, there are relative few basic design techniques. These include: divide-and-conquer, greedy, dynamic programming, and network flow. We will illustrate these techniques by studying a few fundamental algorithms of each type. In addition to helping us understand classic solution techniques, these algorithms have proven very useful in practice. Their names and the names of the problems they solve have become a standard part of the language of computer science.
Unfortunately, there is rarely a best algorithm to solve a given problem. Each approach involves a series of tradeoffs. Therefore, we will also study methods for evaluating the usefulness of an algorithm in a given situation. Among the various competing measures, we will focus primarily on the analysis of time and space complexity. However, a number of other issues will also be discussed.
Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|
Sep
1
Labor Day
|
2
Introduction and Review
(slides)
Reading: Course syllabus
|
3
Continue Review
(slides) |
4
|
5
Reading: Section 2.5
|
8
|
9
Analysis and asymptotics
(slides)
Reading: Sections 2.1 and 2.2
|
10
Asymptotics Practice
Reading: Sections 2.1 and 2.2
|
11
|
12
Stable matching (1)
(slides)
Reading: Section 1.1
Quiz 1 open and available till Sunday 11:59pm
|
15
|
16
Stable matching (2)
(slides)
Reading: Section 2.3
|
17
Office hours
|
18
|
19
(II) Graphs:
Definitions and representation
(slides)
Reading: Sections 3.1 and 3.2
|
22
|
23
BFS and Graph coloring
(slides)
Reading: Sections 3.3 and 3.4
|
24
Graph coloring
(slides)
Reading: Section 3.4
|
25
|
26
DFS and Topological ordering
(slides)
Reading: Sections 3.5 and 3.6
Quiz 2 open and available till Sunday 11:59pm
|
29
|
30
Reading: Section 4.1
|
Oct
1
Office hours
Assignment 2 due at 11:59pm
|
2
|
3
Scheduling (2)
(slides)
Reading: Sections 4.1 and 4.2
|
6
|
7
Exchange argument proof
Reading: Section 4.2
|
8
Review session
|
9
|
10
Exam 1 in-class
Covers material in assignments 1-2 |
13
Indigenous Peoples’ Day - No classes
|
14
Fall break
|
15
Office hours
|
16
|
17
Shortest path routing
(slides)
Reading: Section 4.4
**Note the different day**
Assignment 3 due at 11:59pm |
20
|
21
Minimum spanning trees
(slides)
Reading: Section 4.5
|
22
Office hours
|
23
|
24
(IV) Divide and Conquer:
Merge sort
Reading: Sections 5.1 and 5.2
Quiz 3 open and available till Sunday 11:59pm
|
27
|
28
No class - Tanner conference
|
29
Counting Inversions
Reading: Section 5.3
|
30
|
31
Practice solving recurrences
Reading: Section 5.2
**Note the different day**
Assignment 4 due at 11:59pm |
Nov
3
|
4
(V) Dynamic programming:
Weighted interval scheduling
Reading: Sections 6.1 and 6.2
|
5
Office hours
|
6
|
7
Weighted interval scheduling
Reading: Sections 6.1 and 6.2
Quiz 4 open and available till Sunday 11:59pm
|
10
|
11
Knapsack
Reading: Section 6.4
|
12
Review session
|
13
|
14
Exam 2 in-class
Covers material in assignments 3 and 4 |
17
|
18
Shortest path revisited
Reading: Section 6.8
|
19
Office Hours
Assignment 5 due at 11:59pm
|
20
|
21
(VI) Max Flow:
Max Flow problem
Reading: Section 7.1
|
24
|
25
Applications of Max Flow
Reading: Section 7.2
|
26
Thanksgiving break
|
27
Thanksgiving break
|
28
Thanksgiving break
|
Dec
1
|
2
TBD
|
3
Review session
Assignment 6 due at 11:59pm
Mini-assignment to cover max flow and tractability |
4
|
5
Exam 3 in-class
Covers material in assignments 5 and 6 |
8
|
9
Final presentations
|
10
Buffer session
|
11
Reading period starts
|