Course Syllabus

Course Description

This course includes: Analysis of algorithms, Graph algorithms, Greedy algorithms, Divide-and-conquer, Dynamic programming, Network flow, NP-completeness, Undecidability, Approximation algorithms, Randomized algorithms.


See the schedule for a more detailed lecture plan.

Prerequisites The following coursework with a grade of at least C- in each course: CS 311 or 311H, CS 314 or 314H, CS 429 or 429H; M 408C or 408N; SSC 321 or M 362K; and a pre-req or co-req of M 340L or SSC 329C.
Lecture Times and Locations

MW 12:30 p.m.- 02:00 p.m. in GDC 1.304 (51570/51575)
MW 03:30 p.m.- 05:00 p.m. in GDC 1.304 (51580/51585)

Textbook Algorithm Design by Kleinberg and Tardos (Addison-Wesley, 2006).
Instructor Fares Fraij
  • Office hours: MW 2:00 p.m.- 03:20 p.m. (at GDC 4.310)
  • Contact:
  • Note: Most questions should be submitted to Piazza rather than by sending an email to the instructor.
Teaching Assistants

The TAs/Proctors office hours will be held in the TA alcove, in the north basement of the CS building, room GDC 1.302.

  • Akshay Devdas Kamath
    • Office hours: F 11:30 a.m. - 12:30 p.m.
    • Contact:
  • Hsin-Ping Huang
    • Office hours: M 11:00 a.m. - 12:00 p.m.
    • Contact:
  • Note: Most questions should be submitted to Piazza rather than by sending an email to a member of the instructional staff.
  • Apurva Gorti
    • Office hours: M 2:00 p.m. - 3:00 p.m.
    • Contact:
  • Sarah Gorring
    • Office hours: W 2:00 p.m. - 3:00 p.m.
    • Contact:
  • Yajie Niu
    • Office hours: Tue 2:30 p.m. to 3:30 p.m.
    • Contact:
  • Note: Most questions should be submitted to Piazza rather than by sending an email to a member of the instructional staff.
Discussion Section Times and Locations

F   01:00 p.m. - 02:00 p.m. in SAC 5.102 (51570) - lead by Yajie
F   02:00 p.m. - 03:00 p.m. in UTC 1.146 (51575) - lead by Sarah
W 10:00 a.m. - 11:00 a.m. in SAC 5.102  (51580) - lead by Akshay
W 11:00 a.m. - 12:00 p.m. in GEA 114     (51585) - lead by Akshay

Quantitative Reasoning (QR) flag This course carries the Quantitative Reasoning flag. Quantitative Reasoning courses are designed to equip you with skills that are necessary for understanding the types of quantitative arguments you will regularly encounter in your adult and professional life. You should therefore expect a substantial portion of your grade to come from your use of quantitative skills to analyze real-world problems.
Grade Basis Each student's overall raw score, out of 100 points, is distributed as follows.
  • Tests: 60 points (Three in-class tests: 20 points for each test).
  • Quizzes: 15 points.
  • Assignments: 25 points.
Note: See the Knowledge Assessment for details about tests, quizzes, and assignments.
Letter Grade The mapping from overall raw scores to letter grades will depend somewhat on the overall performance of the class. The nominal cutoffs are as follows.
A/A-   :  90
A-/B+ :  85
B+/B  :  80
B/B-   :  75
B-/C+ :  70
C+/C  :  65
C/C-   :  60
C-/D   :  55

These nominal cutoffs will not be increased; for example, a student achieving a raw score of 90 is guaranteed to receive an A in the course. However, these cutoffs might be lowered if necessary in order to improve the grade distribution.
Make-Up Tests
  • Please note that no make-up tests will be given in this course.
  • An unexcused absence from a test recorded as a score of zero (0).
  • If a student has a legitimate and properly documented excuse for missing one of the tests, the missing test score will be estimated as the average of the other two test scores.
  • More complicated scenarios, e.g., where a student misses two tests for legitimate reasons, will be treated on a case-by-case basis. In the event of a non-excused absence, a score of zero will be assigned.
  • Examples of a properly documented excuse are a note from a physician or university dean indicating an illness or other extraordinary circumstance that prevented you from taking the test.
Feedback Throughout the semester, please feel free to provide feedback to the instructor regarding any aspect of the course.