COL106, Fall Semester 2025
Data Structures and Algorithms
Stow away your data, sit back, relax, and enjoy the flight.
Instructors: Rajendra Kumar () and Rohit Vaish ()
Teaching Assistants:
Lakshay Saggi (),
Rupesh Kumar ()
Course Information
What this course is aboutAn algorithm is a step-by-step set of instructions (or a recipe) for solving a problem. Algorithms are fundamental to computer science, and knowing how to effectively store and manage data is crucial for designing efficient algorithms. Data structures provide a way of organizing data so that it can be processed, stored, and retrieved quickly and effectively. This course will cover a variety of data structures and their applications in algorithms.
Who is this course aimed atThis course is designed for second-year (third-semester) undergraduate students in Computer Science and Engineering (CSE), Electrical Engineering (EE), and Mathematics and Computing (MT) programs. Students in other programs should consider enrolling for the Spring semester offering.
PrerequisitesThis course requires familiarity with programming, and will have "Introduction to Computer Science (COL100)" as a prerequisite.
References
- [GTM] Michael T. Goodrich, Roberto Tamassia, and David M. Mount. Data Structures and Algorithms in C++.
- [CLRS] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms.
- [M] Jayadev Misra. Effective Theories in Programming Practice.
- [R] Tim Roughgarden. Algorithms Illuminated, Parts 1-4. [Website]
- [W] Jay Wengrow. A Common-Sense Guide to Data Structures and Algorithms
- Data Structure Visualisations
Admin
Lecture timings and venueTue/Thurs/Fri 11:00-11:50 AM, LH 325.
Lab timings and venueMon/Tue/Thurs/Fri 1:00-5:00 PM, LH 503 and LH 504.
Office hoursInstructor office hours: Wednesday 2-3 PM at Bharti 410 (Rajendra) and Bharti 428 (Rohit). Please email in advance.
TA office hours: Mon/Tue/Thurs/Fri 6:30-7:30 PM, Bharti 408
- Microsoft Teams: For announcements. (Use the QR code in Lecture 1 slides to sign up.)
- Gradescope: For evaluation and regrades. (Use the entry code announced on Teams channel to sign up.)
- Moodle (new): For lab exercises. (If you are not automatically added to the channel, inform the TAs.)
Minor: 22%
Major: 32%
Quizzes: 36 % (best three x 12%. There will be four quizzes overall: two written and two programming quizzes, one of each kind in each half of the semester.)
Lab assignments: 10 x 1% = 10%
Take-home assignments: 2 x 5% = 10% (for extra credit)
- For missed minor, the major exam weightage will be scaled from 32% to 54%.
- For a missed major due to health reasons, a student should apply for an I-grade remajor as per the process announced by the academic section.
- For students with an E grade, a remajor exam will be held at the start of the next semester.
- Audit policy: No audits allowed.
- No re-quizzes or re-labs.
Via e-Admin portal.
| Date | Lectures | Labs | |
|---|---|---|---|
| Week 1 | |||
| Jul 24 (Thurs) | Lecture 1: Introduction to the Course |
|
|
| Jul 25 (Fri) | Lecture 2: Analyzing the Efficiency of Algorithms |
|
|
| Week 2 | |||
| Jul 28 (Mon) |
|
||
| Jul 29 (Tue) | Lecture 3: Asymptotic Analysis |
|
|
| Jul 31 (Thurs) | Lecture 4: Asymptotic Analysis (Contd.) and Arrays and Linked Lists |
|
|
| Aug 01 (Fri) | Lecture 5: Linked List Operations |
|
|
| Week 3 | |||
| Aug 04 (Mon) |
|
||
| Aug 05 (Tue) | Lecture 6: Implementing Linked Lists and Introduction to Stacks |
|
|
| Aug 07 (Thurs) | Lecture 7: Stacks: Applications and Implementation |
|
|
| Aug 08 (Fri) | Lecture 8: Queue ADT |
|
|
| Week 4 | |||
| Aug 11 (Mon) |
|
||
| Aug 12 (Tue) | Lecture 9: Amortized Analysis |
|
|
| Aug 13 (Wed) |
|
||
| Aug 14 (Thurs) Friday timetable |
Lecture 10: Applications of Stacks and Queues |
|
|
| Aug 15 (Fri) Independence Day |
No lecture |
|
|
| Week 5 | |||
| Aug 18 (Mon) |
|
||
| Aug 19 (Tue) | Lecture 11: Application of Queues (Contd.) |
|
|
| Written Quiz I (August 19, 6:30-7:30 PM) |
|
||
| Aug 21 (Thurs) | Lecture 12: Application of Queues (Contd.) and Tree ADT |
|
|
| Aug 22 (Fri) | Lecture 13: Binary Trees |
|
|
| Week 6 | |||
| Programming Quiz I Week |
|
||
| Aug 25 (Mon) |
|
||
| Aug 26 (Tue) | Lecture 14: Binary Trees (Contd.) and Heaps |
|
|
| Aug 28 (Thurs) | Lecture 15: Heap Operations |
|
|
| Aug 29 (Fri) | Lecture 16: Heap Operations (Contd.) and Priority Queues |
|
|
| Aug 30 (Sat) Friday timetable |
Lecture 17: HeapSort and Huffman Coding |
|
|
| Week 7 | |||
| Sep 01 (Mon) |
|
||
| Sep 02 (Tue) | Lecture 18: Huffman Coding (Contd.) |
|
|
| Sep 04 (Thurs) | Lecture 19: Huffman's Greedy Algorithm |
|
|
| Sep 05 (Fri) Milad-un-Nabi |
No lecture |
|
|
| Week 8 | |||
| Sep 08 (Mon) |
|
||
| Sep 09 (Tue) | Lecture 20: Analysis of Huffman's Algorithm |
|
|
| Sep 11 (Thurs) | Lecture 21: Hash Tables |
|
|
| Weeks 8-9 | |||
| Minor (8-10 AM, LH 108, 111, 114, 121, 325) |
|
||
| Week 9 | |||
| Sep 18 (Thurs) | Lecture 22: Implementing Hash Table |
|
|
| Sep 19 (Fri) | Lecture 23: Hash Functions: Good, Bad, and Universal |
|
|
| Sept 20 (Sat) | Viva for Programming Assignment I |
|
|
| Week 10 | |||
| Sep 22 (Mon) |
|
||
| Sep 23 (Tue) | Lecture 24: Binary Search Trees |
|
|
| Sep 25 (Thurs) | Lecture 25: Binary Search Trees (Contd.) |
|
|
| Sep 26 (Fri) Project presentations |
No lecture |
|
|
| Week 11 (Mid-Semester Break) | |||
| Sep 28-Oct 05 | No Lectures |
|
|
| Week 12 | |||
| Oct 06 (Mon) |
|
||
| Oct 07 (Tue) | Lecture 26: Augmented Binary Search Trees |
|
|
| Oct 09 (Thurs) | Lecture 27: AVL Trees - I |
|
|
| Oct 10 (Fri) | Lecture 28: AVL Trees - II |
|
|
| Week 13 | |||
| Oct 13 (Mon) |
|
||
| Oct 14 (Tue) | Lecture 29: AVL Trees (Contd.) and Multiway Search Trees |
|
|
| Oct 15 (Wed) | Lecture 30: Multiway Search Trees and 2-4 Trees |
|
|
| Oct 16 (Thurs) | Lecture 31: 2-4 Trees (Contd.) |
|
|
| Oct 17 (Fri) | Lecture 32: (2,4) Trees and B Trees |
|
|
| Week 14 | |||
| Oct 20 (Mon) Diwali |
|
||
| Oct 21 (Tue) | Lecture rescheduled to Oct 15 (Wednesday) |
|
|
| Oct 23 (Thurs) | Lecture 33: Graphs as Data Structure |
|
|
| Oct 24 (Fri) | Lecture 34: Graphs: Representation |
|
|
| Oct 25 (Sat) Monday timetable |
|
||
| Week 15 | |||
| Oct 27 (Mon) |
|
||
| Oct 28 (Tue) | Lecture 35: Graph Search |
|
|
| Oct 28 (Tue) | Written Quiz II (6PM-8PM) |
|
|
| Oct 30 (Thurs) | Lecture 36: Graph Search (Contd.) and Applications |
|
|
| Oct 31 (Fri) | Lecture 37: Graph Search: DFS and Topological Ordering |
|
|
| Week 16 | |||
| Nov 02 (Sun) | Programming Quiz II |
|
|
| Nov 03 (Mon) |
|
||
| Nov 04 (Tue) | Lecture 38: Topological Sorting and Strongly Connected Components |
|
|
| Nov 06 (Thurs) Wednesday timetable |
No lecture |
|
|
| Nov 07 (Fri) | Lecture 39: Graph: Strongly Connected Components |
|
|
| Nov 08 (Sat) |
|
||
| Nov 08 (Sat) | Viva for Programming Assignment II |
|
|
| Week 17 | |||
| Nov 10 (Mon) |
|
||
| Nov 11 (Tue) | Lecture 40: Minimum Spanning Trees |
|
|
| Nov 13 (Thurs) | Lecture 41: Minimum Spanning Trees (Contd.) and Union Find |
|
|
| Nov 14 (Fri) | Lecture 42: Wrap-Up |
|
|
| Weeks 18 | |||
| Major (November 17th, 12:45-3:15 PM) |
|
||