COL351, Fall Semester 2026
Analysis and Design of Algorithms
Instructor: Rohit Vaish ()
Teaching Assistants:
TBA
Course Information
What this course is about
This course will provide an introduction to the fascinating field of algorithms. Participants will learn various techniques for designing algorithms and formally reasoning about their correctness and resource requirements.
The course is designed for third-year undergraduate students. This offering of COL351 is for CS students; non-CS students should sign up for the Spring semester offering.
PrerequisitesThis is a theoretical course that will require familiarity with Data Structures (COL106) and Discrete Mathematical Structures (COL202).
References- [DPV] Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani. Algorithms. First Edition.
- [GM] Bernd Gärtner and Jiří Matoušek. Understanding and Using Linear Programming. First Edition
- [KT] Jon Kleinberg and Éva Tardos. Algorithm Design. First Edition
- [R] Tim Roughgarden. Algorithms Illuminated, Parts 1-4.
- A Second Course in Algorithms at Stanford
- Dance your way to sorting with AlgoRhythmics
- Visualizing algorithms with VisuAlgo
- Nice explanations of CS Theory concepts
Admin
Lecture and tutorial timings
Lectures: TWF 10-11 AM. Venue: LH 410.
Tutorials: M/T/Th/F 1-2 PM. Venue: LH 313.5. (Tutorial Groups).
Sign up on the Microsoft Teams channel of the course for announcements. Evaluation policy
Tutorial quizzes: 30% (best ten x 3%)
In-class quizzes: 45% (best three x 15%)
Assignments: 25% (best one x 25%)
- There are no minor or major exams in this course; therefore, there will be no opportunity for a repeat minor or repeat major exam, except possibly for an E-grade remajor in January 2027. Additionally, there will be no make-up tutorial quiz, in-class quiz, or assignment.
- All evaluations will take place under invigilation.
- The use of any electronic devices during lectures, tutorials, or course evaluations is prohibited.
- For the institute's attendance requirements, only the submissions from tutorials will be taken into account.
- Audits are not allowed.
| Date and Lecture | Topic | Tutorials | |
|---|---|---|---|
| Week 1 | |||
| July 24 (Fri) Lecture 1 |
Introduction to Algorithms |
|
|
| Week 2 | |||
| July 27 (Mon) |
|
||
| July 28 (Tue) Lecture 2 |
Divide and Conquer I: Integer Multiplication and Merge Sort |
|
|
| July 29 (Wed) Lecture 3 |
Divide and Conquer II: Merge Sort (Contd.) and Asymptotic Analysis |
|
|
| Jul 30 (Thurs) |
|
||
| July 31 (Fri) Lecture 4 |
Divide and Conquer III: Counting Inversions |
|
|
| Week 3 | |||
| Aug 03 (Mon) |
|
||
| Aug 04 (Tue) Lecture 5 |
Divide and Conquer IV: Matrix Multiplication and Master Theorem |
|
|
| Aug 05 (Wed) Lecture 6 |
Divide and Conquer V: Proof and Applications of Master Theorem |
|
|
| Aug 06 (Thurs) |
|
||
| Aug 07 (Fri) Lecture 7 |
Quiz 1 Last date for course drop |
|
|
| Week 4 | |||
| Aug 10 (Mon) |
|
||
| Aug 11 (Tue) Lecture 8 |
Graph Algorithms I: Basic Definitions, Representation, and Search Last date for adding courses in lieu of dropped courses Finalization of roll lists |
|
|
| Aug 12 (Wed) Lecture 9 |
Graph Algorithms II: BFS, DFS, and Applications |
|
|
| Aug 13 (Thurs) |
|
||
| Aug 14 (Fri) Lecture 10 |
Graph Algorithms III: Topological Ordering and Strongly Connected Components |
|
|
| Week 5 | |||
| Aug 17 (Mon) |
|
||
| Aug 18 (Tue) Lecture 11 |
Graph Algorithms IV: Kosaraju's Algorithm |
|
|
| Aug 19 (Wed) Lecture 12 |
Graph Algorithms V: Dijkstra's Algorithm |
|
|
| Aug 20 (Thurs) |
|
||
| Aug 21 (Fri) Lecture 13 |
Greedy Algorithms I: Job Scheduling |
|
|
| Week 6 | |||
| Aug 24 (Mon) |
|
||
| Aug 25 (Tue) Lecture 14 |
Greedy Algorithms II: Job Scheduling (Contd.) |
|
|
| Aug 26 (Wed) Milad-un-Nabi |
No Lecture |
|
|
| Aug 27 (Thurs) |
|
||
| Aug 28 (Fri) Lecture 15 |
Greedy Algorithms III: Minimum Spanning Trees |
|
|
| Week 7 | |||
| Aug 31 (Mon) |
|
||
| Sep 01 (Tue) Lecture 16 |
Quiz 2 |
|
|
| Sep 02 (Wed) Lecture 17 |
Linear Programming I: Introduction |
|
|
| Sep 03 (Thurs) Lecture 18 Friday timetable |
Linear Programming II: Applications |
|
|
| Sep 04 (Fri) Janmashtami |
No Lecture |
|
|
| Week 8 | |||
| Sep 07 (Mon) |
|
||
| Sep 08 (Tue) Lecture 19 |
Linear Programming III: Duality |
|
|
| Sep 09 (Wed) Lecture 20 |
Linear Programming IV: Duality (contd.) |
|
|
| Sep 10 (Thurs) |
|
||
| Sep 11 (Fri) Lecture 21 |
Mid-Term Review and Introduction to Dynamic Programming |
|
|
| Week 9 (Sept 12-18) | |||
| Date (TBA) | Assignment 1 |
|
|
| Week 10 | |||
| Sept 21 (Mon) |
|
||
| Sept 22 (Tue) Lecture 22 |
Dynamic Programming I: Weighted Independent Set |
|
|
| Sep 23 (Wed) Lecture 23 |
Dynamic Programming II: Weighted Independent Set (Contd.) and Knapsack |
|
|
| Sep 24 (Thurs) |
|
||
| Sep 25 (Fri) | No lecture Mid-term evaluation of projects |
|
|
| Week 11 (Mid-Semester Break) | |||
| Sep 28-Oct 04 | No Lectures |
|
|
| Week 12 | |||
| Oct 05 (Mon) |
|
||
| Oct 06 (Tue) Lecture 24 |
Dynamic Programming III: Knapsack (Contd.) and Sequence Alignment |
|
|
| Oct 07 (Wed) Lecture 25 |
Dynamic Programming IV: Sequence Alignment (Contd.) and Bellman-Ford Algorithm |
|
|
| Oct 08 (Thurs) |
|
||
| Oct 09 (Fri) Lecture 26 |
Dynamic Programming V: Bellman-Ford Algorithm (Contd.) |
|
|
| Oct 10 (Sat) Lecture 27 Wednesday timetable |
Quiz 3 |
|
|
| Week 13 | |||
| Oct 12 (Mon) |
|
||
| Oct 13 (Tue) Lecture 28 |
Dynamic Programming VI: All Pairs Shortest Paths Problem |
|
|
| Oct 14 (Wed) Lecture 29 |
All Pairs Shortest Paths Problem (Contd.) and Introduction to Network Flows |
|
|
| Oct 15 (Thurs) |
|
||
| Oct 16 (Fri) Lecture 30 |
Network Flow II: Ford-Fulkerson Algorithm |
|
|
| Week 14 | |||
| Oct 19 (Mon) |
|
||
| Oct 20 (Tues) Dussehra |
No Lecture |
|
|
| Oct 21 (Wed) Lecture 31 |
Network Flow III: Maximum Flows and Minimum Cuts |
|
|
| Oct 22 (Thurs) |
|
||
| Oct 23 (Fri) Lecture 32 |
Network Flow IV: Edmonds-Karp Algorithm |
|
|
| Week 15 | |||
| Oct 26 (Mon) |
|
||
| Oct 27 (Tue) Lecture 33 |
Network Flow V: Edmonds-Karp Algorithm (Contd.) and Applications |
|
|
| Oct 28 (Wed) Lecture 34 |
Quiz 4 |
|
|
| Oct 29 (Thurs) |
|
||
| Oct 30 (Fri) Lecture 35 |
Network Flow VI: Edmonds-Karp Runtime Analysis (Contd.) |
|
|
| Week 16 | |||
| Nov 02 (Mon) |
|
||
| Nov 03 (Tue) Lecture 36 |
Maximum Flow Applications (Contd.) |
|
|
| Nov 04 (Wed) Lecture 37 |
NP-completeness I: Introduction |
|
|
| Nov 05 (Thurs) |
|
||
| Nov 06 (Fri) Lecture 38 |
NP-completeness II: The Class NP |
|
|
| Week 17 | |||
| Nov 09 (Mon) Govardhan Puja |
|
||
| Nov 10 (Tue) Lecture 39 |
NP-completeness III: Reductions |
|
|
| Nov 11 (Wed) Lecture 40 |
NP-completeness IV: Reductions (Contd.) |
|
|
| Nov 12 (Thurs) |
|
||
| Nov 13 (Fri) Lecture 41 |
NP-completeness V: Reductions (Contd.) and P vs NP |
|
|
| Week 18 | |||
| Nov 16 (Mon) |
|
||
| Nov 17 (Tue) Lecture 42 |
Wrap-Up |
|
|
| Date (TBA) | Assignment 2 |
|
|