# Syllabus

## Course Meeting Times

Lectures: 2 sessions / week, 1.5 hours / session

## Description

This is a graduate course on the design and analysis of algorithms, covering several advanced topics not studied in typical introductory courses on algorithms.

## Prerequisites

Prerequisites include "Introduction to algorithms" (at the level of 18.410J / 6.046J), linear algebra (at the level of 18.06 or 18.700), and mathematical maturity (since we'll be doing a lot of correctness proofs). The course is especially designed for doctoral students interested in theoretical computer science.

## Requirements

There will be biweekly problem sets and students will also be expected to take turns to scribe lecture notes. It is thanks to the scribes that we can have a good set of lecture notes with many details.

## Textbook

There is no textbook required for the course. Lecture notes are available for the current term as well as selected lecture notes from a previous term. Reference textbooks for each topic are listed in the readings section.

## Course Outline

Topics we will be covering this year include:

- Network flows (max flow and min-cost flow/circulation)
- Data structures (fibonacci heaps, splay trees, dynamic trees)
- Linear programming (structural results, algorithms)
- Dealing with intractability: approximation algorithms (techniques for design and analysis)
- Dealing with large data sets (compression, streaming algorithms, compressed sensing)
- Computational geometry