Department of Computer Science and Engineering
Advanced Data Structures and Algorithms
M.Tech. I Year I Term
Course Objectives
• To introduce the fundamental design, analysis, and implementation of basic data structures.
• To enhance the basic concepts in the specification and analysis of programs.
• To introduce and practice advanced algorithms and programming techniques necessary for
developing sophisticated computer application programs
• To get accustomed with various programming constructs such as divide-and-conquer,
backtracking, and dynamic programming.
• To learn new techniques for solving specific problems more efficiently and for analyzing
space and time requirements.
Syllabus
Module – I
Essentials of Data Structures
Analysis of Algorithms, Asymptotic Notations, Review of Basic Data Structures.
Lab Tasks:
1. Perform asymptotic analysis with Fibonacci sequence
2. Practice dynamic memory allocation and its applications in algorithm implementation
Module – II
Stacks and Queues
Stack ADT, Queue ADT, Circular Queues, Priority Queues, Double-Ended Queues, Operations and
Implementations.
Lab Tasks:
1. Perform balanced parathesis check using stack
2. Simulate Producer-Consumer problem using Circular Queue
Module – III
Advanced Trees
Binary Trees, Generic Trees, AVL Trees, B Trees, Red-Black Trees, Splay Trees.
Lab Tasks:
1. Write functions to find the height of a tree and depth of a node in an AVL Tree and B Tree
2. Implement the balancing process after insertion, including color flips and rotations to
maintain the Red-Black Tree properties
Module – IV
Graph Algorithms
Representation of Graphs, Graph Traversals, Minimum Spanning Tree Algorithms.
Lab Tasks:
1. Implement DFS and BFS to detect cycles in a directed graph and undirected graph
2. Implement Prim's and Kruskal's algorithms and analyse their time complexity on graphs
with different structures (e.g., sparse vs. dense graphs)
Module – V
Hashing in Data Structures
Hash Table ADT, Hash Function, Collision Resolution Techniques, Advanced Hashing
Techniques, Applications of Hashing, Challenges in Hashing.
Lab Tasks:
1. Understand the structure and working of a Hash Table and implement the Hash Table ADT
2. Explore advanced hashing techniques that improve the performance of basic hash tables
Module – VI
Pattern Matching Algorithms
Brute Force Method, Knuth-Morris-Pratt Algorithm, Boyer-Moore Algorithm.
Lab Tasks:
1. Analyse and discuss the time complexity of the brute force algorithm (best case, worst case,
and average case)
2. Compare the performance of the Knuth-Morris-Pratt Algorithm and the Boyer-Moore
algorithm on various test cases
Module – VII
Searching Strategies
Interpolation Search, Exponential Search, Jump Search.
Lab Tasks:
1. Analyse when interpolation search is more efficient than binary search
2. Compare the performance of jump search, linear search, and binary search on various test
cases
Module – VIII
Sorting Strategies
Multi-way Merge Sort, Heap Sort, Shell Sort.
Lab Tasks:
1. Implement heap sort using a min-heap for ascending order
2. Implement Shell sort and experiment with different gap sequences
Module – IX
Dynamic Programming Techniques
Matrix Chain Multiplication, 0/1 Knapsack, Longest Common Sub sequence.
Lab Tasks:
1. Implement Matrix Chain Multiplication with Dynamic Memory Allocation
2. Optimize the space complexity of the 0/1 Knapsack problem
Module – X
Divide and Conquer Strategies
Strassen’s Matrix Multiplication, Master Theorem, Parallel Algorithms.
Complexity Classes
P, NP Hard and NP Complete Problems
Lab Tasks:
1. Implement traditional matrix multiplication and Strassen’s matrix multiplication
2. Compare the practical performance of divide and conquer algorithm against the theoretical
time complexity derived using the Master Theorem
Course Outcomes
• Students are familiar with algorithmic techniques such as brute force, greedy, and divide and
conquer.
• Application of advanced abstract data type (ADT) and data structures in solving real world
problems.
• Effectively combine fundamental data structures and algorithmic techniques in building a
complete algorithmic solution to a given problem
Text Books
• Data structures, Algorithms and Applications in Java, S.Sahni, Universities Press.
• Data structures and Algorithms in Java, Adam Drozdek, 3rd edition, Cengage Learning.
• Data structures and Algorithm Analysis in Java, M.A.Weiss, 2nd edition
• Introduction to Algorithms T. H. Cormen, C. E. Leiserson, R. L. Rivest, , Prentice hall.
• Algorithms and complexity H. S. Wilf, , Prentice hall.
• Data Structures and Algorithms Made Easy, Narasimha Karumanchi, CareerMonk
Publications
Reference Books
• Java for Programmers, Deitel and Deitel, Pearson education.
• Data structures and Algorithms in Java, R.Lafore, Pearson education.
• Java: The Complete Reference, 8th editon, Herbert Schildt, TMH.
• Data structures and Algorithms in Java, M.T.Goodrich, R.Tomassia, 3rd edition, Wiley
India Edition.
• Data structures and the Java Collection Frame work,W.J.Collins, Mc Graw Hill.
• Classic Data structures in Java, T.Budd, Addison-Wesley (Pearson Education).
• Data structures with Java, Ford and Topp, Pearson Education.
• Data structures using Java, D.S.Malik and P.S.Nair, Cengage learning.
• Data structures with Java, J.R.Hubbard and A.Huray, PHI Pvt. Ltd.
• Data structures and Software Development in an Object-Oriented Domain, J.P.Tremblay
and G.A.Cheston, Java edition, Pearson Education.
*****