C++ data structure and algorithms

Objectives
    Develop C++ programming abilities using object-oriented design, dynamic memory allocation, array manipulation, iterators, and exceptions.
    Understand graphs and the adjacency list representation of a graph; implement the adjacency list representation.
    Understand the concepts and implemtation of dyanically-resized arrays.