Instructor: Subhra Mazumdar (subhra.mazumdar@iiti.ac.in), Department of Computer Science and Engineering, IIT Indore
Teaching Assistants: Kaushik Sarmah mt2502101005@iiti.ac.in, Rishabh Yadav mt2502101016@iiti.ac.in, Sorbajit Goswami phd2501101007@iiti.ac.in, Shaikh Ubiad Ahmed ms2504101015@iiti.ac.in, Virendra Singh phd2301101004@iiti.ac.in
Venue: Sandipani Seminar Hall
Announcement:
Course Delivery: 2 Lectures and 1 Tutorial (may be used for lectures) per week. Tutorials will involve problem-solving on the topics discussed during the lectures.
Course Plan+Schedule: Provided in the excel sheet (subject to adjustments)
Lecture Timings:
Monday : 10:30 AM - 11:25 AM
Wednesday : 9:30 AM - 10:25 AM
Thursday : 8:30 AM - 9:25 AM
Lectures notes: Link
Quiz+Tutorial for CS 203/MA 213: Link
Quiz+Tutorial for CS 203D: Link
Reference Material List/ Practice Problems: For all the topics taught
Introduction to Data Structures and Algorithms
Basic Data Types
Overview of Data Structures
Abstract Data Type (ADT): separating what from how
How the machine stores and executes: memory addressing, the RAM model, cost of a step
Algorithm and Analysis
Run-time and Space Complexity; worst / best / average case
Comparing algorithms
Asymptotic Notations and Analysis (O, Ω, Θ, o, ω; the limit method)
Summations and bounding techniques
Basic Data Structures Array
The array as an ADT; contiguous allocation and the address formula
Searching (linear, binary); binary-search correctness and optimality
Linked List
Singly linked list; pointers and non-contiguous storage
Difference — Array vs. Linked List (the cost duality)
Doubly linked list, Circular linked list
More on Array and Linked List, Sorting and Order Statistics
The two-pointer and sliding-window techniques (new — array traversal patterns; heavily interviewed)
Prefix sums and the precompute-to-query-cheaply pattern (new — 1-D ancestor of Fenwick/segment trees)
Simple sorts: Insertion, Selection, Bubble
Comparison sorts: Quick, Merge, Heap, Shellsort
Linear-time sorting: Bucket, Radix, Count (idea-level: when and why they beat the Ω(n log n) comparison bound, not hand-coded)
Comparative Analysis
Order Statistics (selection in expected linear time)
Stacks
Introduction, Implementation and Applications
Use in expression evaluation and Recursion
Queues
Introduction, Implementation and Applications; difference with stack
Circular Queue
Double-ended Queue (Deque)
Priority Queue (PQ) and Heap
PQ introduction and implementation
Introduction to heap (max, min) and binary heap
Heapsort
Hashing
Introduction
Components of Hashing, Hash Table
Hash functions
Collision Resolution techniques
Comparison of Collision Resolution techniques
Tree
Introduction
Binary Tree, Binary Search Tree (BST)
Traversals in BST: Inorder, Preorder, Postorder
Height-Balanced Trees: AVL (full treatment); Red-Black (concept and guarantees only) (trimmed — properties and balancing guarantees, not the full insertion-case surgery)
B-Tree: Introduction
Segment Trees and Fenwick (Binary Indexed) Trees
Special Data Structures
Disjoint Sets
Union–Find (with path compression; amortized analysis revisited here)
Graph Algorithms
Graph representation
Graph traversal — breadth-first search, depth-first search
Topological ordering (sorting)
Shortest Path algorithms
Minimum Spanning Tree (brief introduction)
Cut-vertices and biconnected components
A Dynamic Programming Primer
Memoization and the top-down / bottom-up view
The two classic patterns (1-D and 2-D)
(May be developed further as part of Lab / the CP track)
Textbooks:
Reference Materials: