Instructor Information
Name: Nisarg Shah (Webpage)
Course Email: csc373-2023-09@cs.toronto.edu (Do NOT send course related emails to my personal email address, otherwise you may not get a response.)
Office: SF 3312 (do not drop by unless you have scheduled a meeting with me)
Important Links
Course Page: This page!
Discussion Board: Piazza
Online Homework Submission: MarkUs
Course Syllabus: Information Sheet
Course Delivery
All times are in Eastern time zone.
Tutorial divisions are by birth month: A = Jan-Jun, B = Jul-Dec (Only a single tutorial per section starting Oct 27)
Section | Meeting | Time | Room |
---|---|---|---|
LEC 0101 | Lectures | Mon 11-12 Wed 11-13 |
MP 202 SS 2102 |
Tutorials | Fri 11-12 | A: BA 1190 |
|
LEC 0201 | Lectures | Mon 15-16 Wed 15-17 |
AH 400 AH 400 |
Tutorials | Fri 15-16 | A: BA 1210 |
|
Both Sections | Office Hours | Mon 13:30-14:30 Fri 13-14 |
SF 3312 (unless an announcement says differently) |
Tutorial Format
A problem set will be released on the course web page prior to each tutorial. Students are encouraged to attempt the problems before coming to the tutorials. During the tutorials, the TAs will explain the problems and then go over key steps of the solutions.
Midterm Time & Format
Midterms will be conducted in person on Fridays during two slots: 11-13 and 14-16. Each student, by default, must attend the slot that overlaps with their assigned tutorial. If you have a conflict and need to write in the other slot (or request an alternate slot), you must reach out to the instructor at least one week prior to the midterm. Check the midterm dates below.
Grading Scheme
Best 3/4 Assignments: 30% (10% each)
2 Midterms: 40% (20% each)
Embedded EthiCS Module: 5%
Final Exam: 25%
Due Dates
Assignment 1: Oct 9
Assignment 2: Part A by Oct 30, Part B by Nov 6
Assignment 3: Nov 27
Assignment 4: Dec 6
Midterm 1: Nov 3
Midterm 2: Nov 24
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.
Textbook
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
- Supplementary: [RG] Roughgarden: Algorithms Illuminated