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 about

An 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 at

This 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.

Prerequisites

This 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 venue

Tue/Thurs/Fri 11:00-11:50 AM, LH 325.

Lab timings and venue

Mon/Tue/Thurs/Fri 1:00-5:00 PM, LH 503 and LH 504.

Office hours

Instructor 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

Relevant platforms for the course
  • 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.)
Evaluation policy

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.
How to register

Via e-Admin portal.

Date Lectures Labs
Week 1
Jul 24 (Thurs) Lecture 1: Introduction to the Course
    No lab
Jul 25 (Fri) Lecture 2: Analyzing the Efficiency of Algorithms
  • Additional reading: [R] Part 1, Chapter 2
  • Understanding (log) scale: Powers of Ten
    • No lab
    Week 2
    Jul 28 (Mon)
      Group 1, Lab 1
    Jul 29 (Tue) Lecture 3: Asymptotic Analysis
  • Additional reading: [R] Part 1, Chapter 2
    • Group 2, Lab 1
    Jul 31 (Thurs) Lecture 4: Asymptotic Analysis (Contd.) and Arrays and Linked Lists
  • Additional reading: [W] Chapters 1 and 14
    • Group 3, Lab 1
    Aug 01 (Fri) Lecture 5: Linked List Operations
  • Additional reading: [W] Chapter 14
    • Group 4, Lab 1
    Week 3
    Aug 04 (Mon)
      Group 1, Lab 2
    Aug 05 (Tue) Lecture 6: Implementing Linked Lists and Introduction to Stacks
  • Additional reading: [GTM] Chapters 3.1 and 3.2
    • Group 2, Lab 2
    Aug 07 (Thurs) Lecture 7: Stacks: Applications and Implementation
  • Additional reading: [W] Chapter 9, [GTM] Chapter 5.1
    • Group 3, Lab 2
    Aug 08 (Fri) Lecture 8: Queue ADT
  • Additional reading: [W] Chapter 9,  [GTM] Chapter 5.2
    • Group 4, Lab 2
    Week 4
    Aug 11 (Mon)
      Group 1, Lab 3
    Aug 12 (Tue) Lecture 9: Amortized Analysis
  • Additional reading: [GTM] Chapters 6.1 and 6.2
    • Group 2, Lab 3
    Aug 13 (Wed)
      Group 3, Lab 3 (11 AM - 1 PM)
    Aug 14 (Thurs)
    Friday timetable
    Lecture 10: Applications of Stacks and Queues
      Group 4, Lab 3
    Aug 15 (Fri)
    Independence Day
    No lecture
      No lab
    Week 5
    Aug 18 (Mon)
      Group 1, Lab 4
    Aug 19 (Tue) Lecture 11: Application of Queues (Contd.)
  • Additional reading: [R] Part 2, Chapter 8
    • Group 2, Lab 4
    Written Quiz I (August 19, 6:30-7:30 PM)
      Aug 21 (Thurs) Lecture 12: Application of Queues (Contd.) and Tree ADT
    • Additional reading: [GTM] Chapter 7.1
      • Group 3, Lab 4
      Aug 22 (Fri) Lecture 13: Binary Trees
    • Additional reading: [GTM] Chapters 7.2 and 7.3
      • Group 4, Lab 4
      Week 6
      Programming Quiz I Week
        Aug 25 (Mon)
          Group 1, Lab 5
        Aug 26 (Tue) Lecture 14: Binary Trees (Contd.) and Heaps
      • Additional reading: [GTM] Chapters 7.2 and 7.3, [W] Chapter 16
        • Group 2, Lab 5
        Aug 28 (Thurs) Lecture 15: Heap Operations
      • Additional reading: [W] Chapter 16
        • Group 3, Lab 5
        Aug 29 (Fri) Lecture 16: Heap Operations (Contd.) and Priority Queues
      • Additional reading: [W] Chapter 16
        • Group 4, Lab 5
        Aug 30 (Sat)
        Friday timetable
        Lecture 17: HeapSort and Huffman Coding
      • Additional reading: [R] Chapter 14
        • Group 4, Lab 6
        Week 7
        Sep 01 (Mon)
          Group 1, Lab 6
        Sep 02 (Tue) Lecture 18: Huffman Coding (Contd.)
      • Additional reading: [R] Chapter 14
        • Group 2, Lab 6
        Sep 04 (Thurs) Lecture 19: Huffman's Greedy Algorithm
      • Additional reading: [R] Chapter 14
        • Group 3, Lab 6
        Sep 05 (Fri)
        Milad-un-Nabi
        No lecture
          No lab
        Week 8
        Sep 08 (Mon)
          No lab
        Sep 09 (Tue) Lecture 20: Analysis of Huffman's Algorithm
      • Additional reading: [R] Chapter 14
        • No lab
        Sep 11 (Thurs) Lecture 21: Hash Tables
      • Additional reading: [R] Chapter 12
        • No lab
        Weeks 8-9
        Minor (8-10 AM, LH 108, 111, 114, 121, 325)
          Week 9
          Sep 18 (Thurs) Lecture 22: Implementing Hash Table
        • Additional reading: [R] Chapter 12
          • Group 3, Lab 7
          Sep 19 (Fri) Lecture 23: Hash Functions: Good, Bad, and Universal
        • Additional reading: [R] Chapter 12
          • Group 4, Lab 7
          Sept 20 (Sat) Viva for Programming Assignment I
            Week 10
            Sep 22 (Mon)
              Group 1, Lab 7
            Sep 23 (Tue) Lecture 24: Binary Search Trees
          • Additional reading: [CLRS] Chapter 12
            • Group 2, Lab 7
            Sep 25 (Thurs) Lecture 25: Binary Search Trees (Contd.)
          • Additional reading: [CLRS] Chapter 12
            • No lab
            Sep 26 (Fri)
            Project presentations
            No lecture
              No lab
            Week 11 (Mid-Semester Break)
            Sep 28-Oct 05 No Lectures
              No labs
            Week 12
            Oct 06 (Mon)
              Group 1, Lab 8
            Oct 07 (Tue) Lecture 26: Augmented Binary Search Trees
          • Additional reading: [GTM] Chapter 9.1
            • Group 2, Lab 8
            Oct 09 (Thurs) Lecture 27: AVL Trees - I
          • Additional reading: [GTM] Chapter 10.2
            • Group 3, Lab 8
            Oct 10 (Fri) Lecture 28: AVL Trees - II
          • Additional reading: [GTM] Chapter 10.2
            • Group 4, Lab 8
            Week 13
            Oct 13 (Mon)
              Group 1, Lab 9
            Oct 14 (Tue) Lecture 29: AVL Trees (Contd.) and Multiway Search Trees
          • Additional reading: [GTM] Chapter 10.4
            • Group 2, Lab 9
            Oct 15 (Wed) Lecture 30: Multiway Search Trees and 2-4 Trees
          • Additional reading: [GTM] Chapter 10.4
            Oct 16 (Thurs) Lecture 31: 2-4 Trees (Contd.)
          • Additional reading: [GTM] Chapter 10.4
            • Group 3, Lab 9
            Oct 17 (Fri) Lecture 32: (2,4) Trees and B Trees
          • Additional reading: [CLRS] Chapter 18
            • Group 4, Lab 9
            Week 14
            Oct 20 (Mon)
            Diwali

              No lab
            Oct 21 (Tue) Lecture rescheduled to Oct 15 (Wednesday)
              Group 2, Lab 10
            Oct 23 (Thurs) Lecture 33: Graphs as Data Structure
          • Additional reading: [GTM] Chapter 12.1
            • Group 3, Lab 10
            Oct 24 (Fri) Lecture 34: Graphs: Representation
          • Additional reading: [GTM] Chapter 12.2, [CLRS] Chapter 22.1
            • Group 4, Lab 10
            Oct 25 (Sat)
            Monday timetable

              Group 1, Lab 10
            Week 15
            Oct 27 (Mon)
              Group 1, Lab 11
            Oct 28 (Tue) Lecture 35: Graph Search
          • Additional reading: [CLRS] Chapter 22.2, [GTM] Chapter 12.3
            • Group 2, Lab 11
            Oct 28 (Tue) Written Quiz II (6PM-8PM)
              Oct 30 (Thurs) Lecture 36: Graph Search (Contd.) and Applications
            • Additional reading: [CLRS] Chapter 22.2, [GTM] Chapter 12.3
              • Group 3, Lab 11
              Oct 31 (Fri) Lecture 37: Graph Search: DFS and Topological Ordering
            • Additional reading: [CLRS] Chapter 22.3, [GTM] Chapter 12.3
              • Group 4, Lab 11
              Week 16
              Nov 02 (Sun) Programming Quiz II
                Nov 03 (Mon)
                  No lab
                Nov 04 (Tue) Lecture 38: Topological Sorting and Strongly Connected Components
              • Additional reading: [CLRS] Chapter 22.4, [GTM] Chapter 12.4
                • No lab
                Nov 06 (Thurs)
                Wednesday timetable
                No lecture
                  No lab
                Nov 07 (Fri) Lecture 39: Graph: Strongly Connected Components
              • Additional reading: [CLRS] Chapter 22.5, [R] Chapter 8.6
                • No lab
                Nov 08 (Sat)
                  No lab
                Nov 08 (Sat) Viva for Programming Assignment II
                  Week 17
                  Nov 10 (Mon)
                    No lab
                  Nov 11 (Tue) Lecture 40: Minimum Spanning Trees
                • Additional reading: [GTM] Chapter 12.7, [CLRS] Chapter 23.2
                  • No lab
                  Nov 13 (Thurs) Lecture 41: Minimum Spanning Trees (Contd.) and Union Find
                • Additional reading: [CLRS] Chapters 21.1, 21.2, 21.3
                  • No lab
                  Nov 14 (Fri) Lecture 42: Wrap-Up
                    No lab
                  Weeks 18
                  Major (November 17th, 12:45-3:15 PM)