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

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 and Mano Vikash Janardhanan
Textbook: J. Kleinberg and É. Tardos, Algorithm Design, 1st edition
Instructor's Office Hours: M 10:00-10:50am, W 11:00-11:50am
TA Office Hours: Stoyan: T 9:00am-11:00am (MSLC in SES); Mano: T 11:00am-1:00pm (MSLC in SES), T 1:00pm-2:00pm (SEO 518)

Exam Dates

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

Problem Sets

problem set 1 due 9/17/18
problem set 2 due 9/28/18

Lectures and Readings

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

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

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

Lecture 3 (8/31/18)
covered material: measuring algorithm complexity, asymptotic notation
reading: chapter 2.1 and 2.2

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

Lecture 5 (9/7/18)
covered material: graph algorithms, graph connectivity and trees, BFS, DFS, priority queues and heaps
reading: chapter 3.2, 3.3, and 2.5

Lecture 6 (9/10/18)
covered material: introduction to greedy algorithms, interval scheduling (guest lecture by Anastasios Sidiropoulos)
reading: chapter 4.1

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

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

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

Lecture 10 (9/19/18)
covered material: Huffman codes (guest lecture by Brian Ziebart)
reading: chapt 4.8