CS630: Graduate Algorithms (Fall’23)

Info

BU Fall ’23 academic calendar

Lectures

  • When:  Tue, Thu 9.30-10.45am
  • WhereCOM-101

Instructor

Teaching Assistants

Lab schedule

Github repo

Piazza website

Prerequisites

Students taking this class must have taken:

  • CS 330 (undergraduate algorithms)

Syllabus

Examines advanced algorithmic topics and methods for MSc students, including matrix decomposition techniques and applications, fundamental discrete and continuous optimization methods, approximation and randomized algorithms, NP-completeness. A detailed syllabus is available here. Advanced BA students are also welcome. This class is designed in particular for MSc students (see also CS530).

Textbooks

We will be following closely the following textbooks as our guide:

  1. Algorithm Design by Kleinberg and Tardos (KT book)
  2. Introduction to Algorithms, fourth edition (CLRS)

We’ll also be using these other textbooks and notes:

Programming

The class assumes familiarity with programming. Recommended language for this class is Python3. Other languages are also welcome (C, C++, Java, Julia etc).

Lectures

We will be using several slides from the official lecture slides that accompany the Kleinberg-Tardos from here.

1st week: Lectures 1 and 2 (9/5, 7) The Stable matching problem and the Gale-Shapley algorithm
Slides and Jupyter notebook (python) code
Readings

2nd week: Lectures 3 and 4 (9/12, 14) Priority Queues and Entropic Lower Bound
Slides and some Jupyter notebooks here and here
Readings

3rd Week: Lectures 5 and 6 (9/19, 21): Review loop invariants, bucket sort average case analysis, randomized quicksort
Slides and Jupyter notebook (python) here and here

Readings

  • CLRS book, 5.3 Randomized algorithms, Chapter 7 Quicksort, 8.4 Bucket sort

4th Week: Lectures 7 and 8 (9/26, 28): randomized QS analysis via the recursion, median and order statistics
Slides

Readings


Slides

Readings

6th and 7th Week: Lectures 11, 12, 13, 14 (10/10, 12, 17, 19): online hiring, introduction to probabilistic method, content resolution, Karger’s minimum cut algorithm
Annotated slides (slides by Kevin Wayne)

Readings

  • Chapter “Probabilistic Analysis and Randomized Algorithms” from CLRS
  • Chapters 13.1, 13.2, 13.3 from KT

 8th Week: Lectures 15 and 16 (10/24, 26): Chernoff bounds, Load Balancing, hashing, Bloom filters
– Chernoff bound slides
Annotated slides (cont.)
Nuts and Bolts of a Spell Checker

Readings

 10/31 Midterm

9th Week: Lectures 17 (11/2), 18 (7/11) and 19 (9/11): Greedy algorithms, loop invariant of narrowing the search space, job scheduling, minimum spanning tree
Slides available here and here
MST and Dijkstra here

Readings

  • KT: 4.1, 4.2 (Lab), 4.4, 4.5, 4.6
  • CLRS: Chapter 16.1, 16.2, 23

10th week: Lecture 20 (11/14): BFS and Dijkstra’s algorithm for single source shortest paths
Lecture 21 (11/16): Dynamic programming ( job scheduling, rod cutting)

Handwritten notes here (11/14)
Slides available here (11/16)

Readings

  • CLRS 15.1, 16.1, 24.3 (Dijkstra’s algorithm)

11th week (Thanksgiving week): Lecture 22 (11/21): Dynamic programming cont.
Handwritten notes
Readings

  • CLRS Chapter 15 (Dynamic programming)

12th week: Lecture 23 and 24 (11/28, 11/30): Dynamic programming practicing, Integer Programming, Linear Programming, Approximation algorithms, Knapsack problem (IP formulation, pseudopolynomial algorithm)
Handwritten notes

13th week: Lecture 25 and 26 (12/5, 12/7): Approximation algorithms (cont.)

Jupyter notebooks Max Cut, Vertex cover, Set Cover
Kevin Wayne’s Slides

Readings

  • CLRS Chapter 35 (Approximation algorithms)
  • KT Chapter 11

14th week: Lecture 12/12 Densest subgraph problem, max flow-min cut, approximation algorithm, LP relaxation.
Slides available here

Assignments

All the assignments and their solutions are available on Piazza.