My Projects

Performed in the top 3% of this class! FPGA SystemVerilog Quartus Prime ModelSim Testbench Game Design VGA USB Keyboard On-Chip Memory AES Decryption Logic Design
Data Visualization
View Projects
Remote Sensing Data Science Intern! D3.js pandas Python HTML JavaScript GeoJSON Bootstrap UIUC Major Distributions CSS Plant-based Dining Node.js Jupyter Notebook Produce Flow
Operating Systems
View Projects
Undergraduate Assistant for this class! x86 Assembly C Data Structures Interrupt Handling File System System Calls Paging PCB Synchronization Device Drivers Context Switching VGA
Full-Stack Web Dev
View Projects
Full-Stack Developer for Illini Foodies! AWS Cognito SQL MongoDB Neo4j DyanmoDB JavaScript HTML CSS Node.js Bootstrap jQuery React.js D3.js Illini Foodies Produce Flow

FPGA

Relevant Skills: FPGA SystemVerilog Quartus Prime ModelSim Testbench Game Design VGA USB Keyboard On-Chip Memory AES Logic Design
Relevant Coursework: Digital Systems Laboratory (ECE 385) Introduction to Computing (ECE 120)

Crazy Taxi (Spring 2019)

View this project on GitHub
Crazy Taxi gameplay

Inspired by Crazy Taxi at coolmathgames.com.

In this project, my lab partner and I recreated one of our favorite childhood games, Crazy Taxi, for the FPGA. You’ll need a VGA monitor and a USB keyboard to play our multiplayer masterpiece, but don’t worry if you don’t have access to these devices. I have pictures!

Our game, which is written entirely in SystemVerilog and C, utilizes the VGA monitor for display and the USB keyboard for user controls (WASD and the four directional arrows to support multiplayer). The main gameplay consists of two user-driven cars (Red and Purple) that dodge randomly generated traffic cones on a highway scene by jumping and switching lanes. If a car collides with a traffic cone, the other player automatically wins. Throughout the game, we also dynamically display the distance traveled by each car on the top of the screen.

All sprites used in the game are my original custom designs. To reduce our On-Chip Memory usage, we have written a Python script to map the colors used in our sprites to palettes so that our sprites only use 1 to 4 bits per pixel (1 bit in the case of text sprites). We have also implemented full collision handling which ensures that the cars cannot collide with each other or the road boundaries. In addition, we have implemented game scrolling so that the highway scrolls vertically as the players drive, which can be observed as the trees alongside the road scroll with world. To randomly generate the cone obstacles, we used a 3-bit Linear Feedback Shift Register (LSFR), where each bit corresponds to the state of a cone’s existence in each of the three lanes. Since we wrote modules to implement custom drawing routines for each sprite, we can easily remove sprites from the screen as well as detect collisions through the coordinates at which a sprite is being drawn.

Our game is controlled by a finite state machine with 5 states that represent: the start screen of the game, the custom transition that I have programmed to move the cars to their starting positions for the race, the game itself, the results screen which displays which player won, and the ending screen with the end game credits. Pictures of each of these states can be found below.

If you would like to discuss this project or the implementation, feel free to contact me! I have invested a lot in this game and would love feedback on it! 😄


Data Visualization

Relevant Skills: D3.js pandas Python JavaScript GeoJSON Bootstrap Jupyter Notebook Node.js HTML CSS
Relevant Coursework: Database Systems (CS 411) Data Structures (CS 225) Data Science (CS 225 Honors)

I'm a Remote Sensing Data Science Intern at Corteva Agriscience (Fall 2019, Spring 2020)

I'm currently a Remote Sensing Data Science Intern at Corteva Agriscience at the University of Illinois at Urbana-Champaign Research Park branch. I'm efficiently processing and visualizing large remote sensing datasets and raster images using Python, Bokeh, Rasterio, and Panel to develop an interactive and flexible dashboard with linked plots for farmers to explore local crop yields, weather data, growth cycle data for their own crops, and crop yield predictions for the upcoming season.

XS Consumer (Summer 2019)

Produce Flow refers to the global flow of produce across countries and regions. Through this series of original visualizations, we have created an invaluable analytics tool to study individual crop flows or country flows to allow users to explore data provided by the Food and Agriculture Organization of the United Nations. Visit the project website to learn more!

Plant-based Dining (Spring 2019)

View this project on GitHub

With my recent endeavor to move towards a plantbased lifestyle, I decided to create a visualization that would help new vegetarians and vegans find dining locations across the U.S. in their ideal price range and in a variety of cuisines. My team and I created this learning experience by designing a U.S. map visualization featuring custom tooltips that display further restaurant information (price range, city, cuisines) and and an easy-to-read legend to help users find restaurants in any price range.

UIUC Undergraduate Major Distribution (Spring 2019)

View this project on GitHub

In this project, my team and I used pandas to clean and organize a UIUC dataset that contained enrollment statistics for all majors on campus. We chose to focus on how the undergraduate enrollments for each major and each college have changed over the past 14 years. To do this, we used D3.js and JavaScript to create a slope graph to display the growth and fall of the number of undergraduate students enrolled for each major. I designed custom tooltips for each slope line that display the major's name and the overall change in enrollment counts for in-state, out-of-state, and international students with this major.


Operating Systems

Relevant Skills: x86 Assembly C Data Structures Interrupt Handling File System System Calls Paging PCB Synchronization Device Drivers Context Switching VGA
Relevant Coursework: Computer Systems Engineering (ECE 391) Computer Systems & Programming (ECE 220)

I'm an Undergraduate Assistant for ECE 391! (Spring 2019)

As a student in the class, I learned so much in office hours, so I chose to give back to the class by joining the course staff. I hold weekly office hours to help students master course material (x86 ISA, interrupt support, synchronization, file systems, VGA, scheduling) and overcome bugs and conceptual challenges when writing code. I also grade machine problems, exams, and the final operating system project demo. I am currently working on a project that uses decision trees to categorize Office Hours queue data from Spring 2019 by assignment. I hope to display insights on an interactive visualization that will be helpful to both the course staff and students.

Panic at the Kernel OS (Fall 2018)

In this project, my team and I built our own operating system in 3 months using x86 Assembly and C. I set up interrupt handling with assembly linkage for exceptions and hardware interrupts (keyboard, RTC, PIT). I also parsed the given read-only filesystem, provided support for all read-only filesystem operations (open, close, read) through system calls, and developed assembly linkage for system calls through the Interrupt Descriptor Table. Additionally, I implemented two system calls, execute and halt, which perform a context switch to run and return from user-level programs respectively. I also designed the process control block to contain a file operations jumptable and a file descriptor array so that we could handle multiple processes. Throughout the project, we created a comprehensive set of unit tests to ensure that all components were functioning as expected.


Full-Stack Web Development

Relevant Skills: AWS Cognito SQL MongoDB Neo4j DyanmoDB JavaScript HTML CSS Node.js Bootstrap jQuery React.js D3.js Data Visualization My Personal Website
Relevant Coursework: Front-End Web UI Frameworks and Tools (Coursera) Data Science (CS 225 Honors) Database Systems (CS 411)

Illini Foodies (Fall 2019)

We created a restaurant recommendation app for University of Illinois students! I used React, Node.js, and AWS (Cognito, Aurora, DynamoDB) to build an intuitive and clean interface for students to interact with our data. Visit the project website to learn more!

XS Consumer (Summer 2019)

Produce Flow refers to the global flow of produce across countries and regions. Through this series of original visualizations, we have created an invaluable analytics tool to study individual crop flows or country flows to allow users to explore data provided by the Food and Agriculture Organization of the United Nations. Visit the project website to learn more!

Personal Website (Summer 2019)

View this project on GitHub

This website was designed 100% from scratch! 🌻🎨🖌️ No templates, no themes. Just my imagination. 🌈