The titles of each of these project are links to the GitHub repo (if public)
WPI requires all students to complete a Major Qualifying Project (MQP). This project is a large research or internship like experience to test your skills within your engineering field. My project will involve working in a team with two other programmers to participate in the research and development of a tool known as BrainEx. Using React, D3, and Django we are expanding the tool by adding time series cluster and synchrony exploration. Here is our abstract:
BrainEx is a tool for exploring and comparing sequences in time series data sets with a focus of applications on brain data. BrainEx is the successor of the tools ONEX and GENEX, adding multiprocessing support to improve the tool's performance. Our project seeks to extend BrainEx with two new features: a graphical user interface for a cluster explorer and an additional functionality to measure the synchrony between pairs of time series. This cluster explorer will allow researchers to discover and visualize relationships between similar time series sequences. The synchrony tool will be used to study the synchrony of brain activity during collaborative activities. These new tools will provide researchers with the opportunity to discover new patterns in time series data that were hidden before.
As a final project for CS 528, Mobile and Ubiquitous Programming, in a team of 5 developers we were tasked to create an app leveraging mobile features and ubiquitous computing. We developed an app with kotlin for Android devices targeting API 29. We utilized AWS and Firebase for hosting a server and storing data. We trained our CNN using ImageNet V2 from Pytorch. Here is the abstract of our report:
COVID-19 is an ever-growing threat to the health and well-being of all people. People are often unaware of the varying danger levels of COVID as they travel between distinct locations. To address this issue, we have developed an app that leverages location services, a convolutional neural network for face mask detection, and ubiquitous computing to provide users with reliable, up to date information about COVID in their environment. Based on a small user study we have determined the app contains an appealing interface, is usable, and provides quality information. However, before the app is brought to market there are several improvements we have discovered that will further enhance the experience of the end user.
One weekend, I and 3 of my friends from WPI's chess club (1 current student, 2 alumni) gathered together on Discord to do our own hackathon weekend challenge to create a chess trainer. This app is based on the idea of spaced repetition training. We wanted to make a minimum viable product by the end of the weekend. We achieved this, and plan to meet again to continue it later.
The app is a web app using Node.js and Vue. Currently, it grabs a LiChess users most recent games and analyzes them for blunders and then displays the positions were mistakes were made so the user can learn from their mistakes. In the future, we plan to add spaced repition to how these mistakes are displayed, and actually make them into puzzles so the user can see the correct answer.
For those who have been following this website for a while you will know it's gone through a few iterations and is always in development. Currently the layout of the website is close to it's final state, but I plan to add blogs in the future. This website is not much of a technical achievement but I wanted to make it so I could have one place to share my work, experiences, and thoughts. Also it's cool to say I have a website.
During my internship at MathWorks, they held a mini hackathon one Friday. I worked with a team of 3 other interns. We attempted to develop a game that we called Geck Catcher. This game was like the snake game except that you played as a gecko, and the player controlled the gecko by using the accelerometer in their phone. We were able to build the GUI and gather accelerometer data into our backend, but we did not have time to put these two together. Nevertheless, it was a fun day and I learned advanced MATLAB such as MATLAB object orient programming in MATLAB.
As a final project for CS 534, Artificial Intelligence, I worked in a group with 3 other students to develop an AI agent that played the game Jotto. We used pair programming and TypeScript to develop the code. We read some papers about Jotto strategies and build our agent based off the paper available here: Computing Strong Game-Theoretic Strategies in Jotto.
This algorithm was a greedy strategy that works by picking the word that would reduce the total number of possible options by the most. We put out a survey to collect words from fellow WPI students to determine words humans regularly used. We tried to train the AI based on these words so it would be more likely to guess words the human player is likely to choose. We ran an experiment to have users randomly play against the trained AI and an untrained AI to see if there was a difference. Results showed human players beat the AI most of the time, but the trained AI could win faster than the untrained one.
When I took WPI's software engineering course our professor did an experiment to change the project to use and teach us AWS. During the course of the class we worked in teams of 4 to develop a web application using the EBC design pattern. We wrote the backend in Java and hosted it on AWS. This project taught me about scoping sprints and working in an Agile environment. All 4 team members were developers, I focused on developing the database and backend code.
As a final project for the class IMGD 2000, social issues in interactive media and game design, I worked in a team of 5 people to develop a puzzle game discussing the issues of government surveillance. The team was comprised of 3 programmers, a writer, and an artist. We used the Python libraries pygame and ren'py to develop the project. This project was the first time I worked on a large group project. I learned how to use Git, how to plan coding projects, and how to work well in a team. Another important thing I learned is that I can learn programming languages fast. I had never used Python before this project but I was able to pick it up and use it quickly.