Below is a selection of projects of which I am most proud. These projects were done throughout the course of my education at Iowa State University (ISU).
My engineering experience at ISU is capstoned with my senior design project - a two semester group project. The Electrical and Computer Engineering (ECpE) Department at ISU has tasked my group of six engineers (two electrical engineeers and four computer engineers) with creating a showpiece that they can show to prospective ISU students - a MIDI Zeusaphone. A Zeusaphone is a special type of tesla coil that produces music as well as electrical sparks. MIDI stands for Musical Instrument Digital Interface - it is a standard way to send digital musical messages. See the video below for an example of a Zeusaphone.
As the Technical Architect of the project, I am tasked with designing the overall layout of the end product. The Zeusaphone will have the ability to receive and play MIDI messages from a keyboard in real-time. It will also have the ability to play premade songs. To control the Zeusaphone, a microcontroller will be used. It will receive input music and control the Zeusaphone accordingly. This project has required my team to develop extensive design documentation, since it is an ambitious one. Since electricity is involved, we have kept safety our number one concern.
I have worked on the software that will receive external MIDI messages on the microcontroller as well. The microcontroller is the perfect opportunity for me to work on a blend of hardware and software, as that is what computer engineering really focuses on. I have learned a lot about the MIDI protocol and the drivers on microcontrollers that relate to audio. I have also had the opportunity to learn a lot from the electrical engineers on my team about the circuits that will drive the Zeusaphone.
See my team's website here: Senior Design, May 19, Group 11
As society becomes more and more embedded in computers and technology, we will need more people that understand them. This project will be used by the ECpE department to attract prospective students into the computer field, ensuring future generations will have the engineers required to design their technology.
In Computer Science 309, the main portion of the class is to design a piece of software with a team that involves network communication. My group developed an Android application that we named ChessSuite. It allowed a user to create their own account with the app and login. Users could play games of chess with each other, or with an AI on the server. There was also an option to play with power-ups, which would randomly spawn on the board to affect the game. It also contained a chat option, so players could communicate with the people they were playing games with.
The chessboard GUI with power-ups shown
The chessboard GUI highlighting the spaces the queen can move to
The menu of the app
This project allowed me to expand my programming abilities rather substantially. I learned a lot about Android development and the standard libraries associated with it. Since this was a team-based project, I also learned a lot about developing software with other people. We had the chance to use Git as our version control system, which allowed us to develop the software concurrently with each other. Programming the app required me to pull together all the things I knew about coding to create a functioning app from scratch.
In Computer Engineering 288, the final project was to program a "Mars Rover" which could remotely navigate a test field to find and position itself in a target zone. We worked in a team of four. We used an iRobot with a TM4C ARM Microprocessor (shown below). Using bumpers, an infrared sensor, and a ping sensor, we could observe the surroundings of the robot without seeing it. The data picked up would be sent over WiFi to a computer where we controlled the robot's actions. We were able to scan for obstacles, and with that data maneuver the robot through the test field into a target zone marked by four pillars. The programming was done entirely with the C programming language.
This project combined programming with teamwork. Our team had to divide the work of the project equally between ourselves, and then actually produce the software we said we would develop. I learned a lot about the C language during this project, as small details had to be accounted for in order for the robot to traverse the field accurately. This also gave me a chance to work with a microprocessor directly, teaching me concepts about embedded systems and their programming.
The goal of this project at the end of Computer Engineering 281 was to design a simple stack machine that would allow a user to push or pop numbers from a stack. It also supported performing arithmetic with numbers on the top of the stack, and swapping the top two elements of the stack. The machine was capable of detecting arithmetic overflow/underflow, and illegal states. For example, if there were no items in the stack, and a pop operation was performed, the machine detected an illegal state exception had occurred, since there were no items to pop from the stack.
The project was designed in Quartus Prime, a software which offers creation and editing of logic circuit block diagrams. A small portion of the project was also built with some Verilog code. This diagram was then compiled and ran on a DE2-115 Altera Board. It required a lot of critical thinking to design solutions for data storage, error handling, and arithmetic processing on a logic gate level. Above, a video is shown of the final product: a stack machine that could perform arithmetic on 4-bit hexadecimal numbers.
Below is a list of relevant work experience I've had in the field of Computer Engineering.
Over the summer of 2017, I had the opportunity to intern at Renewable Energy Group (REG) in Ames, Iowa. I worked in the IT infrastructure team, which is in charge of maintaining an environment across both the U.S. and Europe. My main project for the summer was to develop a suggestion for a hard drive encryption system to be used in the company. I researched and tested different systems, and analyzed how they would integrate with the environment that REG already had. I worked closely with my supervisor to setup a back-end management system to enable remote management of the encryption software. The internship culminated with a presentation for the CEO and senior leadership of REG. My suggestion and implementation was beginning to be rolled out into the environment as my internship ended. This internship offered an amazing opportunity to research, test, and develop a solution that would eventually be implemented in the company before the summer was over.
I returned to the infrastructure team in the summer of 2018. I was able to see that the encryption system I setup was being actively used in REG. In addition to the regular duties from the previous year, I had a new project - setting up an SCCM infrastructure for the company. This required a lot of research and planning as the company has many remote sites away from the headquarters that would be incorporated into the SCCM server infrastructure. The final server environment only communicated with https encrypted data. Again, I had the opportunity to present my project to the CEO and senior leadership. I ended the summer while REG was moving from the testing phase to production phase of SCCM.
During my tenure here at Iowa State, I work for the Department of Agronomy as a Systems Support Specialist. Together with a few other student coworkers, we support all digital systems in Agronomy Hall. Our work is organized by a ticket system, which allows us to record our solutions to problems we encounter. This creates documentation for us so that we can find solutions to problems we have already encountered. The job has given me experience with fixing a variety of software and hardware problems I would not have encountered on my own. I also have chances to work on security aspects in our environment, including securing printer protocols and password management.
During my sophomore year at Iowa State, I worked as a Teaching Assistant (TA) for the MAT E 370 course. This class was designed to teach education majors how to teach engineering to kids. The class focused on basic engineering principles, and involved a lot of hands-on projects. Many of these projects used Lego robotics to teach both building and programming ideas. As an engineering TA, I was responsible for ensuring the engineering concepts were learned, and troubleshooting problems people had with the Lego robots, especially the programming. This gave me good chance to teach basic programming principles. This definitely made sure I understood programming very well, as I couldn't teach the subject without knowing it well myself.
One project I took upon myself was to design and program a robot that could compete in "RoboWars". This was an activity we did with the students, which involved designing a Lego robot which could attack other robots. We used an elevated wooden platform, and the goal was to push the other robots off the platform. The robots had to act independently, so no interaction with them was allowed once they were turned on. I wanted to develop my own robot that would excel at this. Above is a video of my final result. (Note: instead of attacking other robots, in the video it seeks out the soda cans, which were weighted with sand).
Interested in seeing my Resume?Click here to view my Resume.
Ethics in engineering is a complex subject, but one that needs to be addressed.705-635-0458
My education was not limited to just technical knowledge.Click here to view my General Education Reflection.
What did I learn in my four years at ISU?Click here to view my Cumulative Reflection.