Computer Science

Teacher: Mrs. Taricco

In Computer Science, we learn the fundamentals of object oriented programming (Java) and web design techniques (HTML & CSS) through projects such as building this website and developing an assistive app in the Apps for Good project. All students compete in numerous CS competitions throughout the year, with the opportunity to participate in more, such as Cyber Patriot, as an extracurricular. Additionally, there is the opportunity for advanced students to complete a self guided CS project to strengthen the skills that are most important to them.

Current Projects

Apps For Good: shovelSmart

Apps For Good is a charity that gives high school students around the world the world the opportunity to lead their own work on a subject that can make a difference in their community. In this project, I worked with Nicholas Giza and Kayla Vallecillo. We created an app, shovelSmart, that helps users to optimize their winter snow removal by suggesting an optimal, and second optimal time to start shoveling before. Below, find a description of our project and the poster we presented at the Apps for Good Fair.

Screenshot of shovelSmart's home page with a house object. Screenshot of the form needed to add a new house.

Executive Summary
For residents of the northern United States, snow shoveling is an annual reality. To many, shoveling is simply a time-consuming chore in need of completion; to others, it is an impossible task. More specifically, members of the elderly population may find that shoveling is too physically burdensome when the snow becomes too deep or saturated. One major component contributing to these attributes is the tendency for individuals to procrastinate shoveling. Unfortunately, waiting to begin shoveling only gives more time for additional snow to accumulate and temperatures/humidities to change significantly, both making the snow denser and thus harder to move. The aim of shovelSmart is to predict and suggest the optimal times for users to go outside and shovel with maximum efficiency. Using information provided by both the user, a weather API, and a mathematical model, shovelSmart can approximate the point in time when clearing fallen snow will become too burdensome for a user, allowing for the user to shovel before this. Should users know exactly when to go out and shovel, the task of shoveling may become significantly more feasible for audiences of all physical abilities.

Target Audience
The target audience of shovelSmart is anyone who finds shoveling snow difficult or time-consuming. Primarily, this app will benefit elderly individuals who, as a result of the aging process, may not possess the strength required to shovel. Beyond the elderly, this app can benefit the average homeowner as well, ensuring that homeowners can shovel at the most optimal times to consume the least time and energy. With such a broad audience, shovelSmart aims to help people of all abilities shovel more intelligently.

MVP
In order to be successful in its mission, shovelSmart presents several useful features to its users. Firstly, shovelSmart takes in environmental data including temperatures, humidity, and precipitation history and forecasts, to give an approximation of snow weight. Using data (house location via zipcode or coordinates, preferred shoveling depth, and shoveling time estimate) collected by a form completed by the user and the mathematical model, the app estimates the shoveling duration based on the weight of the snow. Then, the app alerts users when the best time is for them to begin shoveling their driveway or other property features at the press of a button. In order to better suit those responsible for shoveling multiple properties, shovelSmart has the ability to manage several homes in various locations.

The Model
ShovelSmart’s novel mathematical model uses past, present, and future weather data, as well as information specific to the user, such as their average shoveling time during various conditions, to calculate the optimal and second optimal time to begin shoveling. This is achieved by calculating the weight of snow on the ground and comparing that to how much the user is comfortable removing in one round of shoveling. During the next winter season, the team hopes to test the accuracy of their model and fine-tune it based on feedback from their community.

Unable to display the PDF file? Download the poster instead.

Advanced Project

In Advanced CS, I am currently working on an independent app building project. The app I am building aims to help indecisive friend groups make fair and objective decisions. It does this by allowing users to share their preferences anonymously, then vote on the solutions that work best for them. For the truly indecisive, there is also a feature that makes the decision randomly. When the app is complete, it will allow users to connect over multiple devices.

Similar to my STEM 1 app, Carbon Crush, I am programming in Dart using the Flutter framework.

The images shown below are v1 screens for my app. You can see a text field to enter the decision title and drop down menus to select the type of decision (random, simple, complex) and number of member. The screens then guide you through the process. For this first version, a single device would be passed between individuals so they could record their responses.

For me, there was a long learning curve when it came to understanding the ins and outs of Dart. However, now that I feel more proficient in the language, I anticipate that the speed of the developement will increase rapidly.

Screenshot of version 1 of the decision making app. Screenshot of version 1 of the decision making app. Screenshot of version 1 of the decision making app.
Screenshot of version 1 of the decision making app. Screenshot of version 1 of the decision making app.

Advanced Problems

In A Term, before beginning my independent project, I completed a series of 10 challenge programming problems. One that I enjoyed especially was #4: Largest Palindrome Product. For this problem. I had to code a method that would determine the largest palindrome that could be made by multiplying three digit numbers. To approach this problem, I wrote two methods. The first method multiplied every combination of numbers up to the specified values. This method called the second method which checked if the product was a palindrome. If it was a palindrome, then it would save that value as the maximum palindrome. Once the muliplying loop finished the current maximum palindrome was returned!

If you’re curious, the answer is 906609!

Unable to display PDF file? Download the code instead.