Fall 2024 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 anal- ysis 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:
Monday 2:30 to 3:30pm
Friday 1pm to 2:30pm
One-on-one meetings can be scheduled by email


Tutors

Emily Suh
Karen Xiao
Katelyn Zhou
Sally Kim

CS231 Syllabus


All course info and logistics can be found in the course 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
3
Introduction and Review
(slides)
Reading: Course syllabus
4
5
6
Stable Matching (1)
(slides)
Reading: Section 1.1
Assignment 0 due at 11:59pm (pdf file - tex file)
9
10
Stable matching (2)
(Finishing up slides from lecture 2)
11
12
13
Implementation and Analysis
(slides)
Complete Quiz 1 on Gradescope before Sunday 15th at 11:59pm
16
17
Analysis and asymptotics
(slides)
Reading: Sections 2.1 and 2.2
18
19
20
(II) Graphs: Definitions and representation
(slides)
Assignment 1 due at 11:59pm (pdf file - tex file)
23
24
BFS
(slides)
25
26
27
Exam 1
Covers Graph representation
30
Oct
1
BFS(2)
(slides)
2
3
4
DFS and Topological ordering
(slides)
7
8
(III) Greedy algorithms:
Interval Scheduling
(slides)
9
10
11
Scheduling and exchange argument
(slides)
Assignment 2 due at 11:59pm (pdf file - tex file - starter code)
14
Fall break
15
Fall break
16
17
18
Exchange argument 2
(proof)
Complete Quiz 2 on Gradescope before Sunday 20th at 11:59pm
21
22
Shortest path routing
(slides)
23
24
25
Minimum spanning trees
(slides)
Assignment 3 due at 11:59pm (pdf file - tex file)
28
29
Tanner Conference
30
31
Nov 1
Exam 2
Covers Graphs and Greedy
4
5
(IV) Divide and Conquer:
Sorting and Merge sort
(slides)
6
7
8
Solving Recurrences
Assignment 4 due at 11:59pm (pdf file - tex file)
11
Project Phase 1
Complete form for team formation
12
Counting Inversions
(slides)
13
14
15
(V) Dynamic programming:
Weighted interval scheduling
(slides) - activity)
Complete Quiz 3 on Gradescope before Sunday 17th at 11:59pm
18
19
Weighted interval scheduling
(same slides as last week)
20
21
22
Knapsack
(slides)
Assignment 5 due at 11:59pm (pdf file - tex file - Code)
25
Project Phase 2
Submit list of references
26
Shortest path revisited
( slides )
27
Thanksgiving break
28
Thanksgiving break
29
Thanksgiving break
Dec 2
Complete Quiz 4 on Gradescope before Wednesday 4th at 11:59pm
3
(VI) Max Flow:
Max Flow problem
4
Assignment 6 due at 11:59pm (pdf file - tex file)
5
6
Exam 3 in-class
Covers remaining material
9
Project Phase 3
Submit draft and prepare presentations
10
Paper presentations
11
12
Reading period starts