Introduction

This is a collection of some of my more recent projects, including my personal, course, research, and TA projects. Some of the projects are unfinished and others are still in the planning phase. I have chosen to limit it to my more technical projects, but please feel free to reach out to me if you want to learn more about these or any other of my projects.

Personal Projects

rtop

This project serves two purposed for me. The first is a chance to learn rust, and the second is to create a "pretty" activity monitor similar to vtop that doesn't rely on node. I am interested in learning rust because of the similar control it has to C, while being much safer. This project is still in the initial phase, so the code is not yet available online, but it will be posted soon.

SoundBoost

This project started out as a personal project, and then turned into my senior design project, but I will include it here. The original goal of this project was to design a similar product to the Here One smart headphones. The project morphed over time, and as part of adapting it to a senior design project, we decided to team up with Harris Corporation, and focus on the noise canceling aspects. Harris was looking for a product that would be able to reduce noise without removing the human voice. We ended up creating an algorithm that was able to do this, however we were unable to implement it within the power restrictions on the given device. For this project, I was in charge of the micro-controller and codec programming. We used an ARM Cortex-M4 processor and an analog devices codec. This was a very satisfying project to work on, and was a great way to test my knowledge and skills with embedded systems design.

Python Pack

This is a rather old project, back when I first starting college, and first learning Python. This project consists of a set of scripts originally intended for running on my Raspberry Pi. Included in this are scripts for parsing a dot file, getting the IP address of a given domain, finding the geographic location of an IP address, a reverse phone lookup, a pushbullet script, and a weather script. As part of this I also wrote my own implementations of ping and traceroute as a learning experience. I later added a script that checks a list of web pages for changes, and a set of scripts for running on a Windows Surface Pro running Linux. I will be the first to admit that these are far from the best scripts, and most of them could have better documentation, however they were useful in helping me learn.

gameboy-py

This project is and was a bad idea. I started this after taking a computer architecture and emulating a simple five stage pipeline processor in Verilog and I was interested in trying a similar project from a very high level language. This was also one of the first "larger" personal projects I worked on, and it made me realize the importance of planning out a project ahead of time and making sure that the project has an easy to use an maintain structure. This project was not planned, and was not structured well at all. This project was abandoned, and I have no plans to return to it, but it was a great learning experience.

Course Projects

Traffic Light Controller

This was the first real project I did in a hardware description language. This project was done as part of a logic design course and was programmed and tested on an Altera-DE2 FPGA development board. The traffic light controller had two different modes, one where it changed the lights entirely based on time, and the other where it only changed if a car was waiting at an intersection. I quite enjoyed working on this, and this project is what made me decide to focus on embedded systems and FPGAs for my degree.

MIPS CPU

These projects were done as part of my computer organization and architecture courses. In the first course we built a simple pipelined MIPS processor in Verilog. In the second class we re-implemented that simple pipelined processor as the first project, and then expanded it to contain memory and instruction caching, register renaming, and out-or-order execution. The final version of this project was by far the hardest class project I have ever worked on, however it was thrilling to work on, and I enjoyed watching all of the pieces come together to create a working project. I do not have the final code available online at the request of the professor, as the project for this course is the same every year, however I am always happy to talk about it.

Finite Element Method on GPU

This project was done for a GPU course. In this I parallelize computations for the Finite Element Method and tested the results on a handful of publicly available data sets. I implemented the program serially, using C++11 threads, and on a GPU using CUDA. The end results indicated that this problem was best left to CPU calculations, but it was a good look into using CUDA to solve programming problems.

Teaching Assistant

These are the classes where I was a TA and what I was responsible for.

Electromagnetic Waves

I was a Lab TA for this course, responsible for setting up the lab stations, answering questions, and grading lab reports.

Microcontrollers and Data Conversion

I was a head TA for this course, responsible for testing a modifying the labs to work with the newer equipment, answering questions, and grading lab reports. For this course the students worked with PIC microcontrollers.

Logic Design

I was a head TA for this course, responsible for testing a modifying the labs to work with the newer equipment, answering questions, and grading lab reports. For this course the students worked with Altera FPGAs as well as building circuits using logic gates.