A student, after successfully passing this course will be able to understand the fundamental data structures and Abstract Data Types, the main sorting and searching algorithms and recursion, analyze the time and space complexity of a given algorithm, stacks and queues, process the linked list and tree structures, and the graph terminology and perform basic graph operations.
Analyze the asymptotic performance of algorithms.
Write rigorous correctness proofs for algorithms.
Demonstrate a familiarity with major algorithms and data structures.
Apply important algorithmic design paradigms and methods of analysis.
Synthesize efficient algorithms in common engineering design situations.