Marble-Game - March 2025
This program simulates a game that involves marbles dropped down a chute labeled A, navigating through a series of gates (X1–X4) that toggle their directions each time they're touched. Gate X1 has three positions (left, center, right) and toggles differently based on whether the marble is represented by a 0 or a 1, while gates X2 through X4 toggle between left and right. The marble follows the direction the gate was set to before it toggles. The program takes as input a string of binary digits (each representing a marble drop) and simulates how each marble moves through the gates, updating gate states accordingly. It outputs the sequence of gate configurations after each drop and determines whether the final marble exits through a winning chute (B or D) or a losing chute (C or E).
Game Show Simulator - February 2025
Simulation of a game show which uses a min heap to eliminate the candidates with the lowest score, as well as other related functions including insertContestant(), earnPoints(), losePoints(), etc. This program uses command line arguments of the format ./submission input.txt output.txt to read from an input file and print the results to an output file.
NFA Simulator - February 2025
Simulates the execution of a partial non deterministic finite automata (partial since there are no epsilon transitions). Program reads the definition of the machine from a file (the first command line argument), with the second command line argument being the string to simulate the machine running on (the input to the automata). The output of the program is standard output. The output consists of either: 1) the word "accept" followed by a blank space followed by the list of accept states (blank space delimited) that the automata can end up in after reading in the input string (if there is a way for the automata to end in an accept state after reading the input); or 2) the word "reject" followed by a blank space followed by the list of states (blank space delimited) that the automata can end up in after reading the string (if there is no way for the automata to end in an accept state after reading the input).
Branch-Predictor-Sim -- October 2024
> Developed and evaluated branch predictors (e.g., always taken/not taken, bimodal, gshare, tournament) in C++ on conditional branch instruction traces
> Analyzed predictor accuracy using various configurations such as counter sizes, table sizes, and global history lengths
Song Menu P2 -- May 2024
> Partnered with a team of 2 others to develop a program in C++ that allows the user to create songs with various parameters
> Constructed a max heap and a binary search tree for storing the songs and their respective parameters to optimize execution time
> Incorporated an interactive menu that supports commands to add songs, remove songs, favorite songs based on listening time, and more
Templated Doubly Linked List -- April 2024
> Developed a doubly linked list in C++ using templates to support a wide range of data types
> Incorporated key operations and additional functionality to check if the objects in a specific list instance match a specified type defined in another class
> Performed numerous unit tests to ensure functionality
Song Menu P1 -- March 2024
> Developed a song and playlist creation program in C++ that incorporates a command interface that navigates the user on how to format the commands > Utilized growable arrays to manage songs and playlists, and vectors to organize multiple playlists
Floatx Generator -- March 2024
> Created an application using C that utilizes user-defined values for total bit-width and exponent bit-width to produce a parameterized floating-point number, “floatx”
> Implemented functionality for conversion, calculation, and representation of floating-point numbers with arbitrary precision