Introduction to the binary search tree and its operations
    Introduction to binary trees
    Design and implementation of a stack in C
    Study of recurrences and their use in determining the time complexity of recursive algorithms
    Analysis of a sorting algorithm (insertion sort)
    Implementation of binary tree traversal algorithms (preorder, postorder, inorder) recursively and non-recursively in Java
    Introduction to a method of proving mathematical statements (induction)
    Introduction to the heap abstract data type and its use in implementing priority queues
    Review of stacks and queues and an analysis of their implementations.
    Analysis of the different implementation of the list ADT and the time complexities associated with its operations.