Portfolio

Portfolio

I've (approximately) ordered these with my favorite and most technical projects first.

Coroutines for Linear Type Systems

Concurrency and Parallelism Project

  • Defined formal semantics for a Rust-like language with linear typing rules using the K framework
  • Added references and ownership of values, and support for run-time checks for single mutable references and multiple immutable references
  • Introduced syntax and semantics for asymmetric, stackful, first-class coroutines in the language, with runtime checks for type-safety and ownership
Coroutines for Linear Type Systems

GQL Server

Capstone Software Engineering Project

An SQL database server with integrated version control, written using Rust and Protocol Buffers/gRPC. Features include:

  • SQL operations including: SELECT, INSERT, UPDATE, DELETE, ALTER, CREATE TABLE and DROP TABLE
  • SQL Modifiers such as: WHERE, GROUP BY, ORDER BY and LIMIT
  • B-Trees for Indexing
  • Creating, Reverting and Squashing Commits
  • Creating, Switching and Deleting Branches
  • Merging Branches, with conflict resolution policies
GQL Server

Heavy Imp

Programming Languages Project

  • An interpreter for a simple imperative language in Rust using heap allocations
  • Includes a type-checker and evaluator, ensuring that type-checked programs do not fail
  • Tested using randomly generated programs to ensure the following properties of the interpreter:
    • A typechecked program implies a successful evaluation
    • A failed evaluation implies a failing type-check
  • Also includes a WASM compilation option, to run on the browser


VirtuCards

Software Engineering Course Project

  • Mobile game for groups of friends to play card games, along with a desktop game to act as shared common screen.
  • Includes additional features such as leaderboards, custom avatars, private messaging, custom cardbacks, song requests and animated reactions.
  • Built with Unity along with Google Firebase for account management and Photon for multiplayer gameplay.
VirtuCards

Shell Project

Systems Programming Course Project

Shell interpreter written in C++ that replicates functionality of csh and bash shells. Features include:

  • Piping and File Redirection
  • Exit Signal Handling
  • Subshell
  • Environment Variable Expansion
  • Wildcard Expansion
  • Command History
  • Path Completion
Shell Project

Solar Farms at Purdue

Final Course Project and Independent Study

  • Created artificial neural network models using TensorFlow to predict electric power consumed by a college building over a day.
  • Webscraped to create datasets for the building and weather conditions, power produced by a Photovoltaic cell in a day, and the weather conditions of the day.
  • Used models to calculate the number of PV cells required to meet the daily electric power consumption for the Purdue CS building, for a certain number of days in the year.
Solar Farms at Purdue

SimpleDB Optimizations

CS 44800 Course Projects

  • Added optimizations and new features to SimpleDB Database System, a multi-user SQL Database server written in Java.
  • Project 1: Introduced Most Recently Used policy for Buffer replacement, and measured performance gains for Most Recently Used and Least Recently Used policies across different queries and use cases.
  • Project 2: Implemented the Block-Nested Loop Join algorithm, with support for inequality and complex joins, as well as cost-estimation for the Block-Nested Loop Joins. Evaluated performance of Block-Nested Loop Join and other join algorithms across different databases.
  • Project 3: Added Forced Checkpoints to flush committed transactions to disk when server is idle. Integrated teammate's implementations of Fuzzy Checkpointing and Undo/Redo logging and assessed improvements in recovery and checkpoint steps.
SimpleDB Optimizations

This Website

Website rewrite using Next.js and MUI

This website is a complete rewrite of my previous website. It uses Next.js for server-side rendering and MUI for styling. It additionally uses graymatter and MDX to parse and render markdown files for the blog.

This Website

Trumpet Hero

UncommonHacks 2020 Submission

  • Used Leap Motion's Python Libraries with a Leap Motion sensor so that the game could detect finger presses.
  • Utilized Pygame Library to create a rhythm game that used Leap's Motion Sensors as input.
  • Integrated a Python MIDI library to convert songs to notes mapped as finger combinations for the game.
Trumpet Hero

AidFirst

Winner of Best Use of Google Cloud in BoilerMake 2020

  • An instant guide to First Aid, helping users identify injuries and telling them the steps to perform first aid. The injury is identified based on camera photos using a trained model.
  • Used Flutter to build the app, along with Google Cloud Vision to train the AI and make predictions
AidFirst

Algorithm Visualization

Sorting Visualizations in C++

  • Created visualizations for various sorting algorithms, such as Merge Sort, Quick Sort and Shell Sort, using olcPixelGameEngine library in C++.
  • Additional progress on visualizations of Graph and Maze algorithms.
Algorithm Visualization

EcoHunt

Winner of EcoMake 2019 Hackathon

  • Online competitive scavenger hunt game for finding and picking up trash located by cameras
  • Trained Azure Custom Vision API identify images of trash on sidewalks and uploaded photos to Google Firebase
  • Designed frontend of website with HTML/Bootstrap, and coded backend with ASP.NET framework in C#
EcoHunt

MIDI File Editor

Programming in C Final Project

  • GUI built using GTK in C to perform alterations to song files, such as changing the speed, instrument and notes.
  • Implemented in C parsing of binary .midi file into data structures, as well as creating of a library from all the .midi files in a folder.
MIDI File Editor

SpoilerFree

BoilerMake 2021 Submission

  • Helps compile a list of shows watched, either from Netflix or manually with a lookup.
  • Extension finds videos which have content related to any of the shows on the list and blocks them, both replacing the image with a warning and the title with a blank.
SpoilerFree