CUDA Flocking - Fall 2017
Using Craig Reynolds' Boids algorithm, I simulated hundreds of thousands of virtual agents simultaneously. This project was parallelized with Nvidia's CUDA API, then accelerated with a uniform grid and grid-dependent boid memory coherence, 
Assembly 2048 - Fall 2015
The popular puzzle game 2048. Written in Assembly code held together by C. 
Made for CIS 240: Computer Systems using the TRAPs I made to display rectangles and numbers, as well as the very basic OS that I put together.
OCaml Paint - Spring 2014
A Microsoft Paint clone written in the functional language OCaml. I was given a library which allowed me to render text and elipses to the display, but had to implement other shapes, the listener grid, clickability, radio buttons and the click-drag dynamic myself. The biggest challenges were getting my head around controllers and figuring out the Undo/Redo functionality.
N-Body Simulation - Spring 2014
An N-Body gravity simulation written in OCaml. Thought I had already built a similar program in Java my freshman year, this program was more difficult due to the number of bodies we had to support.

I wanted to avoid the elementary method of checking the force on each body by each body, which would present a runtime O(n^2). I instead recursively subdivided the canvas into cells containing either 0 or 1 bodies. Each subdivision calculates the mass and location of its center of mass, so that each body needs only use nearby stars and the precomputed centers of mass to determine the force acting upon it.
Back to Top