CSE 431/531: Algorithm Analysis and Design (Spring 2021)

Course Information

Time: MoWeFr 9:10am~10:00am

Location: Due to the coronavirus pandemic, all lectures will be online.

Credits: 3

Please sign up for the course on Piazza.


Shi Li

Email: [first name][last name initial][at][buffalo][dot][edu]

Homepage: http://www.cse.buffalo.edu/~shil/


NameEmailOffice Hours
Xiangyu Guo xiangyug[at]
Alesandro Baccarini [at]


Algorithm design and analysis is fundamental to all areas of computer science and gives a rigorous framework for the study of optimization. This course provides an introduction to algorithm design through a survey of the common algorithm design paradigms of greedy optimization, divide and conquer, dynamic programming, and linear programming, and the NP-completeness theory.


There is no required text book for the class, but it is recommended that you have one of the following books:


Your final grade will be computed as follows:



NA stands for "no animation".

Syllabus & Tentative Schedule

WeekDateTopicContentsOther Notes
1 Feb 1 Introduction syllabus
asymptotic notations (KT 2.2)
common running times (KT 2.4)
Feb 3
Feb 5
2 Feb 8
Feb 10Graph Basics graph basics (KT 3.1)
connectivity and traversal (KT 3.2, 3.4)
topological order (KT 3.6)
Feb 12
3 Feb 15 HW1 Posted
Feb 17Greedy Algorithms interval scheduling (KT 4.1)
optimum caching (KT 4.3)
Huffman code (KT 4.8)
flow time minimization
Feb 19
4 Feb 22
Feb 24HW1 Due
Feb 26
5Mar 1
Mar 3RecitationHW2 Posted
Mar 5Divide and Conquer merge sort and counting inversions (KT 5.1, 5.3)
quicksort, median-finder, selection (KT 13.5)
polynomial and matrix multiplications (KT 5.5)
solving recurrences (KT 5.2)
6 Mar 8
Mar 10
Mar 12HW2 Due
7 Mar 15
Mar 17
Mar 19RecitationHW3 Posted
8 Mar 22Dynamic Programming weighted interval scheduling (KT 6.1)
subset sums and knapsack (KT 6.4)
Sequence Alignment (KT 6.6)
Increasing Subsequence
Mar 24
Mar 26
9Mar 29Mar 28: HW3 Due
Mar 31
Apr 2
10 Apr 5Recitation
Apr 7Graph Algorithms Kruskal's and Prim's algorithm for MST (KT 4.5, 4.6)
Dijkstra's algorithm for shortest path (KT 4.4)
shortest path with negative weights and Bellman-Ford (KT 6.8)
HW4 Posted
Apr 9
11 Apr 12
Apr 14
Apr 16HW4 Due
12 Apr 19
Apr 21RecitationHW5 Posted
Apr 23NP-Completeness P, NP, Co-NP, P=NP?, NPC (KT 8.1-8.4)
circuit-SAT, 3-SAT (KT 8.5)
independent set (KT 8.5)
13Apr 26
Apr 28APR 27: Programming Problem 1 Due
Apr 30
14May 3May 2: HW5 Due
May 5HW Solutions and Final Review
May 7
Wed, May 12 8:00am-11:00am: Final ExamMay 11: Programming Problem 2 Due