| CompSci 308 Spring 2026 |
Advanced Software Design and Implementation |
Complex systems can be viewed either by focusing upon things or processes; there are compelling reasons for applying object-oriented decomposition, in which we view the world as a meaningful collection of objects that collaborate to achieve some higher level behavior. — Grady Booch
Build your planned Breakout game. Focus on just the basics of OpenJFX (just shapes, animation, and managing stages) and practicing the process of using Git (just add, commit, and push). Future assignments will cover more of these technologies so don't get carried away this week.
Along the way, after you get parts of your project working, practice taking some time to refactor your code (making multiple drafts to make sure you understand how every line works together and to get past the ugliness left over from all the things you tried just to "make it work") to practice thinking about code beyond just its functionality. As a reminder, you are expected to consistently adhere to DESIGN-01 through DESIGN-06:
While you may not achieve this on the first project, meeting these Design Goals should make it easier to write code for the variations.
In this course, unlike the experience most of you will likely have, we want you to think about managing programming projects differently:
GIT, in general, and Gitlab specifically, provide a lot of support to help you manage your project with their Issue Board.
As part of the project requirements, you will be expected to create many, small, purposeful commits, rather than just one or two large "kitchen sink" or "submit-only" commits.
Use this project to practice using GIT more effectively on your own before working in a team.
As a reminder, your final submission is the last commit on the main branch of the provided breakout_NETID project hosted in the course's Gitlab group before 3:08am in the morning.
In addition to organizing your code according to the Submission Guidelines and documenting your code, complete your README file — especially documenting your cheat keys, assumptions, and attributing any images or resources you used.
A README file is common for most software projects that helps new developers get started with the project.