Math 182: Algorithms

Spring 2011

Course Description

Math 182 is an introduction to the theory of algorithms. There is no programming pre-requisite. The goal of the course is to develop the basic design principles behind most modern efficient algorithms: greedy algorithms, divide-and-conquer, dynamic programming, and network flows. These powerful techniques will be illustrated on a variety of applications, from networking to computational biology.

Prerequisites: Some familiarity with calculus will be assumed (at the level of 3C or 32A). Math 182 is NOT a programming course. It is a discrete mathematics course with an emphasis on the mathematical analysis of efficient algorithms. (The Program in Computing (PIC) offers a series of programming courses in C++ and Java which are NOT required for Math 182, but that you may want to take separately or concurrently.)

General Information



The lectures will be partly based on slides available here.


Unless stated otherwise, the homework problems are taken from [KT]. The Python questions are entirely optional. If you wish to attempt them, you are expected to learn Python on your own. We will not discuss Python in class. The official Python tutorial should suffice.

Last updated: June 5, 2011.