Assignment 8: Third Time’s a Charm – Three Trios, part 4
1 Purpose
2 Mechanics
3 Code Exchange
4 Intended Outcomes:   what you must do
5 Code issues
6 Code critique
7 Review of the experience
8 Grading standards
9 What to submit
8.9

Assignment 8: Third Time’s a Charm – Three Trios, part 4

Due dates:

1 Purpose

In this assignment you will experience some effects of your design decisions, and practice working with implementations not written by you. Specifically, you will be integrating views and strategies implemented by your classmates.

2 Mechanics

Each group has been assigned two other groups: “providers” and “customers.” You must request code from your provider group: you will be emailed their names and email addresses. You should expect to need to email them a few times this week, as you may find issues with their code that you cannot address or repair by yourselves.

Similarly, your “customer” group will email you for your code. You are expected to spend some time supporting your customer group.1A small number of you may have your code used by two customer groups, because not everyone submitted sufficiently-completed code that could be used by other groups.

If you do not receive customer code by Sunday 11:59pm, email your instructor immediately!

3 Code Exchange

The code you will share will be constrained to the following:

You are not allowed to share or receive model implementations: the interfaces should be enough. You may exchange helpful implementation notes, but not actual code. If there is a need to know the implementations of certain classes from your model package and if those classes do not implement explicit interfaces, it likely means the coupling is tighter than it needs to be. If this is the case for the code that you share with your customer group, you will need to correct it and send the customers updated code. You can expect the same customer service from your provider group. (Note: you may have implemented simple value-classes, for instance to represent colors or points, that you consider to be part of your logical interface(s). You may share those value-classes with your customers. If you aren’t sure whether a particular class has too much functionality in it to be considered a value-class, assume that it isn’t and should not be shared.)

4 Intended Outcomes: what you must do

There are four outcomes that you must accomplish in this assignment:

Additionally, update your README file to clearly document which features of the provided views you were able to get working, and which ones you were not — this way, the graders will know what to expect when grading your code.

If there are features you could not adapt from the provider’s code and you justify why you could not adapt that code, you will not lose points. Being able to justify why an adapter is not possible also shows mastery over adapters. Make sure to leave the attempted adapters in the code to help prove your point.

5 Code issues

Since this assignment mixes your code with that of your providers, you may face the situation where you have interfaces or classes with the same name, in the same packages. Therefore, you should refactor your providers’ code to live in the cs3500.threetrios.provider package (subdividing into model, view, controller and strategy packages within it as appropriate), while retaining the package structure of all your code. You should not change anything else about their code. Any and all edits to the providers’ code (except the above package refactoring) must come from the providers.

In general, if the views provided to you do not implement a feature that your views did (and your controller and model support) you are not responsible for changing the provided views to implement those features. Make sure you mention them in the critique below. Conversely if you get a view that implements optional features, you are not required to make them work with your model and controller. If required features are incomplete you can expect the provider group to make an effort to complete them, and conversely, you must make an effort to complete them for your customers. If for some reason you do not get repaired code or explanations from your providers and as a result you are not able the provided views work, be sure to mention this in your critique and README (see below).

6 Code critique

As customers of the providers’ code, you have the opportunity to praise, critique, comment upon, and suggest improvements to their code. In short, you should provide a code review of their code.

In that review, consider all the self-evaluation questions you have been asked during this course, and extrapolate from them the kinds of issues to examine. For example:

Write a short (3-4 paragraph) review of their code. Your review should have the following sections: Design critique, implementation critique, documentation critique, design/code limitations and suggestions on how to address them.

Please concentrate on writing a review that is honest, but constructive. The reader should be able to understand what was wrong, and how to correct it. Please avoid simply criticizing the code given to you with no suggestions on how to make it better. Similarly avoid blanket praise: every implementation has flaws or limitations! Most importantly, please be professional in your writing. In summary, write a review that you would not mind receiving and acting upon.

Name this file PeerReview.txt, and put it in the same directory as your README file.

7 Review of the experience

Submit a second, smaller review of your experience of this exercise. This review should include the following two aspects:

Name this file SelfReview.txt and put it in the same directory as your README file.

8 Grading standards

For this assignment, you will be graded on

You will not be graded (much) on the code you send to your customers. It will simply be style-checked, and worth a small portion of your overall Assignment 8 grade, to ensure that you submit something we can compare against your customers’ use of your code.

Your grade will generally not be affected by your customers’ review of your code. Your grade may be affected by your responsiveness (or lack thereof) and experience with your customers.

There will be two self-evals: a short one about the code you sent to your customers, and a longer one about the code you needed to write for this assignment. Make sure that you complete both. (Having two separate self-evals is necessary, so that you can tag lines in each submission correctly.)

9 What to submit

Submission of this project will be divided into two parts: the code you provided others, and the code you worked on.

Please submit your homework to https://handins.ccs.neu.edu/ by the above deadline. Then be sure to complete your self evaluations by their due date.

1A small number of you may have your code used by two customer groups, because not everyone submitted sufficiently-completed code that could be used by other groups.