Section Lectures Tutorial Instructor Email
Office Hours
SEC 5101 Tue 1–3 in BA1170, Thu 2–3 in BA1170 Mon 5–6
Jan-Jun: SS 1070, Jul-Dec: SS 1073
Karan Singh BA 5258 Tue noon-1
Thu 1-2
SEC 5201 Tue 3–4 in BA1130, Thu 3–5 in SS 2117 Mon 5–6
Jan-Jun: SS 1074, Jul-Dec: UC 244
SEC 5301 Wed 6–9 in BA1190 Mon 6–7
Jan-Jun: UC 244, Jul-Dec: UC 261
Nisarg Shah SF 2301C Wed 2-3


Course Page: This page!

Discussion Board: Piazza

Online Homework Submission: MarkUs

Approximate Due Dates

Assignment 1: Oct 14
Assignment 2: Apx. Oct 31
Assignment 3: Apx. Nov 11
Assignment 4: Apx. Nov 25
Midterm 1: Oct 28
Midterm 2: Apx Nov 18

Course Learning Goals

By the end of this course, you will be familiar with standard algorithm design techniques (divide and conquer, greedy algorithms, dynamic programming, network flow, linear programming, approximation, randomization), and understand the importance of computational complexity. More specifically, you will be able to:
  • recognize algorithms and write new ones that employ each technique,
  • prove correctness of such algorithms and analyze their efficiency,
  • demonstrate membership in P and NP,
  • show NP-completeness.


The primary reference for this course will be the slides uploaded by the instructors. In addition, you should refer to the following textbooks. Readings from these books will be posted along with each lecture.

  • Required: [CLRS] Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms.
  • Supplementary: [DPV] Dasgupta, Papadimitriou, Vazirani: Algorithms.
  • Supplementary: [KT] Kleinberg; Tardos: Algorithm Design.

For information about assignments, exams, grading, and policies, refer to the course information sheet.