CompSci 308
Spring 2024
Advanced Software Design and Implementation

Weekly Journal : SLogo Project Analysis

Reflection without action is ultimately as unproductive as action without reflection. — Robert Kegan

This analysis is your opportunity to demonstrate your own thinking and knowledge of design concepts represented (or not) in the project's code. The Teaching Team can readily identify the good and bad aspects of project's design, so we are looking to see if you can also recognize these as well. If it is also an honest and thoughtful retrospective, it can also help you identify specific actions you can do to improve future projects.

Submitting Your Work

As a team, complete the following on the main branch of your slogo_teamNN repository (no other modifications to this project repository should be made):

Individually, complete the following on the master branch of your portfolio_NETID repository:

Specifications

Example Programs

Create your own "interesting" example SLogo programs and record a 40-60 second video of loading and running them in your project (provide a voice over on the video to describe what makes your example interesting). Go beyond a simple test example to try to create a something that shows off important features of your project or its design by focusing on specific features of your project in creative and powerful ways.

The easiest way to make a video of your running project is to start a Zoom call, share your screen, start recording, and talk over your demo. There are also many free screen capture tools available or free trials of commercial tools.

Submit both the video and program files.

Code Masterpiece

Choose class(es) that you feel could be improved and refactor them to demonstrate what you think of as good design with clean code throughout.

If it is an abstraction, include at least two subclasses as examples of how it is implemented. If it implements a Design Pattern, include all the classes that work together to implement the Pattern (as shown in the example UML diagram). In either case, in comments at the top of the most abstract class, include a code example that uses it.

Your masterpiece code must total between approximately 200-350 lines, including comments.

Design Analysis

This document is vital, as it is your opportunity to:

If you think something is good, justify your opinion. If you think something is bad, justify your opinion and suggest how to improve it. Use specific code examples and supporting reasons related to design principles discussed in class or in the readings rather than general terms like "clearly/obviously", "good/sucks", "elegant/ugly", or "like/hate".

Note, no design is perfect so including both pros and cons (i.e., its trade-offs) or alternate designs you considered is highly encouraged (often designs cannot be seen as better or worse than another, but rather as a specific set of trade-offs that prioritize different goals).

Your analysis must cite specific code examples from the project and citations from the course readings.