Projects

Selected course projects from UC San Diego. Code for course assignments is available on request.

Glowing balls piling up under gravity in the GPU particle simulation

Real-Time GPU Particle Physics Simulation

Fall 2025

CSE 167 · Computer Graphics · Individual project

A 2D physics engine that runs entirely inside a fragment shader. Shaders keep no state between frames, so each pixel of a feedback buffer stores one particle's position and velocity, letting the simulation carry state from frame to frame.

  • Penalty-method collisions against walls and other particles
  • Gravity and linear damping, integrated with semi-implicit Euler
  • Click to spawn new particles in real time

Also on Shadertoy.

GLSLPhysics SimulationGPUWebGL
Try the live demo (click to drop balls) →

Rating Prediction for Book Recommendation

Fall 2024

CSE 158R · Recommender Systems & Web Mining

🏆 Ranked 3rd of 710 students

Predicted how users would rate books from a large interaction dataset, scored on a class-wide leaderboard.

  • SVD collaborative filtering, tuned by grid search over latent factors, learning rate, regularization, and epochs
  • Separate read-prediction model: a Random Forest trained on balanced positive/negative samples with popularity features
Recommender SystemsMatrix FactorizationPython
MRI scans with predicted (red) and ground-truth (blue) tumor bounding boxes

Brain Tumor Detection from MRI

Winter 2025

ECE 176 · Deep Learning · with Virakboth Hang

Test accuracy 81.9% → 94.0%

Detected and localized brain tumors in MRI scans, moving step by step from a linear baseline to deep detection models.

  • Classification: logistic regression (81.9%) → fully connected network → ResNet-10 with batch normalization (94.0%)
  • Localization: fine-tuned Faster R-CNN (ResNet-50 + FPN) to draw bounding boxes around tumors (red = predicted, blue = ground truth)
PyTorchCNNObject DetectionMedical Imaging
RTL schematic of the custom CPU

Custom 9-bit ISA CPU

Spring 2026

CSE 141L · Computer Architecture · Team project

All 10/10 test cases passed

Designed an instruction set and processor under tight constraints: 9-bit instructions, 8-bit registers, and only 512 instruction slots.

  • 14-opcode ISA, a SystemVerilog CPU, and a Python assembler
  • Ran 16-bit Hamming-distance and 32-bit multiplication programs on the 8-bit datapath
SystemVerilogISA DesignDigital Design