CS 161 - Design and Analysis of Algorithms - Winter, 2026

Course staff

Class announcements

Class meetings

Syllabus

Textbook

Schedule of classes and slides

Lecture no. Topics Slides (PDF) Slides-annotated (PDF) Slides (PPT) Reading - Comments
Lecture 1 (1/6) Administrivia, Introduction L1 L1
Lecture 2 (1/8) Review of basic concepts [GT] Sections 1.1, 1.2, 1.3, Chapter 2, Sections 3.1, 5.2.2
Lecture 3 (1/13) Divide and conquer, mergesort, counting intersections [GT] Sections 8.1, 8.2, 11.1, 11.2, 11.3, 11.4
Lecture 4 (1/15) Divide and conquer (continued) [GT] Sections 8.1, 8.2, 11.1, 11.2, 11.3, 11.4
Lecture 5 (1/20) Divide and conquer (continued) [GT] Sections 8.1, 8.2, 11.1, 11.2, 11.3, 11.4
Lecture 6 (1/22) Divide and conquer (continued) [GT] Sections 8.1, 8.2, 11.1, 11.2, 11.3, 11.4
Lecture 7 (1/27) Midterm 1
Lecture 8 (1/29) Dynamic Programming: Introduction. Memoization, Rod cutting and 0/1 Knapsack problems [GT] Chapter 12
Lecture 9 (2/3) Dynamic Programming: 0/1 Knapsack (cont.), Bellman-Ford, Interval Scheduling [GT] Chapter 12
Lecture 10 (2/5) Dynamic Programming (cont.) [GT] Chapter 12
Lecture 11 (2/10) Midterm 2
Lecture 12 (2/12) Max flow, bipartite matching [GT] Sections 16.1, 16.2, 16.3, 16.4
Lecture 13 (2/17) Max flow, bipartite matching, further examples [GT] Sections 16.1, 16.2, 16.3, 16.4
Lecture 14 (2/19) Greedy method, Fractional Knapsack [GT] Sections 10.1, 10.2
Lecture 15 (2/24) Minimum spanning trees [GT] Sections 15.1, 15.2, 15.3
Lecture 16 (2/26) More problems on greedy [GT] Sections 10.1, 10.2
Lecture 17 (3/3) Midterm 3
Lecture 18 (3/5) NP-completeness, reductions [GT] Chapter 17, NOT part of the final exam
Lecture 19 (3/10) Recap Dynamic Programming, Divide and Conquer
Lecture 20 (3/12) Recap Greedy, Maxflow, MSTs

Homework Assignments