Projects

Web Applications

AIMS Website

AIMS Website

The official website for the Artificial Intelligence and Multiphysics Simulations (AIMS) lab.

Next.js • Tailwind CSS • TypeScript
SpeechMaps

SpeechMaps

SpeechMaps is an innovative navigation solution that optimizes your travel routes by dynamically reconfiguring them with AI based on real-time traffic incidents. Unlike conventional GPS applications that may not promptly update route conditions, SpeechMaps allows users to report accidents directly through voice input, ensuring immediate updates to avoid congested or blocked areas and uploading the incident for all users to see who are connected to the SpeechMaps network.

Groq AI • Next.js • Tailwind CSS ...
Gym.ai

Gym.ai

Using Google's novel Gemini 1.5 Pro technology, Gym.ai revolutionizes the way you train. With cutting-edge AI analysis, Gym.ai allows individuals to upload their own lifting videos and get personalized feedback on your exercise form. It can help you optimize your workouts, prevent injuries, and reach your fitness goals faster.

Gemini 1.5 Pro API • React • Tailwind CSS ...
Crypto Moon

Crypto Moon

Crypto Moon is a website that allows users to track the top 10 cryptocurrencies by market capitalization. It provides accurate, real-time data on coin prices, market caps, 24-hour price changes, and trading volume. The app was built with Express.js for the backend, Axios for making API requests to Coingecko API, and EJS for templating. Please note the link takes a while to load.

EJS • Node.js • Express.js ...
Personal Website

Personal Website

Thank you for taking the time to visit my website and learn more about my education, projects, and skills!

Next.js • Tailwind CSS • TypeScript ...
Blog Moon

Blog Moon

Personal Blog Website. Features post creation, read, update, and delete. Styled with Bootstrap 5. Well-styled and responsive, ensuring a good user experience on both desktop and mobile devices. Created using EJS, Node.js, and Express.js. Developed my own blog API using REST and Axios. Please note the link takes a while to load.

EJS • Node.js • Express.js ...
Sushi Restaurant

Sushi Restaurant

A website to promote a sushi restaurant using HTML and CSS. Modern, fully responsive HTML & CSS website with animations. My first front-end project.

HTML5 • CSS3 • JavaScript
Keeper App

Keeper App

A web app like Google Jamboard. Features note creation, read, update, and delete. Created using React and Material-UI. My first React project.

React • Material UI
Ask485

Ask485

A scalable full-stack search engine inspired by Google, built using a service-oriented architecture and distributed data processing. The system constructs a segmented inverted index from a large corpus of web pages using a custom MapReduce pipeline, implementing key information retrieval techniques such as tf-idf scoring, text normalization, and stopword filtering. A fleet of Index servers exposes REST APIs that compute relevance scores by combining cosine similarity with PageRank, while a Search server aggregates results across segments in parallel to deliver ranked queries in real time. The frontend provides a dynamic search interface with query input and adjustable ranking weights, backed by a SQLite database storing document metadata such as titles, URLs, and summaries.

Python • Flask • MapReduce ...
Insta485

Insta485

A full-stack Instagram-inspired web application rebuilt with server-side and client-side dynamic rendering. Leveraging React and asynchronous REST API calls, the app delivers a seamless user experience with features like infinite scroll, real-time likes and comments, and double-click interactions—without page reloads. The backend, powered by Flask and SQLite, exposes a robust REST API with authentication, pagination, and CRUD operations, while the frontend dynamically updates the DOM to create a highly responsive and interactive social feed.

React • JavaScript (ES6+) • Flask ...

Data Science

Who is the ATP Superstar?

Who is the ATP Superstar?

The Association of Tennis Professionals (ATP) is the main governing body for men's professional tennis and the ATP tour is a worldwide tour with a series of tournaments consisting of the best tennis players around the globe. In our dataset, we have 74906 matches spanning across 2000-2024. Ultimately, the question we plan to investigate further in this project is: How strongly do pre-match player statistics, such as rank, age, height, and seeding predict the match winner? This question delves into the core predictability of tennis matches based on readily available player information before the match starts. Also, it explores fundamental factors often discussed by commentators and analysts.

Python • Pandas • Numpy ...
College Football Data Analysis and Predictive Model

College Football Data Analysis and Predictive Model

Leveraged Pandas and NumPy to extract and clean data, ensuring consistency and handling outliers. Performed Exploratory Data Analysis (EDA) using Matplotlib to uncover hidden trends and patterns within the dataset, resulting in a 12% increase in model accuracy by identifying critical metrics and optimizing input parameters. Developed a neural network using PyTorch to predict a team's likelihood of success, achieving an 88% testing accuracy and perfectly predicting the top 3 teams in the AP CFB rankings.

Python • Pandas • Numpy ...

AI / Machine Learning

Social Media Sentiment Analysis

Social Media Sentiment Analysis

This project presents a comprehensive approach to sentiment analysis of nuclear-related social media posts using large language models. An automated web scraping solution was implemented, which extracted 120,000+ posts on Instagram Threads—originating from the United States—from 83 nuclear-related keywords using Playwright, a Python automation library. An interactive data dashboard to display real- time sentiment statistics was developed by integrating an automated data pipeline that dynamically updates the displayed statistics based on newly collected social media interactions. Overall, the study found that most online sentiment toward nuclear power is negative.

Python
Real vs. Fake Face Detector

Real vs. Fake Face Detector

Built and trained an EfficientNet-B5-based CNN model on a dataset of 140,000 face images, achieving a 97% validation accuracy in detecting photoshopped images. Enhanced model performance and accuracy through meticulous data preprocessing and augmentation techniques, including color jitter and random horizontal/vertical flips, resulting in a 14% improvement in validation accuracy. Utilized the Grad-CAM visualization technique to identify key facial features used by the model, then using that data to continuously optimize performance by fine-tuning the model's hyperparameters.

Python • PyTorch • EfficientNet-B5
Multilayer Perceptron (MLP)

Multilayer Perceptron (MLP)

Developed a Multilayer Perceptron from scratch. Optimized training efficiency with advanced algorithms for back-propagation and gradient descent, significantly reducing computational time and resource usage.

Python
Piazza Topic Classifier

Piazza Topic Classifier

Automatically classifying posts from the EECS 280 Piazza forum using natural language processing and machine learning techniques. Essential data structures such as binary search trees and maps were implemented, alongside the application of recursion, function objects, templates, and custom comparators. The solution efficiently identifies the subject of posts by analyzing their content and utilizing a bag-of-words model within a supervised learning framework.

C++

Computer Science

Sharded KV Store with Paxos

Sharded KV Store with Paxos

A fault-tolerant distributed key-value storage system that horizontally scales via sharding and achieves strong consistency using Paxos-based replication. The architecture consists of a centralized shard master (also replicated with Paxos) that dynamically assigns shards to replica groups, and multiple shardkv groups that serve client requests while maintaining linearizable semantics. The system supports reconfiguration through Join, Leave, and Move operations, carefully coordinating shard transfers between replica groups without violating consistency. Each replica group logs both client operations and shard movements through Paxos to ensure a globally consistent order of execution, even during concurrent updates and rebalancing. The implementation handles duplicate request detection, inter-group shard migration, and strict single-copy semantics, mirroring core ideas from large-scale systems like Bigtable and Spanner.

Go • Paxos • RPC ...
Paxos-based Key/Value Service

Paxos-based Key/Value Service

A fault-tolerant distributed key/value storage system built on top of a custom implementation of the Paxos consensus algorithm. The system eliminates the need for a centralized coordinator by allowing any replica to accept client requests while ensuring all operations are executed in a globally consistent order. A layered architecture separates concerns between the Paxos protocol, a replicated state machine (RSM) log, and the application-level key/value store. Each client request (Get, Put, Append) is recorded as an operation in a replicated log, guaranteeing linearizable consistency and at-most-once semantics even under unreliable networks, message loss, and partial failures. The system supports concurrent consensus across multiple log instances, efficient memory reclamation through instance forgetting, and robust duplicate request detection to handle client retries across replicas.

Go • Paxos • Concurrency ...
Primary/Backup Key-Value Service

Primary/Backup Key-Value Service

Designed and implemented a fault-tolerant distributed key-value storage system using primary/backup replication coordinated by a centralized view service. Built a dynamic view management protocol that continuously tracks server liveness via heartbeat (Ping) RPCs and safely promotes backups to primary while preventing split-brain scenarios through strict acknowledgment rules. Engineered a replication pipeline where the primary forwards all client operations (Put, Append, Get) to the backup to maintain strong consistency and linearizability, ensuring exactly-once semantics despite client retries and network failures. Developed mechanisms for state transfer, allowing newly joined or recovering backup servers to receive a full snapshot of the key-value database along with deduplication metadata. Carefully handled edge cases such as server crashes, restarts, and network partitions, ensuring that at most one primary is active at any time and that stale replicas are invalidated upon rejoining the system. Leveraged Go concurrency primitives and RPC-based communication to coordinate multiple servers under failure-prone conditions while maintaining correctness and availability.

Go • RPC • Fault Tolerance ...
MapReduce Framework

MapReduce Framework

Built a fault-tolerant MapReduce framework from scratch in Python, enabling distributed execution of large-scale data processing jobs across multiple worker nodes. Designed a Manager–Worker architecture with custom TCP/UDP socket communication for job scheduling, worker coordination, and heartbeat-based failure detection. Implemented streaming map and reduce pipelines using subprocesses to ensure O(1) memory usage, along with hash-based partitioning and external sorting for scalable data shuffling. Engineered automatic task reassignment for failed workers and a concurrent scheduling system that maximizes parallelism while maintaining correctness across non-deterministic execution.

Python • Sockets (TCP/UDP) • Multithreading ...
LC-2K Cache Simulator

LC-2K Cache Simulator

Implemented a cycle-integrated LC-2K cache simulator supporting configurable block size, associativity, and set count. Modeled unified instruction/data cache with write-back and write-allocate policies and LRU replacement. Handled instruction fetch, load, and store requests through a cache_access interface with correct miss handling, block transfers between memory and cache, and dirty eviction logic. Logged all cache-to-processor and memory transfer actions while maintaining accurate cache state and statistics.

C • Computer Architecture • LRU
LC-2K Pipeline Simulator

LC-2K Pipeline Simulator

Built a cycle-accurate LC-2K pipeline simulator modeling IF, ID, EX, MEM, and WB stages with full pipeline register state tracking. Implemented data forwarding and load-use stalling to resolve hazards, along with branch prediction and squash logic for control hazards. Ensured correct halt behavior at MEM/WB stage and simulated non-forwarding register file timing. Focused on accurate cycle-by-cycle execution of overlapping instructions.

C • Computer Architecture
Advanced Assembler and Linker

Advanced Assembler and Linker

Built an LC-2K assembler and linker for multi-file programs, handling label resolution, symbol/relocation tables, and executable generation. Also implemented a recursive assembly function using stack frames and JALR to compute combination(n,r), demonstrating low-level control flow, memory management, and function calls.

C • Assembly
Assembler, Simulator, and Assembly-Language Multiplication

Assembler, Simulator, and Assembly-Language Multiplication

Built a full LC-2K toolchain including an assembler, simulator, and assembly multiplication program. The assembler translates LC-2K assembly into machine code using a two-pass label resolution and encoding process with strict error checking. The simulator executes LC-2K machine code by decoding instructions, managing registers and memory, and simulating control flow until halt. The assembly program performs efficient shift-and-add multiplication of two 15-bit integers under tight cycle and size constraints.

C • Assembly
Pokemon

Pokemon

Implemented algorithms to solve the Traveling Salesman Problem (TSP) in a graph represented by x-y coordinates, utilizing a branch and bound method for optimal solutions and exploring the farthest insertion heuristic for near-optimal results. Calculated optimal paths and connections between vertices, ensuring minimal total edge weight by leveraging appropriate data structures and Prim's Algorithm. These methods collectively addressed the challenge of efficiently finding both exact and approximate solutions to TSP within given performance constraints.

C++
281Bank

281Bank

Designed and implemented a real-time bank wire transfer simulator for 281Bank, leveraging multiple data structures for efficient processing of accounts, transactions, and queries. The simulator supports various operations such as user login/logout, balance checks, and placing transactions, while ensuring fraud detection and real-time gross settlements. It handles complex transaction scenarios with transaction fees, loyalty discounts, and unique query functionalities. Emphasized the selection of appropriate data structures, runtime and storage optimization, and real-time transaction integrity, with the ability to process operations efficiently even under high load while ensuring accurate and secure transaction records.

C++
Stock Simulator

Stock Simulator

Designed and implemented a real-time stock market simulator using priority queues and deques for efficient data handling and market trend analysis. Acquired skills in stream-based algorithms and running median calculations, enabling the identification of optimal trading strategies in different market conditions.

C++
Back To The Ship

Back To The Ship

Created a maze-solver to navigate a 3D maze on a space station using breadth-first search (BFS) and depth-first search (DFS) algorithms with a focus on map and coordinate list mode input/output. Implemented BFS and DFS using a search container, handling command-line arguments with getopt_long(), and validating input. The maze included walls, floors, starting and ending points, and elevators that connect different levels. Generated the appropriate path from the starting location to the spacecraft hangar by marking the route taken in the specified format. Emphasized efficient algorithm implementation, error checking, and good coding practices.

C++ • Depth First Search (DFS) • Breadth First Search (BFS)
Emacs Clone

Emacs Clone

Developed a terminal-based text editor utilizing doubly-linked lists for efficient text manipulation. Implemented dynamic memory management and iterator functionality to support features like cursor movement, text insertion, and deletion. Built and test a TextBuffer class, ensuring robust performance through unit testing and interactive debugging, ultimately creating a functional, efficient text editor from scratch.

C++
Euchre Simulator

Euchre Simulator

Recreated the popular game Euchre on C++.

C++ • OOP