PROJECT PORTFOLIO


MySpotify

In this project, I developed a personalized recommendation system to find music that matched current songs that I am listening to. I leveraged Spotify's web API to pull necessary information that could be used to perform content-based recommendation through cosine similarity.

Technologies: Python, Jupyter Notebook, NumPy, HTML 5, CSS, REST API

Code >>

Demo >>

Personal Portfolio

To be able to showcase my projects and to highlight my front-end design skills, I created this software engineering portfolio. I incorporated concepts from the Bootstrap Template and drew inspiration from portfolios published in Medium blog posts to illustrate my journey in software engineering.

Technologies: HTML 5, CSS, Bootstrap, JavaScript

Code >>

Demo >>

NumC: Matrix Operation Optimization

In this project, I developed a lightweight version of the python library numPy in C. I focused on developing optimizations for expensive matrix operations using techniques such as cache efficient organization, input vectorization (Intel AVX x256), and thread-level parallelism (OpenMP).

Technologies: C, Intel AVX Intrinsics, OpenMP

Code >>

Picking Pansies

In this project, I created a fully interactive video game called "Picking Pansies" where the objective is to collect all the real flowers within a certain number of steps. This end-to-end app includes an interactive and responsive GUI as well as a pseudorandom world generation offering over 1 million map instances to explore.

Technologies: Java, STDraw

Code >>

Demo >>

Virtual CPU

In order to better understand hardware memory management and assembly language, I developed a fully integrated CPU within the java-native program LogiSim that offers full compatability with the RISC-V Instruction set. The implementation is pipelined to perform a maximum of 5 operations per cycle and contains security measures such as flushing and stalling to eliminate architecture hazards.

Technologies: LogiSim, RISC-V Assembly

Code >>

Gitlet

In this project, I recreated a lightweight version of Git -- a version control system. This application allows for users to read, write, and store files in an easily accessible structure with the ability to recover and restore previous versions at the click of a button, contributing to a more organized and precise workflow.

Technologies: Java, I/O

Code >>

Bearmaps

In this project, I developed a lightweight version of Google Maps for the city of Berkeley. The web app utilizes optimized path-finding algorithms to provide users with responsive directions to their queried destimations through an easy to use GUI. Quality of life features such as location autocomplete and window resizing serve to offer the "Google Maps" experience in a lightweight application.

Technologies: C, Intel AVX Intrinsics, OpenMP

Code >>

Scheme Interpreter

To better understand how to build interpreters, I developed an interpreter for the lisp-based language Scheme in Python. The interpreter leverages the REP loop structure to parse Scheme code into python-readable instructions.

Technologies: Python

Code >>