# Computer Science

Computer Science is a course that allows students to explore various concepts through exercises, labs, projects, and assessments. Using Eclipse, an integrated development environment used in computer programming, we learned the fundamental ideas of object oriented methodologies through the Java programming language. Topics covered in this class include data types and structures, decisions, iteration, classes, graphics, and algorithms. Prior to attending Mass Academy, I had little computer science knowledge. I did not love all of my past coding and computer science experiences, but I now find myself enjoying this class and the things we learn.

We also worked on Apps For Good projects. My group chose to try to address the issue of homeless pets and pets in shelters. More about this can be found below!

## Line Art

The Line Art Graphics Program is a lab that we completed using the Java programming language on Eclipse. This program employs the use of loop control structures and Graphics methods to create and display a pattern. The many straight lines are positioned in a way so they appear to form a curve.

## Bulgarian Solitaire

The Bulgarian Solitaire assignment uses an Array List to model the game. In this game, the player begins with a triangular number of cards placed into piles of random sizes. During each round, a card is removed from each pile and a new pile is created with these removed cards. This process is repeated until the piles contain an amount of cards equal to the counting numbers (1, 2, 3, …, k). This program asks for a value (k), determines the total triangular number of cards, randomly assigns starting piles, applies and repeats the removal process, and returns the final pile sizes.

## Apps For Good: PETential

The last three months of junior year computer science consisted of a collaborative Apps For Good project. Students worked in small groups to develop an app that addresses a relevant problem. I worked with Rajat Baldawa and Isaiah Bateman to create the PETential app.

### Problem & Motivation

Stray animals are a long withstanding problem all over the world. In the US alone, 6.3 million stray animals enter shelters each year, with approximately 920,000 of those animals being euthanized every year (ASPCA 2021). Animals are commonly abandoned or surrendered due to issues including allergies or the adopter being unprepared for the care and costs associated with owning such a pet (Weiss et al., 2015). Unfit or unprepared owners can cause detrimental effects such as abuse and neglect. Additionally, there was an increase in pet purchasing and adoption during the COVID-19 pandemic as people desired a companion for the many hours spent at home. However, there has been a recent increase in surrendered and homeless pets are people return to working and attending school in person.

We wanted to create an app that addresses the problem of homeless animals and unfit or unprepared owners.

### Target Audience

Our app primarily aims to address the needs of three different groups. The first group is anyone interested in or considering adopting an animal. We also want to aid animal shelters or other organizations that provide temporary homes for animals. And finally, we want to help homeless animals find a forever home.

### Our Solution

In order to address the problem described above, we created an app to recommend pet types based on a user’s information, lifestyle, and circumstances. Our app makes relevant ranked recommendations using quantitative data while also providing information about each pet type. We also wanted to prioritize pet adoption over pet purchasing/shopping.

#### Research

Apps and websites with a similar goal currently exist, though many of them tend to utilize subjective, leading questions to make a biased recommendation. In order to address this and make a more accurate recommendation, our app utilizes quantitative data. By collecting data from various sources, we determined ideal values for five different pet types (cat, dog, fish, bird, hamster) for the following criteria: budget, time spent at home, livable square footage, age, and number of members in the household. Each criterion is based on quantitative questions that are typically found on adoption application forms. Additionally, we weighted each criterion based on a scale of 1 to 10, with 10 being the most important and 1 being the least.

#### MVP Features

Our minimum viable product (MVP) has three main functions. The first feature is allowing a user to input their personal data to get a ranked pet recommendation that is catered to their information. The next feature is to save the user information in an editable and savable profile. Our final MVP feature is to provide information about recommended pet adoptions and resource locations.

#### Design & Implementation

In order to address our MVP feature needs, our app has multiple parts. When the app is first opened, a user is brought to the home page. From this homepage, a user can go to an informational page that contains a brief description of our app and its purpose or they can go to an editable profile page by clicking a button. On this profile page, a user can enter their data and save their profile. Once they have a saved profile, they can view a ranked list of pet recommendations made using our algorithm (see below). From this recommendation list, further information about each pet can be found in the form of a YouTube video and Google Maps that searches for pet resources and shelters based on the user’s current location.

#### Testing

We tested all of the various parts of our app to make sure everything functioned as it should. We organized all of our testing into our Software Test Plan.

### Algorithm

Our algorithm functions by comparing the user’s input to the ideal values for each pet for all criteria. For each different user input, it finds the animal type with the smallest difference between the user’s input and the ideal pet values for that same type of input. Points are added to the pet option with the smallest difference between the ideal value and the user’s input. The point amounts depend on the set weights that were determined based on their importance and their relevance in adoption applications. Finally, the total points for each pet option are calculated and the totals are used to rank the pets, with the highest total points being the highest recommended pet and the lowest total points being the least recommended pet. If a user unchecks the box for a certain pet option, its total points decrease by 80% so that they are not given a high recommendation but also not completely disqualified.