Skip to main content

Projects - Andrew Nolan

Projects

Projects

The titles of each of these projects are links to the GitHub repo (if public)

Brain Wave Analytics - WPI Major Qualifying Project

August 2020 - April 2021, Worcester MA

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. For my project I worked with two other computer science majors to continue research into a tool known as BrainEx. Some information cannot be posted here because we are awaiting publication before providing details.

My involvement in this project involved extending the tool's frontend with new features to support cluster exploration and visualization. These improvements were built using React, d3.js, and Django. The tool provides data scientists an easy and effective way to discover and visualize relationships between similar time series sequences. The target audience are neuroscientists comparing brain signals and behavior on different tasks.

If you are interested in reading more, you can read our paper published in the Proceedings of the ACM on Human Computer Interaction June 2022 issue, https://dl.acm.org/doi/abs/10.1145/3534516

Visualizing Weather Uncertainty - CS 573 Final Project

March 2021 - May 2021, Worcester MA

In a team of four computer science students, we conducted an experiment to study the effectiveness of different visualizations for presenting weather uncertainty. We compared several different visualization types, static bar charts, hypothetical outcome plots, and quantile dot plots vs standard text weather information in order to study the accuracy of different ways of presenting uncertainty data in weather. We developed our experiment as a React application and hosted it on Google's Firebase hosting service, we used Firebase's NOSQL database to store our survey results. Our visualizations were built with d3 and Vega. Our results found static bar charts to be the most favorable and accurate by our study participants.

You can see our experiment and some more details about the project here: https://cs573-finalproject.web.app/.

COVID Traveler - CS 528 Final Project

October 2020 - December 2020, Worcester MA

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.

Spaced Repetition Chess Blunder App - Personal Project with Friends

August 2020, virtual

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 where mistakes were made so the user can learn from their mistakes. In the future, we plan to add spaced repetition to how these mistakes are displayed, and actually make them into puzzles so the user can see the correct answer.

This website! - Personal Project

Ongoing, wherever my laptop is

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 its final state, but I plan to add blogs in the future and a rebuild in React. 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 my own website.

Geck Catcher - MathWorks Hackday

July 10th, 2020, Microsoft Teams Meetings

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.

Jotto AI - WPI CS 534

April 2020 - May 2020, Worcester MA

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.

Game Website - WPI CS 4241

September 2019 - October 2019, Worcester MA

As the final project for the course Webware I worked in team of 5 other programmers to develop several mini games in JavaScript and then host them on a website.

The games I worked on were Ken Ken, sudoku, and rock paper scissors. I wrote these all using vanilla JavaScript. Our website for hosting the games used more interesting technologies. We made the backend with a node.js server with Express. We used a NOSQL Firebase server for our database. The website is hosted on Glitch, it may take a while to wake up but it's available here: ajaja-games.glitch.me.

Scheduling Application - WPI CS 3733

October 2018 - December 2018, Worcester MA

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.

Foresight: The Game - WPI IMGD 2000

January 2018 - March 2018, Worcester MA

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.