CompSci 308
Spring 2024
Advanced Software Design and Implementation

SLogo : Basic Implementation

Working together as a team, implement the basic functionality of your updated APIs, such that each sub-team works without regard to the internal implementation (concrete classes) of the other sub-teams using only the agreed upon API (abstractions, immutable classes, and Exceptions) to communicate.

You are encouraged to work in small, iterations, that allows you to take time to pause, evaluate your design goals before adding new features so that the next feature is easier to integrate. Along the way, refactor your code to help it serve as a well-designed foundation for the more diverse functionality changes to be revealed in the next part. As a reminder, in addition to the Design Specification from previous projects, you are expected to consistently adhere to DESIGN-17 through DESIGN-20

Specifically, the core classes submitted for this part should be closed, with multiple single purpose interfacesuse substitutable abstractions, and encapsulate implementation details so that the other classes will not be dependent on them.


Data and Configuration Files

Program files saved by users should be considered External, optional data typically available to be updated by users of the program and contained in data folder at the project's top level.

The kinds of files below should be considered Internal, essential to the program's proper functioning and contained in resources packages within the src folder:

Strive to move as many hardcoded assumptions as possible into configuration resource files.


Your team's project GIT repository should show many, purposeful, commits from all team members regularly. As a reminder, in your commit message, continue to reference the single Functional or Design Requirement ID represented by each code change.

We will be checking that each person commits tests regularly rather than waiting to do it until the end.