Computer Science

Course Description

Computer Science is a class taught by Mrs. Taricco. In the Intermediate section, students study core concepts in object-oriented programming and software design while building problem-solving skills. In the Advanced section of the class, students can choose any project that they would like to work on for their Independent Computer Science Project. We also compete in tournaments such as the American Computer Science League where we can utilize the skills that we have learned.

Apps for Good Project

Apps for Good is a project we do in the second half of the year in which students identify a real-world problem and design, build, and present a mobile or web application that addresses it. The sections below describe my project's problem, target audience, solution, minimum viable product, and the additional features that bring the app together.

Problem

STEM events, internships, clubs, and enrichment programs often go unnoticed by students and parents. Information is scattered across school newsletters, organization websites, social media, and magazines, making it difficult to reliably discover high-quality opportunities in a specific town or region.

Target Audience

Beacon is targeted towards students of all ages who are in search of local STEM opportunities. This app is also available for parents that want to locate events for their children or relatives that are low-cost, nearby, and/or easy to access. On the organization side of things, this app allows organizations to push their events to students and get the traffic and attention that they deserve.

Solution

Beacon brings students and local STEM organizations into one place. A student does a quick one-time setup for their preferences and then sees a filtered grid of nearby STEM clubs, events, and volunteering, with one tap to open details, visit the organization's website, or report a bad listing. Organizations sign up with their basic info, get manually verified in order to keep listings real and accurate, and then use a dashboard to create, edit, draft, and publish events. They have a live Website Visits counter that shows which listings are actually pulling traffic. The result is that students and STEM programs end up one tap apart instead of separated by scattered flyers.

Beacon home page showing 'Find STEM volunteering opportunities, clubs, events, and more near you' Beacon browse screen showing Discover STEM opportunities with event cards Beacon organization dashboard with Total Events, Upcoming, Draft, and Website Visits metrics

Minimum Viable Product

  1. Verified STEM organizations can manually input, update, and delete events. These events will be displayed to users as a list based on their preferences.
  2. Organizations must create accounts to submit or edit events. Organizations must pass an initial verification process to input events. After a simple automatic verification process, organizations can be manually verified.
  3. Students have the ability to filter opportunities in the database. Initial preferences are saved locally, and preferences can be changed at any time with instant response.

Other Features

Students can report events. Tap the report icon on any event card and pick a reason from a fixed list (Incorrect information, Spam or scam, Inappropriate content, Duplicate listing, Other) with optional free-text details.

Outbound link tracking. Each event has a "Visit Organization Website" button. When a student taps it, the app opens the link (new tab on web, external browser on Android) and increments a websiteVisits counter on that event in Firestore. The org dashboard then shows total Website Visits as a metric card. So orgs get analytics on which listings are pulling traffic, not just a static list.

Auto-resume on relaunch. After the first session, the app remembers whether you were a student or an approved org and skips the welcome screen entirely on the next launch. It goes straight to the student browse screen or the org dashboard. Approval status is re-checked on every launch, so a pending or revoked org is signed out and routed back to the welcome screen automatically.

Apps for Good Presentation

Independent Computer Science Project

If placed in the advanced section of this class, we are allowed to create our own Independent CS Projects instead of learning java.

Working with Arnav Prabhudesai, this project aims to create a realistic and useful simulation of viruses. In its final form, the user will be able to customize every single attribute, drop their virus wherever they want, and see the outcomes.

Below is an image of what the current UI looks like, and to the left is a React.js file containing the bulk of the code that I wrote for the frontend of this website.

Click this link to get access to the GitHub if you want to run the code yourself!

Binary Counting

If in the advanced section of this class, this was one of the programs we could've chose to complete in between working on our websites and our ICSP.

This is an ACSL problem that challenges the programmer to switch back and forth between binary, octal and decimal bases. Taking in a string input and outputting one integer, this problem tests various skills, specifically with handling strings.

Feel free to copy and paste my code to try it for yourself!