Throughout the last few years, I’ve worked on many projects, the best of which are highlighted here!


Another classmate and I designed a game, where each time a player started, they had to enter a random seed, which was read in and used to create 3 levels of our game. Each level featured a maze of rooms and hallways with items for the player to pick up and use, obstacles that the player had to cross, and opponents that the player had to defeat, and in each level, the player moved around using specific keys on their keyboard. The game ended when the player retrieved a key and used it to unlock the door to the next level. Our game also allowed you to quit, save, and reload mid-game, also by typing specific keys on the keyboard.


I generated a map of Berkeley and turned it into a graph with nodes representing various locations around the city and edges representing different routes between locations. Using this graph, I also created an A* algorithm to find the shortest routes between the different nodes, or different locations, in Berkeley.


I built a lexer that broke down C code into individual tokens.


As a continuation of the above lexer project, I built a parser that took the tokens from the lexer and built an abstract syntax tree in order to parse the inputted tokens.

Code Generator

As a continuation of both the lexer and the parser, I built a code generator that interpreted the abstract syntax tree returned from the parser and generated RISC-V assembly code that represented the original C code passed into the lexer.

Unfortunately, since all of these projects were class projects, I can’t publicly release my code, but my private Github repository and the code for any of these projects is available upon request.