Projects
A mix of coursework, side projects, and co-op work. Click "Read more" on any card for details.
Expense Management System
A full-stack web application that allows users to track their spending and manage their finances by providing a dashboard to view a summary of their spending patterns as well as a detailed view of individual transactions.
Highlights
- ▸ Designed and planned the UI using Figma before writing any code.
- ▸ Used Spring Boot for the backend — its built-in ORM modules made communicating with the database much simpler.
- ▸ Built the frontend with React and Tailwind CSS.
- ▸ Chose Vite as the bundler because it trims unused modules and compresses the output, improving responsiveness.
- ▸ Used PostgreSQL for data persistence, chosen for its reliability and suitability for the project scale.
- ▸ Containerized the entire application with Docker to keep it portable and cloud-provider agnostic. Deployed on Render.
Real Time Data Streaming Pipeline
0A pipeline that constantly makes requests at intervals to the GitHub API and performs streaming operations on the data to display useful analytics on a dashboard.
Highlights
- ▸ Developed a streaming pipeline that displays real-time analytics of GitHub repositories on a dashboard.
- ▸ Used Docker containers to deploy the Spark cluster for distributed processing of API requests.
- ▸ Designed the dashboard using Flask to display the analytics results.
- ▸ Used PySpark to perform relevant stream operations such as filtering, Map-Reduce, and aggregation.
- ▸ Used Redis as a local cache for data, chosen because the project was scoped as a local setup due to API rate limits.
Full Stack E-Commerce Website
A full-stack e-commerce site covering all three tiers: Presentation Layer (frontend), Business Layer (backend), and Data Layer (database).
Highlights
- ▸ Designed and planned the project using Figma.
- ▸ Used Spring Boot for the backend, taking advantage of its built-in ORM and dependency injection modules.
- ▸ Built the frontend with React and Tailwind CSS.
- ▸ Chose Vite as the bundler for its tree-shaking and compression capabilities.
- ▸ Used PostgreSQL for data persistence.
- ▸ Containerized each component with Docker to keep the system portable across cloud providers.
Association Rule Mining using Apriori Algorithm
0A Python script that takes a CSV file and finds association rules whose support exceeds a user-specified threshold.
Highlights
- ▸ Processes a collection of itemsets (Walmart dataset) to find interesting patterns in the data.
- ▸ Uses the Apriori algorithm to prune rules that do not meet the given support threshold.
- ▸ Generates association rules from the frequent itemsets that survive pruning.
- ▸ Uses a lift measure to discard misleading rules (lift ≤ 1.0).
Decision Tree Model Classifier
0A Python program that builds and trains a decision tree from a provided dataset to predict the class of unlabelled data.
Highlights
- ▸ A configurable threshold determines whether a node becomes a leaf or an internal node.
- ▸ Uses the Information Gain criterion to decide which attribute to split on at each node.
- ▸ Performs recursive node splitting from the root until the termination condition is met.
- ▸ Core algorithm steps are split into helper functions for cleaner code and easier debugging.
- ▸ The trained tree classifies test data that lacks the target attribute.
Imbalanced Learning with SciKit
1A Python script that measures the performance of various classification models against an imbalanced dataset — one where the class distribution is heavily skewed, giving models misleadingly high accuracy.
Highlights
- ▸ Benchmarked multiple classifiers against each other: Decision Tree, KNN (k=1 and k=3), Gaussian Naive Bayes, Logistic Regression, MLP Neural Network, and Random Forest.
- ▸ Used Pandas DataFrames to preprocess and clean the dataset before training.
- ▸ Applied the best-performing model to an imbalanced credit card fraud dataset.
- ▸ Addressed the class imbalance problem to surface the minority class — usually the one of actual interest.
Connect 4 vs AI Agent
0A Python program that lets the user play Connect-4 against AI agents using different decision-making algorithms. Connect-4 is a solved game — the right moves can always beat the agent.
Highlights
- ▸ Implemented three AI algorithms: depth-limited MiniMax, Alpha-Beta pruning, and Expectimax.
- ▸ Alpha-Beta pruning speeds up MiniMax by pruning branches that cannot affect the final decision.
- ▸ Expectimax models opponent uncertainty by weighting moves with probabilities rather than assuming optimal play.
Dictionary Client
0A Java application that communicates with dictionary servers using the DICT protocol over TCP.
Highlights
- ▸ Uses the Java Socket API to establish TCP connections to dictionary servers.
- ▸ Implements the DICT protocol as specified in RFC 2229 to send requests and parse responses.
- ▸ Displays definition results in a GUI.