Syllabus Data Structures and Algorithms - CD3291 UNIT I ABSTRACT DATA TYPES Abstract Data Types (ADTs) - ADTs and classes - introduction to OOP - classes in Python - inheritance - namespaces - shallow and deep copying Introduction to analysis of algorithms - asymptotic notations - divide and conquer - recursion - analyzing recursive algorithms. (Chapter - 1) UNIT II 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) UNIT III SORTING AND SEARCHING Bubble sort - selection sort - insertion sort - merge sort - quick sort - analysis of sorting algorithms - linear search - binary search - hashing - hash functions - collision handling - load factors, rehashing and efficiency. (Chapter - 3) UNIT IV TREE STRUCTURES Tree ADT - Binary Tree ADT - tree traversals - binary search trees - AVL trees - heaps - multiway search trees. (Chapter - 4) UNIT V 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 - 5)