Instructor: Subhra Mazumdar (subhra.mazumdar@iiti.ac.in), Department of Computer Science and Engineering, IIT Indore
Teaching Assistants:
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
Reference Material List/ Practice Problems: For all the topics taught
Link for the textbooks mentioned corresponding to each lecture is given below under Textbooks
Evaluations
Course Outline — CS 203 / MA 253 (Data Structures & Algorithms)
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
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 (taught early as array applications)
Comparison sorts: Quick, Merge (taught after the recurrence toolkit, so the analysis lands with the tool fresh)
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)
Linked List
Singly linked list; pointers and non-contiguous storage
Difference — Array vs. Linked List (the cost duality)
Doubly linked list, Circular linked list
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: