CS 161 - Design and Analysis of Algorithms - Spring, 2024

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 (4/2) Administrivia, Introduction L1 L1
Lecture 2 (4/4) Review of basic concepts L2 L2 L2 [GT] Sections 1.1, 1.2, 1.3, Chapter 2, Sections 3.1, 5.2.2
Lecture 3 (4/9) Divide and conquer, mergesort, counting intersections L3 L3 L3 [GT] Sections 8.1, 8.2, 11.1, 11.2, 11.3, 11.4
Lecture 4 (4/11) Divide and conquer (continued) L4 L4 L4 [GT] Sections 8.1, 8.2, 11.1, 11.2, 11.3, 11.4
Lecture 5 (4/16) Divide and conquer (continued) L5 L5 L5 [GT] Sections 8.1, 8.2, 11.1, 11.2, 11.3, 11.4
Lecture 6 (4/18) Divide and conquer (continued) L6 L6 L6 [GT] Sections 8.1, 8.2, 11.1, 11.2, 11.3, 11.4
Lecture 7 (4/23) Midterm 1
Lecture 8 (4/25) Dynamic Programming: Introduction. Memoization, Rod cutting and 0/1 Knapsack problems L8 L8 L8 [GT] Chapter 12
Lecture 9 (4/30) Dynamic Programming: 0/1 Knapsack (cont.), Bellman-Ford, Interval Scheduling L9 L9 L9 [GT] Chapter 12
Lecture 10 (5/2) Dynamic Programming (cont.) L10 L10 L10 [GT] Chapter 12
Lecture 11 (5/7) Midterm 2
Lecture 12 (5/9) Max flow, bipartite matching L12 L12 L12 [GT] Sections 16.1, 16.2, 16.3, 16.4
Lecture 13 (5/14) Max flow, bipartite matching, further examples L13 L13 L13 [GT] Sections 16.1, 16.2, 16.3, 16.4
Lecture 14 (5/16) Greedy method, Fractional Knapsack L14 L14 L14 [GT] Sections 10.1, 10.2
Lecture 15 (5/21) Minimum spanning trees L15 L15 L15 [GT] Sections 15.1, 15.2, 15.3
Lecture 16 (5/23) More problems on greedy L16 L16 L16 [GT] Sections 10.1, 10.2
Lecture 17 (5/28) Midterm 3
Lecture 18 (5/30) NP-completeness, reductions L18 L18 L18 [GT] Chapter 17, NOT part of the final exam
Lecture 19 (6/4) Recap L19 L19 L19 Dynamic Programming, Divide and Conquer
Lecture 20 (6/6) Recap L20 L20 L20 Greedy, Maxflow, MSTs

Homework Assignments