Understand algorithm analysis methods, and understand how to analyze a given algorithm.
Differentiate effieicent vs non-efficient algorthmic solutions.
Understand and apply various known algorithms in the literature to a given computational problem.
Understand the behaviour of a given algorithm, and predicting the quality of the algorithm in terms of its efficiency.
Check the correctness of a given algorithm in terms of solving the computational problem.
Remember and use a large number of well-known algorithms and their computational complexities in the literature.
Critique different algorithms in terms time and space efficiency and for the same problem.
Interpret a computational problem specification and implement a solution in a programming language to solve that problem efficiently.
Construct new algorithms for new problems and critique the algorithmic solutions in terms time and space efficiency.
Modify an existing algorithm to a new problem to accommodate for extension and/or change of problem specifications.
Design a modular solution to a problem by decomposing it into smaller sub-problems.