Computer Science

Course Description:

In Computer Science we learn a variety of CS-related skills. We start off the year learning HTML and CSS and then use what we learned to create our own personal websites (such as this). We then learn object-oriented programming through Java with the course preparing us for the AP Computer Science Exam. Class activities consist of taking notes for a topic, completing several associated exercises, and finally completing a longer, more complicated CS programming lab. After we finish learning Java, we do an Apps 4 Good project. We are divided into groups with each group being tasked with creating a mobile app to serve some real-world purpose.


One of the first major programs which we did was called Random Circles. The goal was to create a program which creates a user-inputted number of circles of random size and random color in a 1000 x 650 window. The program introduced us to Java classes such as as the Random and Scanner classes.

One of the exercises for the Static Arrays Unit was to create a program utilizing Static Arrays which creates a magic square using an algorithim given dimensions by the user.

One of the exercises for the ArrayList Unit was to create a program involving ArrayLists which plays through a game of Bulgarian Solitaire with a user-inputted number of cards which shows the sequence of cards.

Apps for Good:

Apps for Good (A4G) is an international UK-based charity which offers free technology courses and which challenges students to develop their own mobile or web-based applications to help their local community in some way. At MAMS we were divided into groups and then tasked with creating an app of our own to “do good.”

My group, Team MRRLin, which consisted of Maya, Rachel, Liam, and I, decided after the brainstorming process to tackle the lack of planning and schedule-building skills in students, after personally struggling to do so and often procrastinating on homework and projects throughout the school year.

Given that many middle schoolers from grades 5 – 8 now have access to personal devices and are in the age group when responsibility is put on them to manage their schedule and there is an increasing number of tasks and events to manage, we decided to focus on students in this age group. While many middle schools provide digital and physical planners to students such as the app MyHomework, based on our own experiences most students find these planners boring. Meanwhile, planners which are popular among adults such as Google Calendar, Trello, and Notion are often too complicated for this age group and are very difficult to use on the mobile devices which middle schoolers mainly use.

Accordingly, we decided to develop a phone-based application called Habbitat aimed towards middle schoolers (although it could be used by anyone) to help develop planning and schedule-building skills, which would come in very useful later on in life. The three main features which we decided to include in our Minimum Viable Product (MVP) were a To Do List, a Schedule Builder, and a Habit Tracker.

The To Do List would allow users to create tasks to be done and then organize them in a Trello Kanban-style “To-Do,” “Doing,” and “Done” board. Being able to move tasks to the “Done” column creates a sense of accomplishment in the user, motivating them to continue to complete tasks, while having a “Doing” column prevents users from becoming overwhelmed from all of their tasks if they have half-finished several of them.

The Schedule Builder would allow users to create a daily schedule from 6 AM to 11 PM to plan out their day. Users would be able to add events at various times throughout the day with the application preventing users from setting two events at the same time, helping to teach them how to prevent overscheduling.

Finally, the Habit Tracker would have several pre-built-in daily habits to track such as the amount of water drunk (out of 8 cups) and the percentage of daily homework done. Each habit would be tracked using a slider which the user would be able to change the value of.

In addition to these three main features, we also decided to make the application visually appealing and easy to use to make it more attractive for a middle school audience. Accordingly we used a retro “8-bit” game style with a home screen where the user could move around a character using a D-pad. There would be several buttons which the character could be moved to to open the To Do List, Schedule Builder, Habit Tracker, and a Help Menu which would explain how to use all of the app’s features. To make the animation for the character easier, we used the game engine Godot to create the application, programming it in Godot’s native language GDScript.

We originally intended for the data in the To Do List, Schedule Builder, and Habit Tracker to be saved and for the Schedule Builder and Habit Tracker data to refresh daily. While these features worked on the Godot device emulator on our laptops, when we downloaded it on an actual Android device, we found that the refreshing data feature didn’t work if the app wasn’t open at midnight due to unavoidable Godot privacy restrictions on recording device data. Because of this, we removed the refresh feature and instead added a “Reset” button to the Schedule Builder and Habit Tracker to reset both scene’s data.

After we finished developing the app we presented it at the school-wide A4G Fair, where we presented it to parents and WPI faculty. It was fun to present our work to other people and we received good feedback including adding features such as a rewards system for completing a certain number of tasks to encourage the usage of the app, and the development of “Teacher” and “Parent” versions to allow both to push events and tasks to students’ versions of the app.