Goals

To check in on your final project to make sure it is the right balance of fitting the requirements and feasible.

Exercise 1

You’ve already spent time thinking about the requirements for the final project and have an idea of a project that will meet the requirements. A common issue however is having a project that is too big for the time you have and so you end up stressed to get it to a finished state.

To avoid this situation, it’s important to think about a minimum viable product that will meet the requirements of the project’s rubric and be somewhat complete even if it isn’t everything you wanted.

Write down the components of a minimum viable product that only incorporates the inheritance requirement, but doesn’t even really have meaningful inheritance (just one superclass, two subclasses) and is otherwise so simple that you are confident you could complete it in an hour. Specify the class names and methods at least. (Remember that this should be a really boring program at this point, that doesn’t really do much of anything!)

Exercise 2

  1. Your next step in development should be to expand that MVP so that it meets all the requirements superficially. What simple expansions would be necessary to incorporate at least two other class concepts from the list? (Remember that you are still aiming for pretty boring at this point, but probably doing a bit more.)

  2. Finally, we want the inheritance to be actually meaningful, meaning that the subclasses have behavior that is different from each other and the superclass. What minimal expansions would be necessary for this? You are aiming for some method that is implemented by each subclass to do something different, such as move or play which could be different for different pieces (in a game) or agents (in a simulation). At this point you are aiming for something you think you could code up in an afternoon.

  3. Discuss with another group nearby what each of you have for Exercises 1 and 2. Compete for how simple and boring you can make your MVP :).

Exercise 3

Obviously something you can accomplish in an afternoon isn’t going to be “substantive” enough, so now outline the additional functionality you will add to make your project substantive and interesting.

List at least three additions to your minimum viable product that will take you at least an afternoon each. Ideally these will be independent so that if one doesn’t work, you can remove it and add the others. These might be additional classes or methods within your existing classes that add distinctive functionality. If you are having trouble thinking of more, here are some jumping off points:

  • User interface (command line arguments and/or interactive user input)
  • Additional options/modes a user can choose
  • Games specifically: use randomness to make a very bad AI
  • Simulations specifically: add randomness to better simulate the real world

Remember you can ask others in the class, your prefect, and your instructor for help thinking of more expansion ideas!

Exercise 4

Start or continue your minimum viable product! Remember to have a goal of getting it completely done and in a form that you could hand in before starting on an expansion.

Don’t worry if your minimum viable product ends up taking more than an afternoon, that’s expected. Computer scientists are famously bad at predicting how long a task will take, so something that you think will take an afternoon will hopefully actually be achievable before finals!