MCS 401 - Computer Algorithms I
University of Illinois - Chicago
Fall 2019

This course will cover the important principles behind the design and analysis of computer algorithms. We will study techniques such as divide-and-conquer, dynamic programming, and greedy methods, as well as algorithms for sorting, searching, graph computations, and pattern matching. We will also discuss the theory of NP-completeness.

Basic Information

Syllabus: pdf
Time and Location: M-W-F 2:00–2:50 p.m., 180F Thomas Beckham Hall (TBH)
Instructor Contact Information: Lev Reyzin, SEO 418, (312)-413-3745
TA/Grader Contact Information: Stoyan Dimitrov
Textbook: J. Kleinberg and É. Tardos, Algorithm Design, 1st edition
Instructor's Office Hours: W 10:00-10:50 AM, F 11:00-11:50 AM
TA Office Hours: W 3:00-5:00 PM (in MSLC)

Exam Dates

Midterm Exam 1: Friday, October 11th, 2:00-2:50 PM in TBH 180F
Midterm Exam 2: TBD
Final Exam: Wednesday December 11th, 1:00-3:00 PM

Problem Sets

problem set 1 due 9/13/19
problem set 2 due 9/30/19

Lectures and Readings

Note: lectures will have material not covered in the readings.

Lecture 1 (8/26/19)
covered material: intro to the course, overview of covered material, introduction to stable marriage problem
reading: begin chapter 1

Lecture 2 (8/28/19)
covered material: the Gale-Shapley stable marriage algorithm
reading: finish chapter 1.1
optional reading: chapter 1.2

Lecture 3 (8/30/19)
covered material: measuring algorithm complexity, asymptotic notation
reading: chapters 2.1 and 2.2
other: problem set 1 assigned

Lecture 4 (9/4/19)
covered material: implementing and analyzing the Gale-Shapley algorithm, common running times of algorithms
reading: chapters 2.3, 2.4

Lecture 5 (9/6/19)
covered material: graph algorithms, graph connectivity, bredth-first search (BFS), depth-frst search (DFS)
reading: chapters 3.1 - 3.3

Lecture 6 (9/10/19)
covered material: priority queues, assigned reading on graphs
reading: chapters 2.5, 3.4 - 3.6

Lecture 7 (9/11/19)
covered material: introduction to greedy algorithms, interval scheduling
reading: chapter 4.1

Lecture 8 (9/13/19)
covered material: intro to scheduling to minimize lateness
reading: begin chapter 4.2

Lecture 9 (9/16/19)
covered material: an exchange argument
reading: finish chapter 4.2

Lecture 10 (9/18/19)
covered material: shortest path trees and Dijkstra's algorithm, implementing with priority queues
reading: chapter 4.4

Lecture 11 (9/20/19)
covered material: the MST problem, Prim's and Kruskal's algorithms, cut and cycle properties, Union-Find
reading: chapters 4.5 and 4.6
other: problem set 2 assigned