I've been lucky enough to contribute to a number of projects during my time at the University of Washington. Here are some highlights.
Crabble: Assistive Robot for In-Person Scrabble Play
As part of my undergraduate capstone, I worked in a team of four on a project themed around assistive robotics. We worked with the Stretch 3 mobile manipulator to allow for assisted in-person Scrabble play for people experiencing severe hand impairments. Along with being the team's manager, I familiarized myself with the Stretch 3's hardware and ROS2 to implement robot motion and environment modifications.
By the end of the 10-week capstone, we were able to play a full game of Scrabble with a test user! We documented the ideation and implementation process on our blog; the link is below.
MiniJava Compiler
In a quarter-long project that touched on all elements of compilation: scanning, parsing, semantics checking, and assembly generation, I worked with a partner on a compiler for a subset of Java. The compiler supports complex constructs such as objects, inheritance, and function overriding.
Code for this project is not publicly available, but the grammar of the supported language is below.
5-Stage Pipelined CPU in Verilog
I worked with a partner to write a CPU for a subset of ARM instructions including arithmetic, memory operations, and branches. The CPU was handwritten in SystemsVerilog at the gate level, including a from-scratch register file and ALU. The CPU is 5-stage pipelined with delay slots.
Code for this project is not publicly available.
Arduino-Based Theremin-Playing Game
A partner and I worked together to implement a theremin-like instrument using an Arduino, a speaker, and an ultrasonic sensor, then incorporated other hardware including an LCD display to turn it into an interactive game. We utilized FreeRTOS to handle task scheduling, pausing, and resuming.
The game plays a random note, then gives the user a fixed amount of time to play it on the theremin. It tracks the user's score over 10 rounds.