### 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:

- Work on a problem and/or experimentally evaluate an algorithm;
- 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% |