Kyle Marino
Electrical Engineering
University of Southern California, 2019 - 2023
About Me
Hi, I'm Kyle!

I'm a student at USC studying Electrical Engineering. I love working on personal projects–ranging from pure programming to math to physical builds as well.

Outside of personal projects, I am also involved in USC's rocket propulsion lab. We are an undergraduate student laboratory that creates and tests experimental rocket technologies and propulsion hardware. Last year, we set the altitude record for an amatuer organization when we became the first group to reach the Karman Line, the recognized boundary of space. I lead the FPGA team, where we are currently designing a high resolution data measurement unit.

In addition to engineering projects, I have been rock climbing for the last three years. I love climbing outdoors when I can, and also compete for the USC climbing team.

More of my accomplishments can be found on my resume.
Personal Projects
Here are some of my favorite personal projects I have worked on over the years!

Starting in 2016, I built my own self-stabilizing quadcopter entirely from scratch. It is powered by an Arduino Uno, and communicates with a Raspberry Pi to recieve flight commands. The drone self calibrates each moter via photoelectric encoders to ensure accurate thrust responses. It also uses a kalman filter to clean the IMU data to improve sensor reliability. While this is still an ongoing project, these features create an ultra-smooth final flight.

Physics and Rendering Engine
This project is a 3D rigid-body physics engine written on top of a previous rendering engine that I built in Java. Once again, this is entirely written from scratch apart from the LWJGL API. The GPU accelerated collision engine uses a simple non-differential algorithm to determine point intersections, offering an improved performance over conventional approaches. This engine can model any 3D geometry with an estimated mass and inertia distribution given that the computer has adequate specifications. Here is a demo of some simulations.

EquationSolver is a Java program that can approximate imaginary solutions to almost analytical equation. It uses an approach inspired from the YouTube channel 3blue1brown. I developed my own library to handle complex number operations and designed a compiler that would parse a user-inputted equation into quickly executable instructions. This was an improvement that I thought of after designing a similar system for Somsed. This program generates an image that describes the translation of the input space to the output space of the equation that it's solving.

TerminalSplitter is a GUI library written in C/C++ that splits the traditional command line program output into three separate windows. This was created to monitor and send separate commands to multiple processors for my drone project. Each window is multithreaded and runs independently from the other ones. This is designed to be easily implemented into any C/C++ program where splitting the terminal output is useful.

Pseudo Code is an educational web application whose purpose is to introduce programming to novices in an easy-to-understand way using a English-to-code parser. It won the "Best Web Application" award in San Mateo Hacks hackathon in 2017.

Somsed is a web-based graphing calculator that can graph functions, solve systems of equations, row-reduce matrices, and perform statistical regressions.

Snake Solver
Snake Solver is a brute force algorithm that runs a depth-first search over the solution space of the flash game Snake Slider. This runs a full implementation of the flash game and can solve even the most complex levels in a few minutes.

GameSelect is a python program that selects the next board game to play based on player count, time, game rating, and when the game was last played. It also stores individual preferences from the webiste boardgamegeeks and factors those in as well.
Design Experience
Embedded Software Design
Object Oriented Programming
Digital Logic Design
Version Control
PCB Design
Protocol Layer Design
Data Processing