CSC-102 Data Structures

Spring 2024-25


Instructor: Balasubramanian Raman
Office: S-227, CSE Building
Class Meeting Time: Mondays & Thursdays (4-5 pm) and Fridays (5-6 pm).
Class Room: Gargi Block 003
Office Hours: Tuesdays and Wednesdays, 11:00 a.m. - 1:00 p.m. and by appointment
TAs: Dr. Pradeep Singh (pradeep.cs at sric) (Post Doc)
Email: first four letters of first name at cs dot ac dot in

Announcements

January 16, 2025: Classes have begun.

Course Objectives, Learning Outcomes and Prerequisites

To understand the basic concepts of data structures, including arrays, linked lists, stacks, queues, trees, graphs, and hash tables.
To Analyze the time and space complexity of different data structures and operations.
To Choose the appropriate data structure for a given problem or application.
To Implement basic data structures in a chosen programming language (e.g., C++).

Course Outcomes:
After completing the course you will be able to:
explain and differentiate between various data structures like arrays, linked lists, stacks, queues, trees, graphs, and hash tables.
calculate the time and space complexity of operations like insertion, deletion, and searching for different data structures, allowing you to choose the optimal structure for specific tasks.
recognize how certain algorithms rely on specific data structures for efficient operation and be able to analyze the impact of the chosen structure on the algorithm's performance.
understand how data structures are used in various domains like operating systems, database systems, compilers, computer graphics, artificial intelligence, and more.

Prerequisites: Programming Language.

Evaluation Components

Note: Assignments may require strong programming skills. You can choose C++.

Lecture Notes

01. Introduction to Data Structures (16/01/2025)
02. Asymptotic Notations in Time Complexity: Big O, Big Omega and Big Theta notations (17/01/2025)
03. Asymptotic Notations in Time Complexity: Small o and Small omega notations with practical examples (20/01/2025)
04. Space Complexity and Introduction to Linear Lists (24/01/2025)
05. Linear Lists (27/01/2025)
06. One Dimensional Arrays (30/01/2025)
07. Two Dimensional Arrays, Selection Sort, Bubble Sort and Linked List (03/02/2025)
08. Surprise Quiz 1, Solution (06/02/2024)
09. Operations on Linked Lists (07/02/2025)
10. Insertion and Deletion on Linked Lists (10/02/2025)
11. Cicular linked list, Circular linked list with header node and Doubly linked list (13/02/2025)
12. Practice Problems (14/02/2025)
13. Merge Sort, Quick Sort, Radix Sort, Sparse Matrices (17/02/2025)
14. Sparse Matrices representations and Introduction to Stacks (20/02/2025)
15. Stack Operations, Postfix to Infix using Stacks, Infix to Postfix, Infix to Prefix and Linked Stack (21/02/2025)
16. Queues, Circular Queues and Linked Queues (24/02/2025)
17. Radix Sort using Linked List and Hashing (27/02/2025)
17. Practice Problems in Stacks and Queues (28/02/2025)


Assignments


01. Assignment 1 (Posted on 10/02/2025, Deadline 24/02/2025)
02. Assignment 2 (Posted on 20/02/2025, Deadline 07/03/2025)
03. Assignment 3 (Posted on 20/02/2025, Deadline 14/03/2025)


Examinations


01. Surprise Quiz 1, Solution (06/02/2024)

Recommended Study Material

The following will be used as a reference/text book for this course:
1. Sahni, S., "Data Structures, Algorithms, and Applications in C++", WCB/McGraw-Hill. (Latest Edition)
2. Michael T. Goodrich, Roberto Tamassia, David M. Mount, "Data Structures and Algorithms in C++", Wiley, Latest edition.
3. Wirth, N., "Algorithms and Data Structures", Prentice-Hall of India, 2017.
4. Drozdek, A., "Data Structures and Algorithms in C++", Vikas Publishing House.
5. Cormen T, Leiserson C, Rivest R, and Stein C., "Introduction to Algorithms", MIT Press, 2009.