This site is from a past semester! The current version will be here when the new semester starts.

Week 8 [Fri, Mar 8th] - Project

iP:

  1. Evaluate two peer iPs Sat, Mar 16th 2359

tP:

  1. Ensure you know tP expectations
  2. Start proper milestone management
  3. Add the first functionality increment

iP

1 Evaluate two peer iPs Sat, Mar 16th 2359

This activity is worth 2x2=4 participation points.

  1. Wait for the email notifying you which iPs are allocated for you to evaluate. When the email is sent out, it will also be announced via course announcements.

  2. Download the latest JAR file of the first iP by following the link provided.

    FAQ: What if the student has not uploaded a JAR file, or the JAR file doesn't work at all?
    A: When you submit the evaluation (step 8 below), there will be a way to indicate that the JAR was not available, or any other serious issues you faced.

  3. Locate the User Guide of the app by following the link provided in that email.

  4. Open the Canvas survey (the one named iP Peer Evaluation 1) that you will be using to submit your evaluation and take note of the things you need to evaluate.

  5. Run the jar file in the following manner:

    • Put the jar file in an empty folder, to prevent data files created by other jar files you tested earlier from interfering with the current jar file.
    • Open a terminal, and navigate to the folder you put the JAR file in.
    • Run the java -version command to confirm you are using Java 11.
      Mac user, confirm you are using the exact Java distribution we have prescribed here.
    • Run the jar file using the java -jar {file_name} command (rather than double-clicking) in the same terminal.
  6. Do a light testing of the app (not more than 10 minutes) to ensure the claimed features actually exist.

  7. Do a quick examination of the code (~ 5 minutes) by following the provided link.

  8. Submit your evaluation using the survey.

  9. Repeat the above steps for the 2nd iP allocated to you (use the survey iP Peer Evaluation 2).
    If both iPs crash or fail severely in a similar fashion, the problem may be on your side. Please contact the teaching team to ask how to proceed.

  10. Take note of the effort required for a typical iP: After seeing two more iPs, you should now be in a better position to estimate how much you need to do for the tP (reason: the expected implementation effort for the tP is estimated with reference to the implementation effort required for a typical iP).

tP: mid-v1.2

As we start working towards v1.2, keep the following iteration goals in mind:

v1.2

  • Product goal: Reach a minimum viable product (MVP).
  • Process goal: Estimate the quality and quantity of manpower i.e., see how much the team can do within an iteration.
  • Strategy: Define the smallest possible MVP. Reach it as soon as possible. Use the remaining time to see how much more work the team can do, while staying within own workload limitations.

Feel free to improve AB3 in any way you see fit. While not very 'buggy', AB3 is not 'perfect' either (it is not meant to be a 'model solution'). In particular, find and fix any bugs it has. If you are not sure if something is a bug or an intended behavior, you can post in the forum to check.
While we are on the topic, also note that the architecture of AB3 doesn't suit every kind of application either. As you gain more experience in other application domains, you will learn different types of architectures that you can add to the collection of different architectures that you can consider for future projects. The same goes for the tool chain and the tech stack of AB3. Therefore, do not try to apply AB3 as a template for every other project you encounter in the future.

PR review comments matter! Remember to do proper PR reviews throughout the tP, at least for non-trivial changes, as the quality and quantity of PR review comments you have given to peers affect your tP marks (under the project management aspect).

1 Ensure you know tP expectations

  • If you haven't done so already, make sure you know individual and team expectations of the tP

2 Start proper milestone management

  • Set up the issue tracker as described in the panel below, if you haven't done so already.

  • Start proper schedule tracking and milestone management as explained in the panel below.

Try to achieve all milestone requirements, but do not fret if you miss a few. You will get full marks for this aspect as long as you achieve about 75% of the milestone requirements on average. Yes, that's a pretty low bar, but we have set it low in order to reduce workload and stress. Ideally, you should achieve 90-100%.

3 Add the first functionality increment

  • Ensure you are aware of the instructions for planning this iteration, given as part of previous week's tP instructions, and also repeated in the panel below for your convenience:

[Repeated from last week] Admin tP: Week 7: Plan the next iteration

  • Plan the next iteration. As you know, you should follow the breadth-first iterative process. Therefore, first you must decide what functionalities should be in the product if you had only two weeks to implement it. You have done that already when you chose user stories for v1.2, translated that to features, and even drafted the UG based on those features. You can tweak that plan further at this point if you wish, given that you now have some idea of how fast the team can work when using the prescribed workflow.
    • Aim to produce a working MVP at the end of this iteration even if the functionalities are not polished (polishing can be done in a later iteration).
    • Avoid depth-first implementations: "I'll do the back-end part of feature X in this iteration" is not acceptable as that is not in the spirit of breadth-first iterative process. Remember, we are pretending this to be the last iteration; why would you implement the back-end part of a feature in the last iteration?
      It is OK to add simpler versions of bigger features, but not OK to add partial features that can't be used yet.
    • [Recommended, Optional] Break the iteration into two mini iterations as follows:

Splitting v1.2 into two mini iterations

  • v1.2: the first working version of your product, to be delivered by the mid-milestone (i.e., in about one week). As this is an internal milestone, the exact deadline is upto your team.
  • v1.2b: an even more functional version of the product, to be delivered by the end of the full iteration (i.e., in two weeks)

This goal of this 'optimization' is to reduce the risk of an . As a side benefit, it also gives you more opportunities to practice iteration planning.

The reason for naming the earlier milestone as v1.2 is so that even if you fail to finish the second one, you can still get credit for reaching v1.2 (which is the milestone tracked by grading scripts) -- think of the first iteration as minimal deliverables for v1.2 and the second one as containing do-if-there-is-time improvements.

Each mini iteration should deliver a working product, not just do half of the tasks planned for the full iteration. Otherwise, it defeats the purpose of this optimization.


  • Divide the work among the team members i.e., the work required for the current iteration.
  • Reflect the above plan in the issue tracker by assigning the corresponding issues (create new issues if necessary) to yourself and to the corresponding milestone. For example, the user story pertaining to the increment show a placeholder for photo, showing a generic default image should be assigned to Jake and to milestone v1.2

  • Iteration deadline: week 9 Thu 23:59 (i.e., in about 2 weeks).

  • Push as hard as you can afford to in this iteration: While we have kept the expectations bar low for this iteration (so as not to overwhelm inexperienced programmers), you are encouraged to push as hard as you can in this iteration. Reason: past students have lamented not doing enough in v1.2 that left 'too much' to do in v1.3 and v1.4.
    At the same time, we recommend you should also play it safe by aiming to reach a smallest possible version early and squeeze more in only if there is time left.

  • From this point onwards each member is expected to contribute code to each , preferably each week; only merged code is considered as contributions .

    • FAQ: Does that mean I have to merge at least one PR every week?
      A: While that is ideal, it is not a requirement that you merge PRs every week. Consistency of contribution is detected based on commit timestamps, not based on when you merge the code. Don't worry if a certain week is shown in red because the commits in that week have not been merged yet; it will eventually turn green after you merge the code, and the temporary red will not affect the grade.
      That said, aim for small PRs (and also, small focused commits). A PR that takes more than a week to merge is likely too large, or too-slow in moving forward.

  • If you plan to rename the Java packages, you may want to do it around this time. Doing it later can be more difficult (e.g., it can cause more merge conflicts), and can cause problems in our code authorship tracking. Also note that renaming packages is optional.

  • Note: you are required to follow the forking workflow for at least for the first part of this iteration:

FAQ: Do we have to keep updating tests when we update functional code?