See the index page for categorical listings of all assignments and topics.

Week 1: Introduction and Basic Concepts (Mostly review of ICS 211, 141 and 241)

  • Tues 01/14: #1 & #4 - Introduction to Course, Review of Basic Data Structures

    • Reading: CLRS Chapters 1 & 10

    • Lecture Notes: Topic 01, Topic 04

    • Screencasts: 01A-C (in Laulima Wiki), 04A, 04B

  • Thurs 01/16: #3 Growth of Functions and Asymptotic Concepts

  • Fri 01/17:

    • Due: Problem Set #1 (Topics 1, 3, & 4) at 4pm in POST 317

Week 2: Algorithm Correctness and Analysis, Divide & Conquer, and Analysis of Recurrences

  • Tues 01/21: #2 - Proving Correctness, Analyzing Algorithms

  • Thurs 01/23: #7 - Divide & Conquer and Analysis of Recurrences:

    • Reading: CLRS Sections 2.3, 4.1 & 4.3-4.5

    • Lecture Notes: Topic 07

    • Screencasts: 02D (in Laulima), 02E (in Laulima), 07A, 07B, 07C, 07D

    • (Additional Screencasts): MIT Lecture 02 (16:51-end), MIT Lecture 03 (through about 13:07  —  we don't cover Strassen or Fibonacci numbers).

  • Fri 01/24:

    • Due: Problem Set #2 (Topic 2) at 4pm in POST 317

Week 3: Heap, Heapsort, and Priority Queues

  • Tues 01/28: #9 - Heap, Heapsort and Priority Queues:

  • Thurs 01/30: Class canceled (storm)

  • Fri 01/31:

    • Due: Problem Set #3 (Topics 7 & 9) at 4pm in POST 317

Week 4: Binary Trees and Balanced Trees

  • Tues 02/04: #8 - Binary Search Trees:

  • Thurs 02/06: #11 - 2-3-4 Trees and Red-Black Trees:

    • Reading: Sedgewick Chapter 15 (in Laulima) & CLRS Chapter 13

    • Lecture Notes: Topic 11

    • Screencasts: 11A, 11B, 11C, 11D

    • (Additional Screencasts): MIT Lecture 10 (Read Sedgewick first to understand the 2-4 tree and how a RBT is a representation of a 2-4 tree.)

    • Allow extra time for this material!

  • Fri 02/07:

    • Due: Problem Set #4 (Topics 8 & 11) at 4pm in POST 317

Week 5: Probabilistic Analysis and Randomized Algorithms

  • Tues 02/11: #5A - Probabilistic Analysis:

    • Reading: CLRS Chapter 5.1-5.3

    • Lecture Notes: Topic 05A

    • Screencasts: 05A, 05B

  • Thurs 02/13: #5B - Randomized Algorithms, Quicksort:

    • Reading: CLRS Chapter 7 (all)

    • Lecture Notes: Topic 05B

    • Screencasts: 10A, 10B

  • Fri 02/14:

    • Due: Problem Set #5 (Topics 5a & 5b) at 4pm in POST 317

Week 6: Hash Tables, Selection, and Order Statistics

  • Thurs 02/20: #10a - Selection and Order Statistics:

    • Reading: CLRS Chapter 9 (all)

    • Lecture Notes: None

    • Screencast: MIT Lecture 06

  • Fri 02/21:

    • Due: Problem Set #6 (Topics 6) at 4pm in POST 317

Week 7: Sorting Lower Bound, Linear Sorting, Backtracking

  • Tues 02/25: #10b - Theoretical Limits, and O(n) Sorts:

  • Thurs 02/27: #12A - Backtracking (Recursive algorithms review):

    • Reading: Chapter 2 (sections 2.1, 2.3-2.4, 2.6, 2.8) of Jeff Erickson's online textbook (the remaining sections provide additional examples, that you may read if you want to see more examples). If you are shaky on recursive algorithms, review Chapter 1 of Jeff Erickson's online textbook.

    • Lecture Notes: None

    • Screencasts: None

  • Fri 02/28:

    • Due: Problem Set #7 (Topic 10A & 10B) at 4pm in POST 317

Week 8: Midterm 1 and Dynamic Programming

  • Tues 03/04: Midterm 1:

    • Topics 1-11

  • Thurs 03/06: #12A - Dynamic Programming:

    • Reading: CLRS Chapter 14.1-14.3 and Chapter 3 of Jeff Erickson's online textbook (through Section 3.5)

    • Lecture Notes: Topic 12A

    • Screencasts: 12A, 12B (minutes 0:00-5:00), 12D (minutes 0:00-6.16 and 9:23-end)

  • Fri 03/07:

    • Due: Problem Set #8 (Topic 12A) at 4pm in POST 317

Week 9: Dynamic Programming and Greedy Algorithms

  • Tues 03/11: #12B - Dynamic Programming (cont.):

    • Reading: CLRS Chapter 14.4-14.5; additional examples in the rest of Chapter 3 of Jeff Erickson's online textbook (sections 3.6-3.9)

    • Lecture Notes: Topic 12B

    • Screencasts: 12B (from minute 5:00), 12C, 12D (from minute 6:17)

    • (Additional Screencasts): MIT Lecture 15

  • Thurs 03/13: #13 - Greedy Algorithms & Huffman Codes:

    • Reading: CLRS Sections 15.1-15.3

    • Lecture Notes: Topic 13

    • Screencasts: 13A, 13B, 13C

  • Fri 03/14:

    • Due: Problem Set #9 (Topics 12B & 13) at 4pm in POST 317

Week 10: Basic Graph Algorithms, Topological Sort, and SCC

  • Tues 03/25: #14A - Graph Representations, Breadth-First Search, Depth-First Search:

    • Reading: CLRS Sections 20.1-20.3; Chapter 5 of Jeff Erickson's lecture notes; Goodrich & Tamassia section on Graph Representations (in Laulima)

    • Lecture Notes: Topic 14A

    • Screencasts: 14A, 14B, 14C, 14D, 14E

    • (Additional Screencasts): MIT Lecture 16 (till minute 23:26, the rest focuses on MST  —  next week's topic).

  • Thurs 03/27: #14B - Topological Sort, and Strongly Connected Components:

    • Reading: CLRS Sections 20.4-20.5

    • Lecture Notes: Topic 14B

    • Screencasts: 14F

  • Fri 03/28:

    • Due: Problem Set #10 (Topics 14A) at 4pm in POST 317

Week 11: Union-Find, MST, and Finding Shortest Paths in Graphs

  • Tues 04/01: #16 & #17 - Disjoint Sets, Union-Find & Minimum Spanning Trees:

    • Reading: CLRS Chapters 19.1, 19.3, and 21. Also see Lemma 19.11, 19.12, 19.13 and Theorem 19.14

    • Lecture Notes: Topic 16 (skip Linked List representation: Forest is much better), Topic 17 Notes

    • Screencasts: 17A, 17B, 17C

    • (Additional Screencasts): MIT Lecture 16 (from minute 23:26).

  • Fri 04/04:

    • Due: Problem Set #11 (Topics 14B, 16 & 17) at 4pm in POST 317

Week 12: Finding Shortest Paths in Graphs and Dynamic Programming practice

  • Tues 04/08: #19 - All-Pairs Shortest Paths:

  • Thurs 04/10: Additional practice with Dynamic Programming

  • Fri 04/11:

    • Due: Problem Set #12 (Topics 18 & 19) at 4pm in POST 317

Week 13: Maximum Flow and Midterm 2

  • Tues 04/15: #20 - Maximum Flow:

    • Reading: CLRS Sections 24.1-24.3

    • Lecture Notes: Topic 20

    • Screencasts: 20A, 20B, 20C

  • Thurs 04/17: Midterm 2:

    • Topics 12-14, 16-19

Week 14: Maximum Flow and NP-Completeness

  • Tues 04/22: #20 - Maximum Flow (continued):

    • Reading: CLRS Sections 24.1-24.3

    • Lecture Notes: Topic 20

    • Screencasts: 20A, 20B, 20C

  • Thurs 04/24: #24 - Complexity Theory & NP-Completeness:

  • Fri 04/25:

    • Due: Problem Set #13 (Topic 20) at 4pm in POST 317

Week 15: Approximation Algorithms and Multithreading

  • Tues 04/29: #25 - Approximation Algorithms:

    • Reading: CLRS Chapter 35

    • Lecture Notes: Topic 25

    • Screencasts: 25A, 25B

  • Thurs 05/01: #22 - Parallel Algorithms:

    • Reading: CLRS Chapter 26

    • Lecture Notes: Topic 22

    • Screencasts: None

  • Fri 05/02:

    • Due: Problem Set #14 (Topic 24 & 25) at 4pm in POST 317

Week 16: Course Review

  • Tues 05/06: Course Review

Finals Week:

  • Final Exam: Cumulative on all topics (1-14, 16-20, 22, 24, & 25)

    • Section 3 (TR 4:30-6:10pm): Tuesday 4:20-6:30pm