The following are expectations of what you should know based on material
covered in lecture.  This material is covered in Sections 2.2, 2.3,
9.1-9.3, 10.1-10.4, 10.7, 8.5 and 12.1-12.3 of the Shiflet text.

Understand project 3 on the airline reservation system.

Understand project 4 on general tree routines.

Understand Labs 5 (scripts), 6 (graphics and recursion and 7 (sorting).

Understand that recursion has a base (non-recursive) case and a recursive
case on a smaller problem.

Be able to write a recursive algorithm.

Understand that while short to write, recursive routines may not always be
efficient to execute.

Know the definition for a binary search tree.

Understand how to traverse a binary search tree.

Understand and be able to do a preorder, inorder and postorder traversal of
a binary tree.

Know how an expression tree can be used to represent an expression.

Know how to insert a node in a binary search tree (without being concerned
about keeping the tree balanced).

Know how to delete a node from a binary search tree (without being
concerned about keeping the tree balanced).

Understand the general approach used in a bubble sort to sort an array of
data.

Be able to trace through the execution of the bubble sort on a set of data.

Know the number of comparisons and number of swaps the bubble sort makes
for sorting n values.

Understand the general approach used in a selection sort to sort an array of
data.

Be able to trace through the execution of the selection sort on a set of data.

Know the number of comparisons and number of swaps the selection sort makes
for sorting n values.

Understand the general approach used in a merge sort to sort an array of
data.

Be able to trace through the execution of the merge sort on a set of data.

Know the number of comparisons the merge sort makes for sorting n values.

Understand that the merge sort requires a temporary array when sorting a
list of values stored in an array.

Understand the general approach used in a quick sort to sort an array of
data.

Be able to trace through the execution of the quick sort on a set of data.

Know the number of comparisons the quick sort makes for sorting n values.
Know both the worst and expected number of comparisons.

Know the different criteria for comparing sorting algorithms and what
sorting algorithms are better or worse in regard to these criteria.

Know the various operations provided by a set abstract data type.

Know different approaches for implementing sets.

Know the general idea of how sets can be implemented using a bit vector and
bitwise operators.

Know that a graph is defined as a set of vertices and edges.

Know the difference between a directed and an undirected graph.

Know what it means for a graph to contain a cycle.

Know that a tree is an acyclic graph.

Know how to use adjacency sets to represent a graph.

Know how to use an adjacency table to represent a graph.

Know how to use linked lists to represent a graph.

Know to make a depth-first traversal of a graph.

Know to make a breadth-first traversal of a graph.