
Upon completion of this course, a student should be able to:
 Understand the meaning of asymptotic time complexity analysis. In
particular:
 Describe the value of bigoh notation.
 Describe the limitations of bigoh notation.
 Provide a definition for bigoh notation.
 Describe the differences between the following time complexity
notations: bigoh, omega, theta.
 Be able to analyze the time complexity of simple functions with loops
and conditionals.
 Be able to analyze the time complexity of simple recursive
functions.
 Be able to compare the time complexity of two alternate functions.
 Be able to analyze the time complexity of a program with multiple simple
function calls with known time complexity.
 Be able to use induction to prove/disprove the suggested time complexity
of a given function.
 Interpret and write templated generic algorithms.
 Interpret and write C++ code using the following STL container classes:
vector, list, stack, deque, priority queue, queue, set, and map.
 Understand the underlying organzation of the following data structures:
vector, double/singlylinkedlist, deque, stack, queue, priority queue,
hash table, binary search tree, set, and map.
 Describe and explain the time complexity for inserting, finding, and
deleting items to/from the following data structures: vector, list,
deque, stack, queue, priority queue, heap, hash table, binary tree,
set, and map.
 Compare and contrast the following data structures: vector,
double/singlylinkedlist, deque, stack, queue, priority queue, binary
search tree, set, hash table, and map.
 Describe the differences between the set and multiset data
structures.
 Describe the differences between the map and multimap data
structures.
 Define the term adaptor class and be able to implement a simple adaptor
class, e.g., stack, queue.
 Demonstrate the use of binary tree traversals (inorder, preorder,
postorder.
 Define a collision as it relates to hash tables and describe ways of
coping with collisions.
 Interpret and develop simple hashing functions.
 Understand and apply recursion in algorithm development.
 Prove algorithm correctness using inductive assertions.
