Frog-themed Self-Generating Platformer Game


Platfrogs is a classic vertical platformer game where the main character is a frog whose main goal is to soar to the skies. The aim of this project was to create a frog-themed vertical platformer game using the model-view-controller method of game design.

My partner and I decided to do this type of project because platformers are very nostalgic and familiar to us, and we wanted to look further into how one was programmed. Furthermore, we both think frogs are quite cute and since they're known for hopping, we thought they would be the perfect protagonists. We also wanted to gain some familiarity with the PyGame library, and we knew that creating a platfromer game would be a great way to explore its features.

Huffman Coding Algorithms

My team did an exploration on both canonical and standard Huffman encoding, as well as game theory tree algorithms for tic-tac-toe. Huffman coding is a type of prefix code that uses binary trees in order to efficiently encode messages through lossless data compression. Prefix codes (also known as prefix-free binary codes) have the property that no whole codeword is the prefix for any other codeword. This enables unambiguous parsing of a variable-length code, and was my main focus in the research project.

We wrote this paper as a way to more deeply understand the applications of trees, and ended up not only explaining but also implementing a working Huffman-encoding program in Python. The paper also explores the minimax algorithm for tic-tac-toe and the beginnings of how to implement a function that would recursively generate the tic-tac-toe game tree, however this was mostly taken on by a different section of the team.

Acoustic Modem Receiver

In this project, we implemented a receiver for an acoustic modem. The program takes strings, converts them to bits, and transmits them using a high frequency cosine wave that our receiver then decodes and filters in order to get the original message. We used MATLAB to implement the receiver, and created graphs of both the transmitted and received signals in the time and frequency domains.

Streaming Service Data Scraper

Finding the Superior Streaming Service

This was a data science project that I did with Gibson Njine. The goal of the project was to create a way to determine the best streaming service for an individual and visualize it in different ways. Our project analyzed the top five streaming services and considered their price, the number of movies they had in a certain genre, and the ratings that the movies in that genre have. That way, our results are customizable to peoples' preferences and can be applied to a wide audience. We got our data from the WatchMode API, which had many limitations, but it was still helpful for creating code that could scale to larger, more accurate datasets.


Coffee Making Robot


BaristaBot is a machine with integrated mechanical, electrical, and software components with the goal of making and showing the process of making coffee. This was a 6-week project for my Principles of Integrated Engineering class, where I took a lead role in project management, electrical design and power management, as well as website development.

Our machine used a three-tiered rotational design where the user would place the cup on the bottom tier and a servo-powered platform would rotate it through four stations: creamer dispensing, sugar dispensing, and coffee dispensing. In between the sugar and coffee dispensing stations, water was brought to a boil through an induction coil and passed through a filter where the Bot has dispensed coffee grounds. The user can choose if they want creamer and sugar through a touch-screen user interface that activates and deactivates the dispensing.

Current Mirror Differential Amplifier Analysis

Through a series of three experiments, we explored the characteristics of a current mirror differential amplifier circuit and compared them to a simple differential amplifier. The first experiment explored the voltage-transfer circuit characteristics with different values of inverting input. In the second experiment, we extracted the incremental transconductance, output resistance, and gain by sweeping the noninverting input around the inverting input in fine increments. Finally, in the third experiment we configrued the amplifier as a unity-gain follower with a 1nF capacitor between the amplifier output and ground. We then tested this circuit with both a small and large-amplitude wave as the input, and measured the output and gain for both step types.


Antenna Control Unit (ACU)

Project Lead

The ACU was originally a senior capstone project that was taken in by the OSSTP group after they graduated. My team is now further developing this antenna to track satellites, demodulate their signals, and allow for remote control through a user interface. Unfortunately there is not much more I can say about this due to confidentiality agreements.

Equivalent Power Flux Density Research

My team is researching and developing equivalent power flux density (EPFD) software in MATLAB in order to quantify interference from NGSO satellite communications systems into GSO satellite networks and Earth stations. Unfortunately there is not much more I can say about this due to confidentiality agreements.


Fourier tech for ice skating performance


For this project, we used Fourier analysis methods in order to create a framework for software that can act as a digital coach for people learning to ice skate. We collected the data by attaching a phone with an accelerometer to the foot of multiple test subjects, and collecting acceleration data from them as they skated. We then took the discrete Fourier transform of the periodic data in all three directions and analyzed the difference between beginner, intermediate, and advanced skaters in order to extract trends in more vs. less experienced skaters.

Principal Component Analysis for Optical Character Recognition

Handwriting Recognition

This report analyses the creation of a computer software capable of recognising characters from pictures and translating them into strings. We wrote the code to address and solve any problems that frequent travellers may have when travelling to other countries, or any issues that someone may have with translating non-digital text. Previously, in order to translate text, one would have to manually transcribe it into an app, which often became tedious and time-intensive. Using Principal Component Analysis, our system provides a viable alternative to this by automatically detecting text in images.

Link to Paper

Bio-Inspired Mechanical Hopper

Bufflea the Vampire Slayer

The hopper is a bio-inspired mechanical design project in which we went out into nature and found hopping animals whose jumping mechanisms to mimic as inspiration for a hopping machine. My project was inspired by a flea's, which is one of the animals with the largest jump in relation to its size. Fleas jump by compressing an elastic pad made of a protein called resilin, which essentially acts like a spring to propel their bodies into the air. I mimicked this by designing a flea-esque body and using a spring between the "thigh" and "calf" that would be compressed in the starting position and would eventually launch the hopper into the air. The trigger mechanism comprised of a suction cup attached to the hopper that would keep it stuck to the ground in the compressed position for a few seconds, before unsticking and allowing the hopper to release all of the energy stored in the spring.