| Course Outline | General Information | Study Material | Lectures (classwise) | Problems, Exams and Assignments (updated) |
The course consists of 4 lecture hours (2 classes of 2 hours each) per week.
The basic thrust of the course would be to study data structures and to learn their applications to computer science.
We will try to stick to the basic course outline as given in this page.
| Class Timings: | Wednesday 14:15-16:00 (Room 705-706), Friday 14:00-16:00 (Room 705-706) |
| The necessary evil - marks, exam, etc.: | Mid-sem: 20, End-sem: 50, Internal evaluation: 30 |
| Books |
(B1) Data Structure and Algorithm Analysis in C Mark Allen Weiss Pearson (B2) Data Structures and Algorithms in C++ Michael T. Goodrich, Roberto Tamassia, and David M. Mount Wiley Student Edition (B3) The Art of Computer Programming: Seminumerical Algorithms, Vol. 2 Donald E. Knuth Pearson (B4) Algorithm Design J. Kleinberg and E. Tardos Pearson (B5) The C Programming Language Brian W. Kernighan and Dennis M. Ritchie Pearson (B6) Programming with C Byron S. Gottfried Schaum's Outlines (B7) Introduction to Algorithms Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein Prentice Hall of India (B8) Algorithms Robert Sedgewick and Kevin Wayne Pearson (B9) Probability and Computing: Randomized Algorithms and Probabilistic Analysis Michael Mitzenmacher and Eli Upfal Cambridge University Press (B10) Algorithms Sanjoy Dasgupta, Christos Papadimitriou and Umesh Vazirani McGraw Hill |
| Web Resources |
(W1) David Mount's lecture notes on Data Structures
(W2) Abhijit Das's lecture notes on Programming and Data Structures Abhijit Das's lecture notes on Programming and Data Structures (another copy) (W3) Pat Morin's lecture notes on Data Structures |
| LECTURE DATES | TOPICS | NOTES (pdf) | BOOKS |
| Lecture 1 (23-07-25) |
Introductory lecture, basics of C: variables, loops, control-flow | -- | (B5), (B6), (W2) and (W3) |
| Lecture 2 (25-07-25) |
Introductory lecture, basics of C: functions, array, pointer | -- | (B5), (B6), (W2) and (W3) |
| Lecture 3 (30-07-25) |
Asymptotic notations; notions of recurrence methods of analysis -- worst case, amortized analysis |
-- | (B7), (W2) and (W3) |
| Lecture 4 (01-08-25) |
Deterministic and randomized algorithms for Quicksort -- worst case, average case and expected case |
-- | (B7) and (B9) |
| Lecture 5 (06-08-25) |
Understanding recursion: quicksort, binary search and its application | -- | (B1) and (B7) |
| Lecture 6 (08-08-25) |
Abstract Data Types -- List and Stack and operations on it Implementing the List ADT: use of array and linked list |
-- | (B1) and (W3) |
| Lecture 7 (13-08-25) |
Implementation issues of ADT: how to create objects; insertion and deletion in linked lists |
-- | (B1) and (W3) |
| Lecture 8 (20-08-25) |
Circular Linked Lists, Doubly Linked Lists Polynomial ADT: addition and multiplication |
-- | (B1) and (W3) |
| Lecture 9 (27-08-25) |
Sparse Matrix ADT and its implementation using Linked List: Transpose, Addition and Multiplication Storing Graphs: adjacency matrix and adjacency list representation |
-- | (B1) and (W3) |
| Lecture 10 (29-08-25) |
Graph: Finding degree of a vertex, finding clique Graph Traversal: Use of Queue in BFS |
-- | (B1), (B10) and (W3) |
| Problems | POSTED ON | SOLUTIONS |
| -- |
| Class Tests | Date, Time and Venue | SOLUTIONS |
| Class Test I | -- | -- |
| ASSIGNMENTS | POSTED ON | SUBMISSION DEADLINE | SOLUTIONS |
| -- | -- | -- | -- |