CS 341: Algorithms Fall 2026



Most information that was historically on the course webpage has now been moved to the Course Outline. The course webpage will still be used for posting lecture notes and assignments.



Below is a schedule of lectures and accompanying notes. When you need more details/examples, or if you like a text book format, we provide corresponding sections of the text, CLRS, together with our recommendations for alternative sources available online. For descriptions of the books, see Resources.

    Date Topics Notes CLRS Other readings
(* = highly recommended)
Week 1 L1 Sep 10 Introduction * [Skienna] 1, 2
Week 2 L2 Sep 15 Divide-and-conquer, solving recurrences Lap Chi L02 4.1, 4.3, 4.4, 4.5; Optionally CLRS 2.3
L3 Sep 17 Optimality of algorithms [DPV] 2
Week 3 L4 Sep 22 More divide-and-conquer Lap Chi L03 9.3
L5 Sep 24 Induction and graph algorithms: breadth first search Lap Chi L05 22.1, 22.2 * [Erickson] 5.1 - 5.4
Week 4 L6 Sep 29 Induction and graph algorithms: breadth first search
L7 Oct 1 Graph algorithms II: depth first search Lap Chi L06 22.3 * [Erickson] 5.5, 6.1
Week 5 Midterm 1: Monday, Oct 5, 6:00pm to 7:50pm
L8 Oct 6 Graph algorithms II: depth first search
L9 Oct 8 Directed graphs Lap Chi L07
[Erickson] 6
Week 6 Reading week
Week 7 L10 Oct 20 Directed graphs / Greedy algorithms I: scheduling problems Lap Chi L08 22.4, 22.5 [DPV] 3.2
L11 Oct 22 Greedy algorithms I / Greedy algorithms II: single-source shortest paths Lap Chi L09 16.1 16.2 [Erickson] 4
Week 8 L12 Oct 27 Greedy algorithms II: single-source shortest paths 24.1, 24.3 [Erickson] 8.6
L13 Oct 29 Minimum spanning tree Lap Chi L10 23 [DPV] 5.1
[Erickson] 7.1, 7.2, 7.5
Week 9 L14 Nov 3 Dynamic programming I: weighted interval scheduling and knapsack Lap Chi L11 intro of 15, 15.3; CLRS 15.1 Optional [Erickson] 3.1, 3.4
L15 Nov 5 Dynamic programming II: longest increasing subsequence (LIS), longest common subsequence (LCS) Lap Chi L12 15.4 [DPV] 6.4
Week 10 Midterm 2: Monday, Nov 9, 6:00pm to 7:50pm
L16 Nov 10 Dynamic programming II / Dynamic programming III: graphs Lap Chi L12 23 [DPV] 5.1
[Erickson] 7.1, 7.2, 7.5
L17 Nov 12 Dynamic programmng III: graphs / Maximum flow Lap Chi L14
Week 11 L18 Nov 17 Maximum flow Lap Chi L15
L19 Nov 19 Some applications of maximum flow Lap Chi L16
Week 12 L20 Nov 24 Polynomial time reductions Lap Chi L17 34.1 [DPV] 8
[Erickson] 12 * for reductions: [Erickson] 1.1
L21 Nov 26 Polynomial time reductions 34.2
Week 13 L22 Dec 1 NP completeness Lap Chi L18 34.3
L23 Dec 3 NP completeness II Lap Chi L19 34.4
Week 14 L24 Dec 8 NP completeness III Lap Chi L20 34.5


Hand in a PDF file with your solutions via CrowdMark. We encourage you to prepare your solutions using LaTeX but you can use other software or submit handwritten assignments as long as they are legible. We have the right to take marks off for illegible answers.

Assignments will appear in the following table, and will be due on the dates specified:

Assignment Number Date Posted Due (11:59pm EDT/EST) Hand In Via Solutions
1 Sep 25 CrowdMark
2 Oct 30 CrowdMark
3 Nov 20 CrowdMark
4 Dec 4 CrowdMark

See the Course Outline for assignment policies.



See the Course Outline.



We will use Piazza for all course announcements and as a forum for students to ask and answer questions. So you should enroll yourself at your earliest convenience. During Piazza discussions, please do not reveal the solutions to the assignments by requesting or offering detailed advice. We'll delete comments that reveal too much. Violations can result in academic sanctions.



See the Course Outline for information about instructors, TAs/IAs, and other course staff, including contact information.

Points of contact for common questions

Note: If you decide to e-mail the course staff, you must use your uwaterloo Quest e-mail account (WatIAM/Quest userID @uwaterloo.ca); otherwise we cannot verify who you are and are limited on what we can accept and respond to.

Help Topic Contact
Assignment, Missed Deadline: We do not accept emailed assignments. The last files submitted before the deadline will be marked. If the deadline is missed due to illness or other valid, verifiable reason, see Missed Work Due To Illness below.
Assignment Marking Error: Remark requests are due within one week of release of the remark request form for the assignment, which is typically one or two business days after the release of assignment grades. Details of how to make a request will be posted on Piazza.
Assignment Recording Error: Grades will primarily be made available through CrowdMark. If you notice an error in the recorded grade (e.g., an incorrectly applied late penalty) please contact Sylvie Davies (CS 341 ISC).
Course Website Error: Contact Sylvie Davies (CS 341 ISC).
Enrollment: If Quest won't let you enroll or switch LEC or TUT sections without a permission/override number: Instructors and course staff are unable to help you. You must see a CS academic advisor.
General Course Help: Office hours or Piazza.
Lecture Questions: Office hours or Piazza.
Missed Work Due To Illness/Valid, Verifiable Reason (Assignments, Exams): Assignments, midterms, final exam: Contact Sylvie Davies (CS 341 ISC).
AccessAbility Services (AAS) exam accommodation forms (request to write at AAS): Submit to AAS at least 3 weeks before exam.


If you are person who likes a more detailed text book format, here are our recommendations for sources available online.

Textbook: [CLRS] Cormen, Leiserson, Rivest, and Stein, Introduction to Algorithms (3rd ed.), MIT Press, 2009 (QA76.6 .C662 2009).

This book is available electronically through the UW library catalog.

Additional reference: [DPV], Dasgupta, Papadimitriou, Vazirani, Algorithms, available here.

Additional books:

The following resource is also useful for the course but more importantly for technical interviews you may have: