Racket Intrepreter
The Racket Intrepreter was developed to implement basic functional programming language constructs in Racket. Further expansion
occured to implement more complex constructs via expanding syntax such as the let family of expressions. Further conversion to continuation passing style
to implement tail recursion helped to reduce stack frames and improve preformance.
ClubFlow: Group Management Website
The ClubFlow Group Management Website was developed using the 3-layer architecture. The presentation layer consists of HTML, CSS, and
JavaScript. The backend was done with Python and the Flask library accompanied by BCrypt for salting and hashing functionality. The database was developed with SQL.
The application included admin and member user groups with member, event, and financial management, along with a bulletin board.
Design Pattern Linter
The Design Pattern Linter is a linter designed to display source code design using ASM and PlantUML. It expands on this functionality by
identifying design patterns, specifically the decorator pattern and the singleton. To discourage incorrect usage of patterns and overdependent classes, it also identifies
singleton abuse and overdepencies. Example output shown above.
Catan Board Game
The Catan Game is a replica of the popular Catan Board Game. Developed with TDD and with an emphasis on writing tests to cover
all relevant BVA values, this project was designed with testing in mind to achieve code and mutation coverage. It also incorporates i18n principles, with an
option for a different language using translations and locales.
Summit Productivity Tracker
The Summit Productivity Tracker was designed as a way to unify common productivity data in one place. It includes a todo list, a habit tracker, a goal setter, and a pomodoro timer.
It implements HTML, CSS, and JavaScript, as well as uses Firebase for data and user management.
Summit
Computer Processor Design
The Computer Architecture Processor was designed as a general purpose processor with an accumulator-based architecture optomized to run Euclid's Algorithm. This required creating an
assembly-type instruction set, designing a Datapath, Multi-Cycle RTL, and a Control Unit. The processor was modeled with verilog and tested and debugged with Quartus Prime and Model Sim to produce an execution Time of 4.8ms.
Processor Report
Genetic Algorithm Research Project (GARP)
The Genetic Algorithm Research Project's objective was to simulate a population's evolution with the Java programming language. GARP included various parameters to promote diverse evolutionary
pathways such as eliteism, crossover, selection, and mutation methods. It also included a GUI to not only visualize the simulation, but also easily update parameters to improve user experience.
Final Presentation PDF
Replica Pacman Game
The Replica Pacman Game was a take on the classic game Pacman programmed with Python to produce a responsive and intuitive game. It used responsive independent movement for the NPC ghost
characters, and involved smooth, single-axis movement restrictions for the user. It being one of my first projects and also one in a team setting, exposed me to team development and served as an introduction to GitHub.
Presentation Video