Freshman Year

Principles of Computer Science I

Tic Tac Toe

Create an interactive GUI to play a basic 3x3 Tic-Tac-Toe game. This was the final project of the semester, where we learned how to make GUIs in Scala, along with making a basic Tic 

One Time Pad (OTP) Encryption

A One Time Pad (OTP) cipher is a method of encryption that is completely unbreakable (if done correctly). It is very similar to the "offset" or "Caesar" cipher that I did previously in class. However, instead of using the same offset for every character, in an OTP a different, randomly chosen offset is used for each character during encryption. Because the offsets are all different and random, without knowing which offsets were used in which order it is impossible to decrypt the message. In order to actually decrypt the message you must know what offsets were used, which are often called the keys.


This was a script that generated a Minesweeper board. It accepted 3 user inputs from STDIN: the number of rows, number of columns, and number of mines desired for a random minesweeper game. I was able to generate a grid of any size and place the correct number of mines within the grid. 

Principles of Computer Science II

Space Game

This was a project we worked on over the course of the semester, slowly updating and improving it throughout the year. Written in Scala, it is essentially a Galaga-like game that features a ship that moves around the screen, shooting at enemies. It included different types of enemies and waves, as well as a time-reversal system that allowed the user to move back in time.

Unit Conversions

This was a very basic project in which we were to write a program that would take in a number and a unit, and convert the value into a different unit.

Deque and other Abstract Data Types

Throughout the semester, we created various Abstract Data Types in Scala. While we made the typical Stack and Queue, we also made a Double-Ended Queue, and a Double-Ended Priority Queue.