MPCS 55001: Algorithms (Spring 2021)

General information

Instructor
Timothy Ng (timng@uchicago.edu)
Office hours: Tuesdays 6:30–7:30 pm Central
Teaching assistants
Francesca Falzon
Office hours: Fridays 10:15–11:15 am Central
Chris Jones
Office hours: Thursdays 9:00–10:00 pm Central
Links

Overview

This course is about the design and analysis of algorithms. Students will be introduced to the basics of algorithms analysis, several algorithm design paradigms, and problems for which there are no known efficient algorithms. Each of these topics will be illustrated by studying problems and the best known algorithms for solving these problems.

Communication

This class is being offered remotely and largely asynchronously. There are a number of different ways we'll be communicating about the class.

Course materials
Lecture notes and links to lecture videos will be made available via this course webpage. The course website also contains basic information about the course (i.e. you can treat this like a syllabus).
Discussion and announcements
We will use Campuswire for course discussion and announcements. Restricted course materials and Zoom meeting information for synchronous sessions will also be posted here.
Problem sets and grades
We will use Gradescope for distributing and receiving coursework, such as problem sets and exams. Your grades will also be available here.

Class meetings

Lectures will be asynchronous and provided weekly as a set of videos on Fridays. There will be a synchronous tutorial session on Tuesdays at 5:30 pm Central. These sessions supplement the lecture videos and students are responsible for the material covered in these sessions. The synchronous sessions will be recorded.

Topics

The following is a selection of topics and possible problems that we may cover.

Analyzing algorithms
Stable matching, sorting, models of computation, asymptotics
Greedy algorithms
Coin changing, interval scheduling, minimizing lateness, shortest paths, minimum spanning trees
Divide and conquer
Mergesort, counting inversions, quicksort, selection, recurrences, integer multiplication, matrix multiplication
Dynamic programming
Weighted interval scheduling, knapsack, RNA secondary structure, sequence alignment, shortest paths
Network flow
Max-flow min-cut, Ford-Fulkerson, bipartite matching, edge-disjoint paths
Intractability
NP-completeness, NP-complete problems, reductions, dealing with intractability

Text

There is no required textbook and lecture notes will be provided. However, there are a number of useful resources. When in doubt, your primary source should be the lecture notes.

Evaluation

Your computed grade in this course will be determined by the following coursework components.

There is no midterm exam. Let $S = (60\% \times P) + (1\% \times R) + (5\% \times Q)$. Then your computed grade will be obtained via the following formula: \[S + (F \times (100\% - S)).\]

Problem sets

Quizzes

The weekly quizzes will be made available with each set of lecture videos. These are open-book short answer quizzes that will be completed online and will be graded automatically. These are meant for you to gauge your understanding of the lecture material.

Lectures

Lectures will be made available on Canvas. Lecture notes for each lecture can be found below.

Week 0 (March 24)
Introduction and course Information
Week 1 (March 29)
Lecture 1: Stable Matchings (KT 1.1)
  1. Stable Matching
  2. Algorithm Analysis
Lecture 2: Basics of Algorithm Analysis
  1. Running Time (CLRS 2.2/KT 2.1)
  2. Efficient Algorithms (CLRS 3.1/KT 2.2)
  3. Analyzing Gale–Shapley (KT 2.3)
Week 2 (April 5)
Lecture 3: Greedy Algorithms
  1. Greedy algorithms and interval scheduling (KT 4.1/CLRS 16.1)
  2. Scheduling to minimize lateness (KT 4.2)
Lecture 4: Shortest Paths (KT 4.4/CLRS 24)
  1. Dijkstra's algorithm
  2. Implementation and efficiency
Week 3 (April 12)
Lecture 5: Minimum Spanning Trees
  1. Prim's algorithm (KT 4.5/CLRS 23)
  2. Kruskal's algorithm (KT 4.6/CLRS 21.1–2, 23)
Lecture 6: Divide and conquer
  1. Mergesort (KT 2.1/CLRS 2.3)
  2. Recurrences and the Master Theorem (KT 2.2/CLRS 4.3–5)
Week 4 (April 19)
Lecture 7: More divide and conquer
  1. Closest pair of points (KT 5.4/CLRS 33.4)
  2. Integer and Matrix Multiplication (KT 5.5/CLRS 4.2)
Lecture 8: Quicksort (KT 13.5/CLRS 7)
  1. Deterministic Quicksort
  2. Randomized Quicksort
Week 5 (April 26)
Lecture 9: Dynamic Programming
  1. Weighted Interval Scheduling (KT 6.1)
  2. Dynamic Programming (KT 6.2)
Lecture 10: More Dynamic Programming
  1. Knapsack (KT 6.4)
  2. Edit Distance (KT 6.6)
Week 6 (May 3)
Lecture 11: RNA Secondary Structure (KT 6.5)
  1. Setup
  2. Solution
Lecture 12: Shortest Paths, revisited
  1. Single-destination shortest paths (KT 6.8)
  2. Bellman–Ford (KT 6.8)
  3. Negative-weight cycles (KT 6.10)
Week 7 (May 10)
Lecture 13: Network Flow
  1. Maximum Flow (KT 7.1/CLRS 26.1)
  2. Ford–Fulkerson
Lecture 14: Applications of Flow
  1. Minimum Cuts (KT 7.2/CLRS 26.2)
  2. Bipartite Matching (KT 7.5/CLRS 26.3)
Week 8 (May 17)
Lecture 15: Reduction
  1. Polynomial-Time Reductions (KT 8.1/CLRS 34)
  2. Packings and Coverings (KT 8.1)
Lecture 16: More reduction
  1. Satisfiability (KT 8.2)
  2. Hamiltonian Cycle (KT 8.5/CLRS 34.5.3)
Week 9 (May 24)
Lecture 17: Classification of Problems
  1. P and NP (KT 8.3)
  2. NP-completeness (KT 8.4)
Lecture 18
  1. Getting over it
  2. Beyond NP-completeness

Academic integrity

It is your responsibility to be familiar with the University’s policy on academic honesty. Instances of academic dishonesty will be referred to the Office of the Provost for adjudication. Following the guidelines above on collaboration and citation should be sufficient, but if you have any questions, please ask me.

Accessibility

Students with disabilities who have been approved for the use of academic accommodations by Student Disability Services (SDS) and need reasonable accommodation to participate fully in this course should follow the procedures established by SDS for using accommodations. Timely notifications are required in order to ensure that your accommodations can be implemented. Please meet with me to discuss your access needs in this class after you have completed the SDS procedures for requesting accommodations.