CompSci 308
Spring 2024
Advanced Software Design and Implementation

Weekly Journal : Cell Society Project Analysis

You either win or you learn. I always reflect on the things that I could have done better, the things we could’ve done better to try and take that next step. — Jalen Hurts (Philadelphia Eagles quarterback who lost in last year's Super Bowl)

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 cellsociety_teamNN repository (no other modifications to this project repository should be made):

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

Specifications

Example Simulation

Create your own "interesting" example simulation configuration file(s) and record a 40-60 second video showing it and the result of running it in your project (provide a voice over on the video to describe what makes your example interesting). Go beyond a simple test example or starting configuration to show off important features or design elements by focusing on creative or powerful things your project can do (the video can cover any part of the running simulation, not just beginning after loading it).

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 configuration file(s).

Code Masterpiece

Choose class(es) you primarily wrote that you feel demonstrate good design for us to review in detail.

The code should represent a component within your larger project that is small enough to be separable, but functionally significant enough to have some interesting design element. The term "component" is used rather than "class" because it may be several classes that work together, e.g., a few classes that work together or a superclass and its sub-classes. Note, if your component is specifically intended to be superclass, it must include enough detail that it is clear how to extend it and at least one subclass as an example of how it implements the abstraction.

Simply copy without renaming the Java code files you want us to review to your portfolio repository, into a folder named cell_society, so we can easily compare them to previous versions. You do not have to include any files they may depend on as we will just review them, not compile them.

Your masterpiece code must total between approximately 150-300 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.