Computer Science

About Computer Science

The computer science (CS) class, taught here at MAMS by Mrs. Taricco, is one of the most diverse CS classes offered in high school. All students start the year creating a website (like the one you see here) using HTML, CSS, and Javascript. These websites are all personalized to show our own styles and ideas, imediately giving a free project oriented way to start the year. For the rest of the year, most students work with Java, covering the topics in the AP CSA exam should they wish to take it. Students, such as myself, who have already taken AP CSA or similar are given the option to do an independent computer science project (ICSP) where they are able to choose any CS related topic and spend a term creating their own implementation of the topic. At the end of the year we also complete an Apps for Good project, where as a team students find a problem they wish to solve using an android app.

AGRAM

This was a challenge problem posed to me early in the year. It comes from a past American Computer Science League (ACSL) competition in the senior devision. Here we were asked to write a program that would pick which card a dealer would play in a game which followed the rules where each player would be dealt 5 card, the first player would then place down a card from their 5. The dealer must then place down a card of the same suit if they can, the lowest card of that suit that is higher than the oponents card, if they do not have such card they play the lowest card of the suit, if none of that suit they play the lowest card regardless of suit.

Independent Computer Science Project (ICSP)

Because I have taken an AP CSA equivalent course before, I was allowed to complete an ICSP. For ICSPs, students are allowed to choose any area they are interested in to study then create a project. My project involved creating a document organization website for authors using react.js. The idea is that authors can input their maps, drop labeled pins to the maps, then attatch documents or more maps to the pins. This allowes the author to keep every document with its coresponding map. Authors would also be able to go further into these maps to place documents, creating a nesting doll of maps to store their important documents.

Image of by ICSP

Apps For Good

Problem and Target Audience

We found through surveys to our fellow MAMS students that many high school students do not enjoy studying for the SAT (Standardized Aptitude Test). Many find it to be boring, demotivating, and an overall waste of time. Thus, we saught to make SAT studying more entertaining for modern high schoolers through our app generated by the MAMS Apps For Good Product.

Minimum Viable Product and Tools

We wanted to create a game similar to the original Pokemon games, where there would be a 1v1 battle, and the player would fight an enemy. Thus our Minimum Viable Product (MVP) had to include an attack button and a way to track player and enemy health. To incorporate SAT questions, we decided that when the player took an action, an SAT question would pop up on the screen and the action would only succeed if the question is answered correctly.

Our team, after considering multiple different frameworks, choose to use the Godot game engine to program our game. We choose Godot as it had many built in UI features for 2d games, allowing the creation of UI elements to be very simple so that we could focus our time on the logic of the game. Godot also features increadible comunnity support in the form of forums and videos, many of which created features similar to ours. Finally, Godot used its proprietary Godot script which was very similar to Python, a language we had experience in thus making the learning curve much smaller. We also wanted our SAT question database to acurately emulate the difficulty of the SAT, so we used College Board's question database and parsed it into a JSON file for our program to read.

Algorithms

Click to see our project github

The program contains two main pieces of code, one to set up the fight and another to handle it. Between these two, every other class and function is called. The settup is responsible for rendering everything that is initially on screen as well as setting up the stats for the characters. The responsibility then moves to the handler which waits for the user to request a function and then resets the screen acordingly. It is also responsible for communicating to the character and health classes to track stats such as damage and remaining health.

Demo

AFG Poster