Computer Science is taught by Mrs. Taricco. In CS, we do a variety of programming problems and contests, like the American Computer Science League (ACSL). The class is focused around the Java programming language. Since I took Java at my sending school, I've been working on an Independent CS Project (ICSP) throughout the year. On this page, you'll find a demo and information about my ICSP, along with some interesting problems we've done throughout the year.
The beginning of the year in CS is centered around web development and culminated in the website you are looking at right now! After the first iteration of our websites, we moved onto the Java programming language. The beginning of Advanced CS surrounds programming problems about math and logic that must be solved using Java and its libraries. Here, you'll find my code for each of the ten intro problems!
Every year, nearly 60 million people play fantasy sports in the United States and Canada. One of the most popular sports of choice is football, with fantasy leagues being known for memorable annual punishments for those finishing last. However, despite the widespread interest in these sports and platforms, like ESPN Fantasy, there does not yet exist a free, accurate place to go for fantasy advice, meaning those that do not have the time to watch every game are at an inherent disadvantage. For my ICSP, I aimed to solve this problem by developing an
artificial intelligence chatbot for fantasy football advice. My project is an all-encompassing model capable of handling trade advice, player projections, and even injury predictions.
The backend of my project is written entirely in the Python programming language, using the pandas and NumPy libraries for data analysis. Then, these results are passed into the frontend, which is written in Streamlit, a Python framework for data applications. By connecting to the Google Gemini API, the frontend displays chatbot behavior and can interact with a variety of user queries. Take a look at the work I have done so far here!
Apps for Good is a group project that occurs in D Term following the ICSP and CS curriculum. For my project, I worked with Saara and Sahasra to design a medical AI assistive application, which you can find information about below.
Stroke is one of the leading causes of death globally (WHO), with one in four individuals globally, over the age of 25, experiencing stroke at least once in their lives (World Stroke Organization). Early stroke detection is critical for effective treatment; however, many individuals experience delays during brain scan analysis, which is mainly attributed to long wait times, limited access to specialists, and financial barriers.
The intended audience for this app includes individuals, students, and healthcare providers who may not have access to advanced medical imaging tools. These target audiences are described in further detail below.
General Public: Many individuals may receive imaging results, but do not fully understand them or need to wait for long periods of time before receiving a medical professional’s analysis. This app provides users with a faster way to understand their scans without requiring extensive resources.
Students and Researchers: The application could also be useful in educational settings for students studying neurology, medicine, or artificial intelligence. It can display the effectiveness of machine learning models as medical image classification tools, helping further development in the field.
Healthcare Providers: Certain clinics and healthcare centers may not have access to expensive imaging software. This tool could provide an additional way to review scans and identify possible stroke patterns.
Our MVP contains the following features in a fully indepedent progressive web app (PWA) which runs using a Flutter frontend and a Python backend.
Image Processing: Users will be able to upload CT brain scans directly to the application. The system will handle normalizing and image preprocessing before analysis by the machine learning model.
Stroke Detection: The application will use a convolutional neural network trained on a publicly available imaging dataset, which can be found here. The model will analyze the scan and classify it as stroke or no stroke.
Displaying Results: After the scans are analyzed, the system will show the results in a simple and understandable way. The app will display the predicted stroke/no stroke result and the model’s confidence level. Additionally, the app will recommend the next steps for the user to take.
Research: We conducted thorough competitor analysis before developing our MVP. Here is a description of what we found:
Currently, there are a number of machine-learning-based stroke detection applications, such as Viz.AI, Rapid AI, and Brainomix, that are valuable tools for medical professionals. They enable the detection of strokes based on imaging data, highlight problematic areas, and notify professionals of the suggested course of action. However, these platforms exist in closed systems that are only applicable to clinical environments. As a result of this, they are not accessible to smaller institutions or individuals. Our proposed app improves on these applications in various ways.
To begin, a majority of these apps are built around the Picture Archiving and Communication System (PACS), which is a common system directly integrated by most hospitals. This means that institutions that do not have access to this technology, such as those in small, rural, or underfunded areas, cannot benefit from these applications. In addition, locations like these may not have the necessary staff for upkeep, or they may still be reliant on physical-based systems. In contrast, our app would integrate open-source medical data from public databases, allowing it to be used in educational settings, research, and under-resourced domains. Furthermore, unlike these competitors, our application would be free to use, directly supporting our goal of maximizing awareness and minimizing prolonged stroke treatment.
Design: The initial prototype of the app was a relatively basic Flutter frontend with few interactive elements and a Python backend built on a basic convolutional neural network (EfficientNet-B0). Further iterations improved the backend model's accuracy and implemented interactive features on the frontend, such as a feedback submission page for users to add their recommendations for changes to the app. To properly handle all of these requests and responses, an API layer was added using FastAPI.
Implementation: The frontend was programmed entirely in the Dart programming language using the Flutter development framework. All relevant web artifacts, like images, were stored in an Images folder and the frontend was able to successfully run across all major browsers. The backend was written entirely in the Python language and mainly involved model training, input and output handling, and API routing. The API itself has 3 main API endpoints: api/analyze for analyzing patient uploaded scans, api/feedback for feedback form submissions, and the default api/health which is added to monitor all endpoints and make sure the API layer is working properly.
Testing: We conducted testing ourselves by experimenting with all major features of our app, like the analysis and feedback pages. Our testing involved a dedicated Test Plan spreadsheet, which listed a total of around 50 test cases that we looked through. Our app handled all major test checks, but some smaller edge cases were not handled perfectly. Overall, testing occurred successfully and we were able to verify that our app met the MVP project requirements from above.
The poster board above summarizes our Apps for Good project, from the problem statement through to the development of the MVP.
If you're having trouble viewing the file in your browser, use this link: Apps for Good Poster Board.