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


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., 304 Burnham Hall (BH) 180F Thomas Beckham Hall (TBH)
Instructor Contact Information: Lev Reyzin, SEO 418, (312)-413-3745
TA/Grader Contact Information: Mano Vikash Janardhanan and Kaushik Kompella
Textbook: J. Kleinberg and É. Tardos, Algorithm Design, 1st edition
Instructor's Office Hours: T 2:30-3:20pm, F 1:00-1:50pm
TA's Office Hours: T 8:00-11am (Mano) in SEO 430

Exam Dates

Midterm Exam 1: TBD
Midterm Exam 2: TBD
Final Exam: Wednesday, December 13, 1:00-3:00 p.m.

Problem Sets

problem set 1, due 9/18/17
problem set 2, due 10/2/17

Lectures and Readings

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

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

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

Lecture 3 (9/1/17)
covered material: measuring algorithm complexity, asymptotic notation
reading: chapter 2.1 and 2.2

Lecture 4 (9/6/17)
covered material: implementing and analyzing the Gale-Shapley algorithm, common running times of algorithms
reading: chapters 2.3 and 2.4
other: problem set 1 assigned

Lecture 5 (9/8/17)
covered material: intro to graphs and graph algorithms, graph representations, graph connectivity and trees
reading: chapter 3.1, begin chapter 3.2

Lecture 6 (9/11/17)
covered material: implementing BFS and DFS with queues and stacks, priority gueues and heaps
reading: finish chapter 3.2 and 3.3, chapter 2.5

Lecture 7 (9/13/17)
covered material: connectivity and bipartiteness testing, digraphs, DAGs
reading: chapters 3.4 - 3.6

Lecture 8 (9/15/17)
covered material: introduction to greedy algorithms, interval scheduling
reading: chapter 4.1

Lecture 9 (9/18/17)
covered material: scheduling to minimize lateness, exchange arguments
reading: chapter 4.2

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

Lecture 11 (9/23/17)
covered material: the minimum spanning tree problem, Prim's and Kruskal's algorithms
reading: begin chapter 4.5
other: problem set 2 assigned