Here are some of the projects I have worked on recently.
Projects
Project Matching for Senior Design
MIPS Processor
CyCooks Recipe App
Thread Scheduling Algorithm
Project Matching for Senior Design
For my senior design project I created an application that can help the course administrators match students with both their preferred projects and preferred teammates. My team was responsible for the front-end application, backend APIs, database, and matching algorithm. On my primary focus on this project was on the Algorithm. One of the largest challenges on this project was the research for the algorithm. Many of the technical challenges I faced in my previous classes were resolved by looking into documentation, however research for this required reading a technical report of a similar algorithm on my own. Working through this algorithm with my teammates, I learned many lessons about the importance of iterative testing and organized, modular code. These are both important skills to write code in industry. Throughout the two-semester project I got the opportunity to debug and refine a complex algorithm. I am very grateful to my team for helping to grow and learn throughout the process!
Tech Stack: React, PHP/Laravel, Java, SQL
MIPS Processor
This class was dedicated to building a functional computer processor. This started with the first lab where we created an Arithmetic unit(ALU) using just basic AND, OR, and NOT gates. In lab 2 we added data storage so our processor could use the output of the ALU. Finally in the thrid lab we were able to complete our fully functioning processor. In addition to arithmetic and store variables, it could handle more advanced operations like methods, loops and recursion; all of which are expected by any programmer. This processor was functional but slow and so in Lab 4 we upgraded our processor to run multiple instructions in parallel. Parallel processors are commonly used in modern systems today. Overall this class applies not just to chip designers because this class gives me an understanding of how my code operates from voltage signals on a processor to bits in assembly to complex instructions in a high level language like Java. The overall understanding helps me to write more efficient code.
Tech Stack: VHDL, Assembly, RISC, Computer Architecture
CyCooks Recipe App
In this class I worked in a team of four developers to create a fully functional android application. Our project was to create an interactive recipe app that allowed users to share, browse, and rate recipes. For this project our team split into two front-end developers and two backend-developers. I worked on the backend creating the APIs that allowed the user to create and upload recipies. Later in the semester I was able to iterate on that functionality by enabling users to mark and share public recipes. This class stands out as one of the best opportunities to work in a team. My team had a variety of personal and technical backgrounds. Working in a diverse team demonstrated the importance of communication so we can build off of eachother's ideas. Throughout the semester I needed to communicate how my API worked so that the frontend team could create the best user experience possible.
Tech Stack: Android, Java, Springboot, Rest API
Thread Scheduling Algorithms
One of the biggest challenges in this class was working with multiple threads. One of the most labs that helped me understand that concept was when we implemented the algorithms using C. While implementing these algorithms required us to use details of the threads like: time of arrival and length of task, to prioritize the many processes on a modern computer. This management is a core part of modern operating systems and its crucial to ensuring the user has a good experience.
Tech Stack: C, Bash, Unix