Fall 2025 CS231

This is a course about algorithms; their design and analysis

About CS231


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.

Meet your instructors & tutors

Click here for CS231 support calendar


Instructors

Christine Bassem
Office hours:
Office hours TBD

Panagiotis Metaxas
Office hours TBD

Administrative details

All administrative details can be found in The Syllabus

CS231 Schedule


Please note that this page will be updated frequently, and it will contain all course content and resources
Monday Tuesday Wednesday Thursday Friday
Sep
1
Labor Day
2
Introduction and Review
(slides)
Reading: Course syllabus
3
Continue Review
(slides)
4
5
(I) Basics:
Priority queues and heaps
(slides)
Reading: Section 2.5
8
9
Analysis and asymptotics
(slides)
10
Asymptotics Practice
11
12
Stable matching (1)
(slides)
Quiz 1 open and available till Sunday 11:59pm
15
16
Stable matching (2)
(slides)
17
Office hours
Assignment 1 due at 11:59pm
(pdf file - tex file)
18
19
(II) Graphs: Definitions and representation
(slides)
22
23
BFS and Graph coloring
(slides)
24
Graph coloring
(slides)
25
26
DFS and Topological ordering
(slides)
Quiz 2 open and available till Sunday 11:59pm
29
30
(III) Greedy algorithms:
Interval Scheduling
(slides)
Oct
1
Office hours
Assignment 2 due at 11:59pm
2
3
Scheduling (2)
(slides)
6
7
Exchange argument proof
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)
**Note the different day**
Assignment 3 due at 11:59pm
20
21
Minimum spanning trees
(slides)
22
Office hours
23
24
(IV) Divide and Conquer:
Merge sort
Quiz 3 open and available till Sunday 11:59pm
27
28
No class - Tanner conference
29
Counting Inversions
30
31
Practice solving recurrences
**Note the different day**
Assignment 4 due at 11:59pm
Nov
3
4
(V) Dynamic programming:
Weighted interval scheduling
5
Office hours
6
7
Weighted interval scheduling
Quiz 4 open and available till Sunday 11:59pm
10
11
Knapsack
12
Review session
13
14
Exam 2 in-class
Covers material in assignments 3 and 4
17
18
Shortest path revisited
19
Office Hours
Assignment 5 due at 11:59pm
20
21
(VI) Max Flow:
Max Flow problem
24
25
Applications of Max Flow
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