Syllabus

Course Meeting Times

Lectures: 2 sessions / week, 1.5 hours / session

Prerequisite

18.06 Linear Algebra or 18.700 Linear Algebra.

Description

The course will present a thorough introduction to the fundamental algorithmic techniques of Discrete Mathematics - Linear and Convex Programming, Flow & Matching Theory, Randomization, and Approximation. We will tackle a variety of optimization problems by applying these techniques to find efficient algorithms.

Topics include

  • How fast can a maximum matching be found in a graph?
  • Why is the maximum flow equal to the minimum cut?
  • What is duality and how to make use of it?
  • Is optimization reducible to random sampling?
  • Is there a strongly polynomial-time algorithm for linear programming?
  • How to find a short traveling salesman tour?
  • How to find disjoint flow paths?

Format

In addition to 3 hours of lectures each week, students will have regular assignments, and two in-class exams. There will also be a course project which can be either theoretical (e.g. write a report, solve an open problem) or practical (e.g. evaluate an algorithm).

Project

For the course project you will:

  1. Work on a problem and/or experimentally evaluate an algorithm;
  2. Write a short report and present your findings to class.

Students can work individually or in pairs.
Projects should be set up by the day after session #5.

Grading

ACTIVITY PERCENTAGE
Exam I 25%
Exam II 25%
Project (20% for Research + 6% for Presentation) 26%
Assignments 24%