Covers advanced data structures such as trees, graphs, and hashing along with algorithm design paradigms including divide-and-conquer, dynamic programming, and greedy methods, implemented and analyzed using Python.
Course Outcome:
CO1: Analyze and evaluate the time and space complexity of algorithms using asymptotic notations and apply Python's OOP features to implement efficient Abstract Data Types.
CO2: Design and implement advanced linear data structures such as skip lists, monotonic stacks, priority queues, and string structures to solve complex computational problems efficiently.
CO3: Implement and apply advanced tree data structures including AVL trees, segment trees, tries, and heaps to solve problems related to searching, sorting, and hierarchical data management.
CO4: Apply graph algorithms including shortest path, minimum spanning tree, topological sort, network flow, and strongly connected components to model and solve real-world network problems using Python.
CO5: Design solutions to complex computational problems using algorithm design paradigms such as dynamic programming, greedy algorithms, backtracking, and branch and bound techniques.
CO6: Explore and apply advanced algorithmic concepts including hashing, string matching, computational geometry, NP-completeness, and Python optimization libraries to solve modern and large-scale computational challenges.