Data Structures (Syllabus)
The second semester in a series of programming courses; this course focused on programming data structures and how they compare in different use cases. In addition we covered several object oriented concepts including classes, objects, abstraction, and other programming techniques such as pointers and recursion. The language used was C++.

Insertion, Selection, Bubble Sort
These three O(N^{2}) sorting algorithms were coded and then tested for their performance. The results are graphed to determine which algorithm is the fastest overall.
Code
Output
Performance Graph 
Matrix Arithmetic
We implemented a matrix as a dynamic, twodimensional array. We wrote functions to resize, copy, and set the matrices. The matrix arithmetic includes addition, subtraction, multiplication, and transposition.
Code
Output 
Quicksort
In this assignment we implemented the quicksort algorithm and tested it.
Code
Output 
Supercalculator
We implemented a custom vector object that represents a "big number"  a number with an unlimited amount of digits. We wrote addition, subtraction, multiplication, division, and factorial functions that can operate on the big numbers to perform very large calculations.
Code
Output 
Linked List Operations
A large data file of people is read into a linked list structure. The user can search through the list by typing in a field and a value. Each search will narrow down the results from previous searches and produce a new linked list with the matching values. The result list can be displayed or saved to a textfile at any time.
Code
Output 
General Tree Operations
The large data file of people is read into a binary tree structure. The user can search through the tree by inputting the first and last name of a person. An insert, search, and print function are implemented.
Code
Output