top of page

Programming Projects

Digital projects or those requiring code



Generational Machine Learning

May 2021For a final project in my advanced computer science class, I wrote a machine learning algorithm to enable virtual "cars" to learn to drive. Given sonar-like distance data at 5 angles fed into a neural network, multiple generations would be simulated and improved through a survival-of-the-fittest method. 



Platformer Game

Mar. 2021 Also as a project for my advanced computer science class, I wrote and animated a multi-level platformer game with from scratch (excluding graphics/interfacing libraries). Collisions are defined mathematically and it a tile-based level system with a variety of functional tiles. Having been an avid Scratch user, this was very reminiscent of my elementary school years programming similar (albeit far simpler) types of games.



3D Rendering Algorithm

Aug. 2021Though the game it was designed for was never completed, I wrote a 3D orthographic voxel renderer for a block puzzle from scratch as a personal challenge. Color, lighting angle, and perspective are all controllable parameters. Unfortunately, it is voxel-based, and doesn't work with meshes. The render system is also fairly unoptimized and inefficient, though the method of drawing the shapes on screen may influence that as well.



Tetris in Java

Nov. 2019As a way to learn to use graphics in Java in 9th grade, I l taught myself the rules of Tetris and subsequently programmed it within the same day. Though not as smooth as the original game, it functions and is playable nonetheless.

IMG_20211026_133519 - Copy_edited.jpg


Mandelbrot Set on TI-Nspire

Apr. 2022Simply out of mathematical curiosity, I wrote a program to render the Mandelbrot Set, a infinitely complex fractal, on my calculator, a TI-Nspire CX II.



Conway's Game of Life

Jul. 2022Interested in the emergent complexity from disorder that is a cellular automata, I programmed John Conway's Game of Life in Java with toroidal topology (think Pacman). It has the ability to speed up time, take single steps, and alter the game rules to find other emerging patterns. I also implemented a color-based "age" system to visualize how long a tile has been alive, with green being youngest and grey being oldest.

bottom of page