Projects
A list of projects I have been working on or built
Graph Algorithm Simulator
The Graph Algorithm Simulator uses established libraries to display an internal representation of an advanced data structure (a graph). The specific algorithm used in this program is Prim's algorithm which is a greedy algorithm that finds the minimum spanning tree for a weighted undirected graph. I used the Java Collection Framework for creating the necessary data structure and the Java Universal Network/Graph Framework to model and visualize the graph. I implemented an Undirected Graph Class to Support the Simulator, an Efficient Update Mechanism for a Heap class, and Prim's Minimum Spanning Tree Algorithm.
Sorting Algorithm Visualizer
The Sorting Algorithm Visualizer is a web application that sorts a data structure according to a specific order relationship. There are a variety of sorting algorithms, for this project I chose to implement Insertion Sort, Selection Sort, Bubble Sort, and Merge sort. I created the Website User Interface (UI) using React and other modern JavaScript technologies. The application UI visualizes the sorting process using different colors to denote the order of the elements in the array. Implemented features included a selection of different data sizes (array of random numbers) and visualization speed.
Byte Code Interpreter
The Java Progam involves a complication phase that translates Java code to Java Byte Code, followed by an execution phase in which the Java Virtual Machine interprets/evaluates the Java Byte Code. This Byte Code Interpreter models this process by taking a set of instructions, evaluating the instructions, and executing the instructions. I implemented a LinkedList class that stores instructions, and a Stack class for evaluating the instructions. I also needed a mapping mechanism, so I implemented a Hash Map using separate chaining to map the index of an instruction with its appropriate value. Finally, I used the implemented data structures to extend this interpreter to support a larger subset of the Java Byte Code language.