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.