# Course information

- Description: Introduction to the design and analysis of efficient algorithms. Topics include models of computation, efficient sorting and searching, algorithms for algebraic problems, graph algorithms, dynamic programming, probabilistic methods, approximation algorithms, and NP-completeness.
- Credits: 3.0
- Prerequisites: COMS W3139 and W3203.
- For: Undergraduate, Masters, Professional, PhD
- Instructor:

- Name: Prof. Cliff Stein
- Office: 326 Mudd
- Phone: 212-854-5238
- Email: cliff@ieor.columbia.edu
- Office hours: Th 4:00-5:30, and by appointment.

- Teaching Assistants:
- Name: Ian Erb

- Office: 122A Mudd
- Phone:
- Email: ire2102@columbia.edu

- Office hours: T 1-2, Th 1-2, Th 6-7
- Name: Aaron Bernstein
- Office: 122A Mudd

- Email: ab3417@columbia.edu
- Office hours: M 12-1, W 12-1
- Name: Moses Nakamura

- Office: 122A Mudd

- Phone:
- Email: mnn2104@columbia.edu
- Office hours: W 2:30-3:30, F 12-1

- Name: Yundi Zhang

- Office: 122A Mudd

- Phone:
- Email: yz2351@columbia.edu

- Office hours: M 1-2, W 3:30-4:30

- Time: T Th 2:40-3:55
- Location: 501 Northwest Corner Building
- Textbook: Introduction to Algorithms (Third Edition), by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliff Stein.
- Exams: There will
be one take-home midterm, and an in-class final exam. The exams must be
done entirely by yourselves. The midterm may be followed up by an oral
defense of the work.

- Grading:
- Getting help: You can get help in the course by:
- Visiting the instructor or TAs in their office hours
- Emailing the instructor or TAs
- Students with Disabilites:

We encourage students with disabilities, including invisible disabilities such as chronic diseases and learning disabilities, to discuss with the instructor any appropriate accommodations that we might make on their behalf.

# Announcements

# Materials

- Notes on Strassen's algorithm
- Basic Math Background
- Running time of functions
- HeapSort
- Linear Time Sorting
- Picture of a Card Sorter
- Deterministic Selection
- Random Permutation Loop Invariant
- Randomized Selection
- Quicksort
- Dynamic Programming
- Program to make change
- Matrix Chain
- Fibonacci numbers program
- Longest Common Subsequence
- List of some algorithms that use dynamic programming
- Greedy Algorithms
- Huffman Coding
- Amortized Analysis
- Graph Algorithms
- Strongly Connected Components
- Minimum Spanning Trees
- Disjoint Sets
- Shortest Paths
- All Pairs Shortest Paths
- Maximum Flows
- Ford-Fulkerson example part 1 part 2
- paper on soviet rail system
- Garey and Johnson Cartoon
- NP-completeness
- (Partial) List of NP-complete problems
- Cartoon about NP. Cartoon
- A TSP site from GA Tech
- On-line algorithms