At the beginning of the year, we were given several advanced programming problems to try. One of them was a card game called "Agram," which was a sort of "greatest common factor" game that involved picking a certain card from a hand, moving to a different rule if that wasn't possible, and so on. This problem forced me to apply casework, which overall was a fun experience.
During CS class, I worked on an independent project with Donovan Sappet. Our project involves creating a web application to display the abstracts and theses of past Mass Academy students’ STEM research projects. We are using ReactJS as our frontend framework, hosting on a Node.js server, and storing our data in Firebase. Even though I had some prior experience in this field, I’ve still learned a lot from completing this project and have found the entire process to be very rewarding.
For the final component of the MAMS CS curriculum, we worked in small groups to develop an app for a greater cause. My team, consisting of Travis Tran and myself, focused on the problem of food waste in the US and the fact that many young people do not know how to cook. To address this issue, we created the Unified Grocery App which recommends recipes based on the ingredients in a user's fridge and their corresponding expiration dates.
Problem Statement: Over 40% of all food in the US is thrown away without ever being eaten, which amounts to a whopping 119 billion tons of food waste per year. Moreover, a recent study found that 64% of Americans eat out at least once a week. The problem is thus two-fold, as people are eating less healthy and throwing (what is often healthy) food away.
Target Audience: Our main target audience is millenials (20-40 year olds) who are learning to cook, but we are also serving anyone who wants to build healthier eating and cooking habits.
Solution: We developed an iOS application using Swift that stores a user's ingredients in a cloud database (so the data is recoverable should any damage happen to the iOS device) and recommends recipes based on the ingredients that the user currently has.
Minimum Viable Product (MVP): The three components to our MVP are: (1) an interface that allows users to manually enter ingredients and food items in their fridge/pantry; (2) an interface that displays the items the user has listed as being in their fridge/pantry; and (3) an interface that displays recipe recommendations based on the number of matching ingredients as in the fridge/pantry.
Features/Algorithms: When creating recipe recommendations, the recommendation algorithm is able to complete a robust keyword search by considering ingredients without regard to whitespaces, capitalization, pluralization, or brand names (e.g. "Hellman's Light Mayonnaise" vs. "Mayonnaise"). This flexibility allows for more accurate recipe recommendations.