Syllabus Data Structures and Algorithms - (CS25C04) Data Types : Abstract Data Types (ADTs), ADTs and classes, introduction to OOP, Classes in Python, Inheritance, Namespaces, Shallow and Deep Copying. (Chapter - 1) Practical : Implement simple ADTs as Python classes. Linear Structures : List ADT, array-based implementations, linked list implementations, singly linked lists, circularly linked lists, doubly linked lists, Stack ADT, Queue ADT, double ended queues, applications. (Chapter - 2) Practical : List ADT using Python arrays, Linked list, Stack and Queue ADTs and Applications. Tree Structures : Tree ADT, Binary Tree ADT, tree traversals, binary search trees, AVL trees, heaps, multi-way search trees. (Chapter - 3) Practical : Tree representation and traversal algorithms, Binary Search Trees, Heaps. Graph Structures : Graph ADT, representations of graph, graph traversals, DAG, topological ordering, greedy algorithms, dynamic programming, shortest paths, minimum spanning trees, introduction to complexity classes and intractability. (Chapter - 4) Practical : Graph representation and Traversal algorithms, Single source shortest path algorithm, Minimum spanning tree algorithms. Algorithm : Analysis of algorithms, Asymptotic notations, Divide & Conquer, Recursion, Recursive Algorithms. (Chapter - 1) Practical : Implement recursive algorithms in Python. Sorting and Searching : Bubble sort, Selection sort, Insertion sort, Merge sort, Quick sort, Analysis of sorting algorithms, Linear & Binary search, Hashing, Hash functions, Collision handling, Load factors, Rehashing, and Efficiency. (Chapter - 5) Practical : Sorting and searching algorithms, Hash tables.