College:

I went to Marist College from 2020-2023 and I graduated with a Bachelor of Science in the field of Computer Science. While in college my courses often required a final project to be done, and the ones listed below are my most notable. Firstly, I created a 6502 Processor emulator which could execute 6502 opCodes. In my next and last semester I created a compiler capable of reading an input file of a custom programming language and turning it into 6502 opCodes. These two projects were my most difficult and also the most satisfying to complete and watch function. Writing code in a custom language, compiling it with a compiler I wrote, and then running that same code in my 6502 processor emulator gave me a great feeling of accomplishment. When I finished these projects I intended to port them to my personal website as a way to show off their functionality, but I was too busy enjoying my last Summer break before work! Lastly, I also participated in a Capstone group where my team took a psuedo 'work order' from a professor at Marist to create a prototype program.


I am in the process of moving my portfolio from my personal website to this new domain name specifically for my portfolio. Please excuse my unpolished aesthetics.


6502 Processor

I wrote a 6502 Processor in Typescript capable of executing the opCodes found in this pdf file. Github Link.

About:

I have a class for each piece of hardware, hardware being the Clock, CPU, Interupt Controller, Keyboard, Memory, and the MMU. The clock handles the 'pulses' to each piece of hardware, keeping the system in order. The CPU handles the various logic functions as well as the various registers needed to operate these functions. The Interupt Controller and Keyboard are not functional, they act as placeholders. The Memory handles the memory and how it interacts with the MAR and MDR registers, and finally the MMU handles the actual interactions between the rest of the system and the Memory itself.

tsiram_example.png

Compiler

I wrote a custom Compiler in Java that compiles the following grammar in this pdf file. Github Link.

About:

This compiler consists of four major parts, the Lexer, Parser, Semantic Analyzer, and Code Generation. The Lexer handles reading through the users inputted code character by character and turns the code into Tokens arranged into a Token Stream. The Parser takes the Token Stream and shaves it down to the important parts using recursive descent, arranging the remaining Tokens into a Concrete Syntax Tree (CST). The Semantic Analyzer also recursively descends through Token Stream to create both an Abstract Syntax Tree (AST) as well as a Symbol Table which are essentially the most important parts of the Tokens to Code Generation. Finally, Code Generation uses the AST and the Symbol table to write 6502 compatible opCodes that when run preform the various functions in our grammar.

Example PDF

compiler_example.png

Capping i.e. Capstone

I worked as a part of a team to develop a prototype of a business application for Dr. Robinette, a professor at Marist. Github Link.

About:

Dr. Robinette had an idea for an application that an online presenter could use to be able to both read their speaker notes and appear to still be looking at the camera while using another application like Zoom. My team was tasked with building out a prototype of this application which included gathering requirements, utilizing team members time effectively, and managing a realistic project scope. As the lead programmer, I developed the bulk of the program which utilized a Python library, PySimpleGui, to build out the most basic form of the application as a template for future development.

ppn_example.png