Home   STEM   Computer Science   Humanities   Math   Physics   Spanish   STEM 2

Welome to Computer Science Class

Learning coding languages in Computer Science is like learning Spanish to me. It feels a bit amazing to me that before this class I was coding without any knowledge of what the code was doing. Knowing what the code is doing and how it can be put together is a lot more fun to me now! I really look forward to seeing how an app can be put together with the coding knowledge I have so far. I decided to show two of my favorite codes that I did in class below.

Random Circle in Java

The random circle code creates a certain number of circles with a random diameter, location, and color. All of them are contained in a 1000 by 650 applet window. The challenge started off with an easier version of a set number of 7 circles. By the end, the program required a user to enter the number of circles wanted. It was fun to figure out how to randomize everything about the circles and to run the program to very high numbers. One of the bugs I had to fix was quite mesmerizing, the circles wouldn’t stop multiplying and, in the end, covered the whole applet screen.

Picture Flip in Java

The image flip code was a code that gave me a lot of trouble to figure out. However, with the help of Ms. Taricco, I was able to understand the logic and math behind the code. The project required converting an image into its negative: turning white to black, cyan to red, and so on. The result was a negative image of the original. And though the code was hard to figure out at first, the end result was worth it, making it one of my favorite codes.

Apps For Good Project

The Apps for Good project my team (Simon, Erika, and me) did was called Mealgo. It was a meal and recipe recommendation app that aimed to prioritze the users nutrition and dietary goals as well as their budget. It was made first to help college kids who do not know how to eat healthy by themselves but can be used for anyone seeking inspiration for recipes that fit their needs and wants. The app is able to have a filter system where a user choose a diet from a category, then can include ingredients they want to eat or that they have, and lastly can exlude any ingredients they don't want to eat. A more detailed filter system where nutrition goals are set in place and where people can set a cuisine will be made in the future. The budgeting and real time item prices will also be added in the future in a seperate page on the menu.

Problem Statement

Finding the meal you want to eat that fulfills all of your dietary needs and nutritional goals can be hard to find. Especially for college kids living alone and having to make meals by themselves for the first time. This app aims to fix this by creating a system where a person can easily type in their allergies, diets, and nutritional goals, and get a list of tailored recipes from which they can receive a shopping list or inspiration about what to cook. While our general audience can be anyone looking to cook a good meal, our specialized target audience is college kids or people cooking by themselves for the first time. Our MVP was to provide a filtration system where the input would be a diet, wanted ingredient, or nutrition goal, and the output would be a list of recipes.

Research

My group had to main path of research. The first was to search who our competitors were. There are a lot of cooking apps out on the internet but we found out that few of them had a filtration system that worked well. A couple of the apps that were our competitors were Yummly, Paprika, and NYT cooking. The second part of the research was to find an API that would give data about food, recipes, and nutrients. We needed many recipes and since it was not possible to create a large database by hand, using an API was more convient. We did end up finding the necessary data on Food.com and transfered the database there onto a firebase we made. This all took a lot of research and throughout the project we would continue to do research to make sure that the app was running smoothly.

Design

The UI, or user interface, was a large part of the work that I did. When a user goes onto an app, they have to be able to know easily what is located where and navigate through the app comfortably. We ended up making one home page where there was a main filtration system. Once the user clicked Find Recipes after filling in their diet or ingredients they wanted, a new activity with the wanted recipes showed up. The user could then click onto a recipe name in order to receive the full list of ingredients. In addition, there was a menu button on every page that allowed the user to open a side bar menu and choose to navigate to a quiz. All in all, the user interface ended up working on the Android Tablet except for one error that was later fixed. This error was when an exluding ingredients bar wouldn't open due to there being an overlap in boxes in the UI part of Android Studio.

Implementation and Test

We had a lot of code on the main page and in fragments in order to make the app run. A lot of the time, the hardest part was making a button in a fragment run due to how we made the home page. However, I was able to figure out the menu fragment and the buttons in it and ended up making a preference quiz where a user could cycle through recipe names and rate how much they liked the recipe. The button to get to the quiz, though, was in the menu fragment. For testing, we went through all of the windows, buttons, and activities and made sure that it was running smoothly. Though we had some problems, such as the login page not storing a person's information, there were many things that still worked and testing helped us sort through those.

Future Work

A future design that would be great to implement would be to have a feature where the user's budget is taken into account. This would allow for the user to only see recipes with ingredients that they can afford in their city. Another useful feature would be to be able to store the users information as well as their preferences. This would allow for ratings to stay permanent and for a person to make an account. The last feature that can be implemented is to make a secondary filter system where nutritional goals are specified further. This means that is a user wants a meal with more protein or more fat, they would be able to receive a recipe list with all of that.