CS 231: Topics in Combinatorial Algorithms

Subhash Suri
MW 09:00-10:50
Room: Phelps 1401


Administrative Stuff

Course Description

Algorithmic thinking is at the heart of computer science. Whether we are concerned with sending messages in the Internet, understanding the structure of a social network, designing autonomous robots, measuring reliability of complex systems, or auctioning the wireless spectrum, the underlying core problem is often an algorithmic one. The problems, however, rarely come as cleanly packaged, mathematically precise questions, and so the algorithmic enterprise necessarily consists of first getting to the mathematical core of a problem, and then identifying the appropriate algorithm design technique.

The goal of this course is to expose students to this process using a variety of topics and techniques. The general theme of the course is combinatorial algorithms, which can be described loosely as those dealing with discrete structures such as graphs and networks. The course is structured around a loosely related set of techniques and topics that I consider both fundamental and great examples of theoretical elegance. You can get a high-level outline of the course content and philosophy in this (Handout) .


1. Network Flows (Lecture Notes)
2. Shortest Paths and Spanning Trees
3. Matching in Graphs (Lecture Notes)
4. Structure of Social Networks (Lecture Notes)
5. Decentralized Network Monitoring (Lecture Notes)
6. Learning from Data (Lecture Notes)
7. Optimizing with Linear Constraints (Lecture Notes)


Homework Assignments

1. Homework #1. DUE Oct 16.
2. Homework #2. DUE Nov 13.
3. Homework #3. DUE Nov 25.