PINTOS
September 2018 - October 2018
With a small team, added features to the threading system and extended user support for the educational operating system Pintos. Implemented priority scheduling as well as priority donation for locks. Also added an optional multi-level feedback queue scheduler (MLFQS). Enabled argument passing and added support for process control syscalls (exec, wait) as well as file operation syscalls (open, close, read, write). Written in C.
SMOKE SIMULATOR
April 2018 - May 2018
With a small team, designed an 2D smoke simulation based on the Navier-Stokes equations. Written in Three.js and WebGL, the simulation is based on a Eulerian grid and follows a pipeline of shaders to generate an interactive visualization. You can read more about this project and try out the simulation for yourself here.
IOS APP: SHOPSYNC
April 2018 - May 2018
Designed and developed an iOS app which allows users to create and maintain multiple shopping lists. The app itself is connected to FireBase to allow for storing and retrieving data.
Pathtracer
March 2018 - April 2018
In C++, used global illumination to render images by tracing light rays through a scene. Uses a bounding volume hierarchy to drastically improve efficiency. Allows the user to render several different materials (diffuse, glass, microfacet) and also optionally use a thin lens to incorporate blur effects. Can also render images with environment lighting. Read more on this here.
NON_BETWEENNESS ORDERING
Nov 2017 - Dec 2017
With a small team, designed an algorithmic reduction in Python to solve the non-betweenness problem. Given constraints of the form “a is not between b and c”, the slver constructs a valid ordering. The solution is a reduction to general SAT by modifying the given constraints. These constraints are then fed into pycosat, a Python general SAT solver. A valid solution is then reconstructed from these results.
ATAXX
Oct 2016 - Nov 2016
In Java, created a two-person board game and correlating GUI. Each player is assigned a color, with the goal being to turn all game pieces your color. Developed AI to make one-player games possible. The AI recursively analyzes all potential boards five moves ahead and chooses the most beneficial course of action, thus being able to detect a win 5 moves in advance.
ENIGMA
Sep 2016 - Oct 2016
In Java, developed a working enigma simulation to encode and decode messages. Utilized object oriented programming, with a broad rotor class and three subclasses for each specific rotor type (fixed, moving, reflector). Given a set of rotor configurations and a message, it will return the corresponding decrypted text.