Lectures, Course Outline, and Learning Objectives

Key to ASCII notation

  • 'oo' = ∞ = "infinity"
  • '{}' = ∅ = "empty set"
  • '(-' = ∈ = "element of"
  • '(_' = ⊆ = "subset of" (not strict)
  • 'u' = ∪ = "union"
  • 'n' = ∩ = "intersection"
  • '~L' = L = "complement of L"
  • '-]' = ∃ = "there exists"
  • '\-/' = ∀ = "for all"
  • '/\' = ∧ = "and"
  • '\/' = ∨ = "or"
  • '->' = → = "implies"
  • '<->' = ↔ = "if and only if (iff)"
  • '!' = ¬ = "not", e.g., 'a != b' = a ≠ b = "a is not equal to b", 'w !(- L' = w ∉ L = "w is not an element of L", etc.
  • '\sum' = ∑ = summation sign
  • '\prod' = ∏ = product sign
  • '\Sigma' = Σ = capital greek letter Sigma, '\delta' = δ = lowercase greek letter delta, etc.
  • '|_x_|' = ⌊x⌋ = floor(x)
  • '|^x^|' = ⌈x⌉ = ceiling(x)
  • '_' indicates a subscript, e.g., 'q_1' = q1
  • '^' indicates a superscript, e.g., 'n^2' = n2
  • curly braces '{}' surround longer subscripts/superscripts, e.g., '\sum_{0 <= i <= n} 2^{i/2}' = ∑0 ≤ i ≤ n 2i/2

Lecture summaries

Every week, specific sections of the textbook will be posted as readings. You will be expected to read these sections to prepare for the following week's lectures.
At the end of each week, a short summary of the material covered during lectures will be posted.

  1. Week 1 (Sep 8–12); readings: chapter 2 (review), section 4.1.
  2. Week 2 (Sep 15–19); readings: section 4.5.
  3. Week 3 (Sep 22–26); readings: section 6.1.
  4. Week 4 (Sep 29–Oct 3); readings: sections 6.2, 6.8.
  5. Week 5 (Oct 6–10); readings: section 6.8.
  6. Week 6 (Oct 13–17); readings: sections 5.5, 13.5.
  7. Week 7 (Oct 20–24); readings: sections 5.4, 7.1.
  8. Week 8 (Oct 27–31); readings: sections 7.2, 7.3.
  9. Week 9 (Nov 3–7); readings: sections 7.5, 7.11.
  10. Week 10 (Nov 10–14); readings: sections 11.6.
  11. Week 11 (Nov 17–21); readings: section 11.4.
  12. Week 12 (Nov 24–28); readings: section 11.1.
  13. Week 13 (Dec 1–5); readings: skim chapters 12, 13.
    See the Tests/Exam page for advice about studying for and writing the final exam.>

Course outline

Lecture topics

The following topics will be covered in this course, in the order listed. For each topic, we have indicated the approximate number of weeks required to cover that topic as well as a list of the relevant sections in the textbook.

  • Greedy algorithms (Chapter 4): 2.5 weeks.
  • Dynamic programming (Chapter 6): 2.5 weeks.
  • Divide and conquer (Chapter 5): 2 weeks.
  • Network flow (Chapter 7): 2 weeks.
  • Linear programming (Section 11.6): 1 week.
  • Approximation and randomized algorithms (parts of Chapters 11 and 13): 2 weeks.

Learning objectives

By the end of this course, students should be familiar with standard algorithm design techniques (divide-and-conquer, greedy strategies, dynamic programming, linear programming, randomization):

  • know the definitions of the various techniques;
  • be able to recognize algorithms that employ these techniques;
  • be able to write algorithms using these techniques;
  • understand what it means for algorithms written using these techniques to be correct;
  • be able to analyze the efficiency of algorithms written using these techniques.