Java Projects

These are projects I have created over the course of my career, whether it be in school or on personal time. Some of these are written using the standard Java Library, whereas others are written using Processing, a graphics framework for Java. All source code is available for each project.

Standard Java

All projects in this section are created using only standard Java libraries.



This is a standard Craps game.

View Source

Pig Latin


This is a simple program where a string of words is converted into Pig Latin.

View Source

Reg-ex Demo


This program is a small demonstration of using Regular Expressions as a form of data validation. The user enters something into the field, presses enter, and, if the entry matches the regular expression, moves onto the next field.

View Source

Business Management System


This program allows a user to add, edit, and delete business contacts in a contact management system. It employs data validation, serialization, as well as de-serialization.

View Source

Contact Management System


This is similar to the last program, however, the user is able to create three separate types of contacts: Family, Friend, and Business. Each is stored in a unique list which the user is able to pick from.

View Source

Fighting Game


This program is a turn based game where players attack each other until one players HP reaches 0. Each player has 4 attacks to pick from, each dealing a different amount of damage as well as having a different chance to hit the other player. Players also have the ability to save and load a game.

View Source

Sodoku Solver


This program solves sodoku puzzles. It is run from the command line, and reads in puzzles given by the user. It is able to solve most puzzles in less than a second, regardless of size. It utilizes a variety of common solving techniques.

View Source



This is a clone of the game Minesweeper. It utilizes the MVC design pattern, and uses recursion to place bombs, mark cells, and generally keep the game running quickly.

View Source

Video Player

video player

This program plays videos specificied by the user. The user starts the program and opens a video file which is then played. The user is able to control the volume, as well as the current position in the video. This program utilizes the MVC design pattern.

View Source


All projects in this section are written in Java using the Processing framework. As such, they require that Processing be downloaded and included in the project path. Processing can be downloaded here



This program is a Tetris clone. The game is built on a grid system to check for other blocks and walls. Controls are A and D to move left and right, S to go down, W to rotate, and, if launched from the console, G to view the backend grid.

View Source

Random Terrain


This program is essentially a demo of Perlin Noise. A grid is drawn on screen, and z values are mapped using the noise function built into Processing. At the same time, y values are increased, giving the illusion of movement.

View Source



This program is a clone of the game Arkanoid. The ball bounces off the player controlled paddle and hits blocks which then disappear. This game was built as more of a demo, as a result the player cannot win or lose. Controls are A and D to move left and right, respectively.

View Source

Flappy Bird


This program is a clone of the popular mobile game Flappy Bird. The goal of the game is to keep the bird (ball) from hitting the pipes. This was also built as more of a demo, so instead of the player losing when the ball hits a pipe, the pipe simply turns red. The player cannot win or lose. Controls are spacebar to move up.

View Source

Paintball Target


This program is a small demo of a paintball target. The user shoots a paintball by clicking the left mouse button. The paintball's size is mapped to its z value, and is affected by gravity.

View Source



This program uses the union find algorithm to test how long it takes for a system to percolate, i.e. connect the top to the bottom. While the underlying algorithm is extremely effcient, the visualizer is not. The highest recommended value for this visual representation is 100.

View Source

Selection Sort


This is a visual demo of the Selection Sort algorithm. This is the slowest of the sort algorithms, as it has to check every element every cycle. As such, it will take quite a while to sort anything greater than around 50.

View Source

Insertion Sort


This is a visual demo of the Insertion Sort algorithm. Insertion sort is generally faster than Selection sort, however it is still slow to process large sets of data.

View Source

Quick Sort


This is a visual demo of the Quick Sort algorithm. Quick sort is a very fast algorithm that can quickly sort large data sets. It is used quite often, however, it can still be very slow in a worst case scenario.

View Source