# 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 11-12, and by appointment.

- Teaching Assistants:
- Name: Sharath Gururaj

- Office: 122A Mudd
- Phone:
- Email: sa2617 'at' columbia.edu

- Office hours: Tue 10am-12pm & Thu 6-8pm
- Name: Xiangrong Kong
- Office: 122A Mudd

- Email: xk2107 'at' columbia.edu
- Office hours: Wed 4-6pm
- Name: Chase Hensel

- Office: 122A Mudd

- Phone:
- Email: cmh2135 'at' columbia.edu
- Office hours: Thu 12-2pm

- Name: Karthik Ramasamy

- Office: 122A Mudd

- Phone:
- Email: km2580 'at' columbia.edu

- Office hours: Mon 1-3pm & Fri 11am-1pm

- Time: T Th 4:10-5:25
- Location: 535 Mudd
- 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 instructors or TAs in their office hours
- Emailing the instructors or TAs
- Students with Disabilites:

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

# Announcements

- Textbook has been updated to 3rd edition.
- HW 7 is due on Monday, December 14 at 5PM.
- Review session, Wednesday, December 16, 10AM, 303 Mudd
- Office hours: Tuesday, December 15, 2:15-3:15PM; Friday, December 18, 11-12AM

# Materials

- Notes on Strassen's algorithm
- Lecture 1 Notes
- Basic Math Background
- Running time of functions
- Lecture 2 Notes
- Lecture 3 Notes
- HeapSort
- Lecture 4 Notes
- Linear Time Sorting
- Picture of a Card Sorter
- Lecture 5 Notes
- Deterministic Selection
- Lecture 6 Notes
- Random Permutation Loop Invariant
- Lecture 7
- Randomized Selection
- Quicksort
- Lecture 8
- Dynamic Programming
- Program to make change
- Lecture 9
- Matrix Chain
- Fibonacci numbers program
- Lecture 10
- Longest Common Subsequence
- List of some algorithms that use dynamic programming
- Lecture 11
- Greedy Algorithms
- Lecture 12
- Huffman Coding
- Lecture 13
- Amortized Analysis
- Lecture 14
- Graph Algorithms
- Lecture 15
- Strongly Connected Components
- Minimum Spanning Trees
- Lecture 16
- Disjoint Sets
- Lecture 17
- Shortest Paths
- Lecture 18
- All Pairs Shortest Paths
- Lecture 19
- Maximum Flows
- Ford-Fulkerson example part 1 part 2
- paper on soviet rail system
- Lecture 20
- LP Definitions
- LP Examples
- A simple LP
- Lecture 21
- Garey and Johnson Cartoon
- NP-completeness
- (Partial) List of NP-complete problems
- Lecture 22
- Cartoons about NP. Cartoon 1 Cartoon 2 Cartoon 3
- Lecture 23
- A TSP site from GA Tech
- Lecture 24
- Lecture 25
- On-line algorithms
- Lecture 26