MPCS 55001: Algorithms (Spring 2023)

General information

Instructor
Timothy Ng (timng@uchicago.edu)
Class meetings
Tuesdays 5:30–8:30 pm, RY 251
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

There are a number of different ways we'll be communicating about the class.

Course materials
Lecture notes 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 Ed Discussion for course discussion and announcements. Restricted course materials and Zoom meeting information (if any) will also be posted here.
Coursework and grades
We will use Gradescope for distributing and receiving coursework. Your grades will also be available here.

Lectures

Lectures are often the first point at which students will be exposed to new ideas and material. Lectures comprise a significant part of the learning students will do in the course and will cover material that is necessary for success in the course. However, lectures alone may not be sufficient for all students. It is not expected that students will master the material learned in lecture without significant review, inquiry, and practice outside of lecture.

Office hours

Office hours are times when the course staff are available for you. The instructor and teaching assistants will have scheduled office hours in-person and/or online. While most students use this as an opportunity to ask about coursework, you're free to ask about or discuss things that are related directly or indirectly with the course.

Course materials and objectives

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

Analyzing algorithms
Models of computation, asymptotics, data structures, data representation
Greedy algorithms
Interval scheduling, minimizing lateness, shortest paths, minimum spanning trees
Divide and conquer
Mergesort, recurrences, integer and matrix multiplication, closest pair of points
Dynamic programming
Weighted interval scheduling, knapsack, RNA secondary structure, sequence alignment, shortest paths
Network flow
Max-flow min-cut, Ford-Fulkerson, bipartite matching
Intractability
Hardness, NP-completeness, NP-complete problems, reductions, dealing with intractability

Upon completion of this course, students should be able to:

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.

Problem sets

Problem sets will be posted on Tuesdays and will be due on the following Thursday at 8:00 pm (20:00). Problem sets will be distributed and submitted via Gradescope.

Please ensure that submissions are legible if handwritten! This includes making sure that your writing is neat as well as ensuring that your photos or scans are of reasonable quality.

Collaboration and citation

The purpose of problem sets is to give you the opportunity to practice working through the process of solving problems and to receive feedback on that process. The work that you hand in to be graded is expected to be your own so that the feedback you receive will be the most useful. Be sure to acknowledge your collaborators and any sources beyond course materials that you may have used.

How solutions are graded

Your solutions on problem sets and exams are judged on the following basis:

Grading of problems is based on the overall quality of the solution. Clearly, solutions need to be valid in order to be evaluated highly, but a completely valid solution that is not readable will still be evaluated poorly. Furthermore, grades are assigned as a qualitative evaluation of the work and not a quantitative accounting of the work. This appears as a 4-point scale on Gradescope.

Generally, the overarching principle that guides the grading is: How much work and guidance is needed for you to revise your submission into something that is Excellent?

The assigned grade is the grader’s judgement of whether the solution meets the standards of the class. In addition to the assigned grade, the grader is expected to provide detailed feedback, addressing specific flaws in the submitted work that can and should be improved in future work.

Resubmission

Part of the learning process is identifying and correcting mistakes. After your submissions have been graded and returned to you, you will have the opportunity to use the feedback you receive to revise and resubmit your work.

Regrade requests

You may submit a regrade request in the event of an error by the grader. That is, if the feedback provided by the grader is a factual error, you may request a review of the grading. Please indicate the source of the error in this case.

We will not consider regrade requests concerning disagreement with a grader’s evaluation of your work. In such cases, you should consider the feedback that was given and apply it towards revision and resubmission of your work.

Lectures

Lecture notes for each lecture can be found below.

March 21
Lecture 1: Introduction to algorithms (KT 2.1–2.2, 2.4, 3.1–3.3)
  1. Introduction and our first problem
  2. Analyzing algorithms
  3. Representation and implementation
March 28
Lecture 2: Greedy Algorithms I (KT 4.1–4.2, 4.4)
  1. Interval scheduling
  2. Minimizing lateness
  3. Shortest paths and Dijkstra's algorithm
  4. Implementing Dijkstra's algorithm
April 4
Lecture 3: Greedy Algorithms II (KT 4.5–4.6), Divide and Conquer I (KT 5.1–5.2)
  1. Minimum spanning trees and Prim's algorithm
  2. Kruskal's algorithm for MSTs
  3. Divide and conquer and sorting
  4. Recurrences and the Master Theorem
April 11
Lecture 4: Divide and Conquer II (KT 5.4–5.5, 13.5)
  1. Closest pair of points
  2. Integer multiplication
  3. Quicksort
April 18
Midterm Exam
Lecture 5: Dynamic Programming I (KT 6.1–6.2, 6.4)
  1. Weighted interval scheduling
  2. 0-1 Knapsack
April 25
Lecture 6: Dynamic Programming II (KT 6.5, 6.8)
  1. RNA secondary structure prediction
  2. Shortest paths revisited
  3. Bellman–Ford
May 2
Lecture 7: Network Flow (KT 7.1–7.2, 7.5)
  1. Maximum flow
  2. Minimum cut
  3. Bipartite matching
May 9
Lecture 8: Computational Intractability I (KT 8.1–8.2, 8.8)
  1. Reduction
  2. Independent Set and Vertex Cover
  3. Satisfiability
  4. Subset Sum
May 16
Lecture 9: Computational Intractability II (KT 8.3–8.5)
  1. Hamiltonian Cycle
  2. Classification of problems
  3. NP-completeness
  4. Dealing with hardness

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 the instructor.

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.