Advanced Computer Science is taught by Mrs. Taricco, and prepares students to take the AP Computer Science A exam. We begin the year by learning website design using HTML and CSS to create our personal websites. We also learn java syntax and implement our understanding through practice problems and labs, which develop our logic and problem solving skills. In January, we began participating in the American Computer Science League (ACSL). Towards the end of the year, we learn about app development and create an app through the Apps for Good Project.
Community Need
Public transportation is a significant part of infrastructure across the country and around the world. According to the American Public Transportation Association, transit systems play a significant role in improving the quality of life for people in nearby communities by increasing mobility, especially in more affordable and safer ways than private transportation, and creating more job opportunities. It also has many environmental benefits as well, which are becoming more necessary as climate change worsens. Using public transportation saves 4.2 billion gallons of gas every year in the United States. Every person who switches from a private 20-mile commute to a public ride can decrease carbon emissions by over 48,000 lbs a year. However, many people are hesitant about making this transition because of the inconsistencies and annoyances that are currently present in many transit systems. The MassBio 2022 Transportation Survey revealed that “respondents are driving more and using public transportation less due to a lack of reliability and flexibility of the MBTA and Commuter Rail.” The Massachusetts Bay Transportation Authority (MBTA), as well as many other transportation systems, are often steered away from by users because their arrival times are dependable, which can be an annoyance when planning out trips in advance to arrive at a destination by a set time, or just avoid waiting for long periods at bus stops. Hence, providing bus arrival times in an easily accessible and accurate way can encourage users to use the public transportation systems more for their transportation, which will benefit the economy and the natural environment. The WRTA had a significant user decline in 2018, but they have been making efforts, most notably, removing bus fares, to increase passengers. However, it is critical for the creation of a substantial system that will ensure clear communication between WRTA buses and riders to maintain the increased interest; one of the main reasons for choosing to drive over other modes of transportation is because “public transit is too unreliable” (Massachusetts Biotechnology Council, 2022).
Target Audience
Our application is targeted towards people who live and/or work within a city with public transportation. In particular, we are aiming to assist the residents of the greater Worcester area who utilize the Worcester Regional Transport Authority (WRTA). Transit is not only much more developed in urban areas, but in many cases, it is also more convenient than taking a car into the city due to lack of parking space and traffic. Our app will allow users to get an accurate prediction of when their specified bus is arriving so they can plan ahead in terms of when they need to get to their stop when they will likely arrive at their destination, and which route to take. This solution helps to address the significant issue of frequent bus delays that deter many users from taking public transportation. According to a transit study published by the University of California in Berkeley, “being delayed on board, experiencing long waits at the origin stop, missed trips due to wrong real-time information, overcrowding and long waits at a transfer stop,” etc. are the main reasons riders hesitate to take public transit (Mass Transit, 2023). Our app will help to mitigate these concerns regarding the unpredictability of actual bus schedules.
There are 3 main features of our app:
1.) Map of bus routes and
directions using Google Maps API. This will allow a user to plan a
trip and determine what stops they will get on/off at, as well as
what bus route to take.
2.) Arrival times (and estimated remaining time left) of buses on
specific stops on each route using API from the WRTA. This specific
API uses an SMS messaging system that will be implemented into Android
Studio so a user either supplies a stop number/name or it is
pre-filled from the map in feature 1.
3.) Alerts for line/stop closures or safety hazards provided by
user submissions. This will require the use of Firebase to store the
data required.
Feature 1 required the use of Google Maps API
integration into Android Studio, which we used to build our app. This
allows the user to use all features of Google Maps, including trip
planning and bus route selection. Feature 2 required the use of the
General Transit Feed Specification (GTFS) feed from the WRTA to build
a database of all stops that a user can select. This feature also
uses the SMS feature the WRTA offers - you text WRTA and a stop
number (ex. 4) to 41411 and it returns the stop name and times of bus
arrivals with real-time updates. Feature 3 required the use of
Firebase to store all crowd-sourced alerts and updates about the
buses in the cloud so that any user can access them. To get feedback
from the users about the app, we used Firebase Firestore.
The Line Art program was created using java graphic applets and iteration. Despite its illusion of curved lines, this output displays straight lines inside a rectangle from one side to a perpendicular side.
The Bulgarian Solitaire assignment uses Array Lists to model Bulgarian Solitaire. In this game, players begin 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 the user for a value (k), determines the total triangular number of cards, randomly assigns starting piles, removes cards until the final configuration has been met, and returns the final pile sizes. This was a really fun program to make and play around with!