This site is from a past semester! The current version will be here when the new semester starts.
CS2113/T 2021 Jan-May
  • Full Timeline
  • Week 1 [Mon, Jan 11th]
  • Week 2 [Mon, Jun 21st]
  • Week 3 [Mon, Jun 28th]
  • Week 4 [Mon, Jul 5th]
  • Week 5 [Mon, Jul 12th]
  • Week 6 [Mon, Jul 19th]
  • Week 7 [Mon, Jul 26th]
  • Week 8 [Mon, Aug 9th]
  • Week 9 [Mon, Aug 16th]
  • Week 10 [Mon, Aug 23rd]
  • Week 11 [Mon, Aug 30th]
  • Week 12 [Mon, Sep 6th]
  • Week 13 [Mon, Sep 13th]
  • Textbook
  • Admin Info
  • Dashboards
  •  Individual Project (iP):
  • Individual Project Info
  • iP Upstream Repo
  • iP Code Dashboard
  • iP Progress Dashboard

  •  Team Project (tP):
  • Team Project Info
  • Reference AB3
  • Team List
  • tP Code Dashboard
  • tP Progress Dashboard
  • Java exercises
  • Report Bugs
  • Forum
  • Gitter (Chat)
  • Instructors
  • Announcements
  • Files (handouts, submissions etc.)
  • Tutorial Schedule
  • Java Coding Standard
  • Git Conventions
  • Forum Activities Dashboard
  • Participation Dashboard
  • tP week 10: mid-v2.0tP week 12: mid-v2.1


    tP week 11: v2.0

    1. Update user docs
    2. Add sequence diagrams to the developer guide recommended: before Wednesday
    3. Deliver v2.0 midnight before the tutorial
    4. Review others' DG during the tutorial counted for participation

    Guidance for the item(s) below:

    This week, you get a chance to fix your tP bugs (in the project, as well as documentation) without any penalty. What's more, others will help you find those bugs (via tutorial activities and the PE Dry Run happening in this week).

    To take advantage of the above, try to make your v2.0 (product, DG, and UG) as close to what you intend to submit as your final version (i.e., v2.1).

    1 Update user docs

    • Update the v2.0 user guide to match the current version of the product. Reason: testers will need to refer to the UG during the practical exam dry run.
      • Clearly indicate which features are not implemented yet e.g. tag those features with a Coming soon.
      • For those features already implemented, ensure their descriptions match the exact behavior of the product e.g. replace mockups with actual screenshots

    In UG/DG, using hierarchical section numbering and figure numbering is optional (reason: it's not easy to do in Markdown), but make sure it does not inconvenience the reader (e.g., use section/figure title and/or hyperlinks to point to the section/figure being referred to). Examples:

    In the section Implementation given above ...

    CS2113 does not require you to indicate author name of DG/UG sections (CS2101 requirements may differ). We recommend (but not require) you to ensure that the code dashboard reflect the authorship of doc files accurately.

    • The main content you add should be in the docs/UserGuide.md file (for ease of tracking by grading scripts).

    • Should cover all v2.1 features.
      Ensure those descriptions match the product precisely, as it will be used by peer testers (inaccuracies will be considered bugs).

    • Optionally, can also cover future features. Mark those as Coming soon.

    • It is not necessary for the UG to contain every nitty-gritty detail about the product behavior. Some rarely needed information can be omitted from the UG, if the user is expected to know that information already or if the user is kept informed in other ways. For example, if a certain invalid input is unlikely to be used anyway, it is fine to not specify it in the UG, as long as the product is able to give an informative error message when that invalid input is used.

    • Beware of overusing screenshots. While it is good to have screenshots in the UG, note that they are hard to maintain. For example, if a future version changes the GUI slightly, it will require all your screenshots to be updated. Here are some tips:

      • In general, don't use more screenshots than necessary.
      • In some cases, you may want to crop the screenshot to show only the elements being discussed. That way, the screenshot doesn't need to be updated when other parts of the GUI is modified in a later version.
      • Don't use a higher resolution than necessary as it can increase the UG file size unnecessarily.
    • Also note the following constraint:

    Constraint-File-Size

    The file sizes of the deliverables should not exceed the limits given below.

    Reason: It is hard to download big files during the practical exam due to limited WiFi bandwidth at the venue:

    • Product (i.e., the JAR/ZIP file): 100MB (Some third-party software -- e.g., Stanford NLP library, certain graphics libraries -- can cause you to exceed this limit)

    • Documents (i.e., PDF files): 15MB/file (Not following the recommended method of converting to PDF format can cause big PDF files. Another cause is using unnecessarily high resolution images for screenshots).

    • Add sequence diagrams to enhance your DG wherever they can be useful. Note that diagrams you add in this week will receive feedback while diagrams added later will not.
    • Try to do this before Wednesday so that the added sequence diagrams can get peer feedback via the DG peer review that will happen during this week's tutorial.

    3 Deliver v2.0 midnight before the tutorial

    • As before, do a release on GitHub and upload the v2.0 jar file. Do this before the deadline as PE testers will start downloading jar files ahead of time.
    • IMPORTANT: ensure your jar file was generated using Java 11 and can work on all major OS'es using JDK 11.

    Constraint-Java-Version

    The software should work on a computer that has version 11 of Java i.e., no other Java version installed.

    • Wrap up the milestone on GitHub.

    4 Review others' DG during the tutorial counted for participation

    • To be done during the tutorial. Please don't do this task before the tutorial as others need time to update their DGs.
    • Read all instructions before you start the activity.
    • Find the team choices you have been allocated to review, as given in the panel below.
    Your GitHub First choice Second choice Third choice
    CabbageTime CS2113T-W09-2 DG PR CS2113-T10-2 DG PR CS2113T-W09-3 DG PR
    heyjinwei CS2113T-W09-2 DG PR CS2113-T10-2 DG PR CS2113T-W09-3 DG PR
    jadenwjh CS2113T-W09-3 DG PR CS2113-T10-3 DG PR CS2113T-W09-4 DG PR
    warmwhalefy CS2113T-W09-3 DG PR CS2113-T10-3 DG PR CS2113T-W09-4 DG PR
    song0180 CS2113T-W09-3 DG PR CS2113-T10-3 DG PR CS2113T-W09-4 DG PR
    lowwilliam CS2113T-W09-3 DG PR CS2113-T10-3 DG PR CS2113T-W09-4 DG PR
    baggiiiie CS2113T-W09-3 DG PR CS2113-T10-3 DG PR CS2113T-W09-4 DG PR
    PingruiLi CS2113T-W09-4 DG PR CS2113-T10-4 DG PR CS2113T-W09-3 DG PR
    beaniestanley CS2113T-W09-4 DG PR CS2113-T10-4 DG PR CS2113-F10-1 DG PR
    lihaoyangML CS2113T-W09-4 DG PR CS2113-T10-4 DG PR CS2113-F10-1 DG PR
    cloudy3 CS2113T-W09-4 DG PR CS2113-T10-4 DG PR CS2113-F10-1 DG PR
    justinaquak CS2113T-W09-4 DG PR CS2113-T10-4 DG PR CS2113-F10-1 DG PR
    joohwan58 CS2113-F10-1 DG PR CS2113-W10-1 DG PR CS2113-F10-2 DG PR
    SimJJ96 CS2113-F10-1 DG PR CS2113-W10-1 DG PR CS2113-F10-2 DG PR
    leeyp CS2113-F10-1 DG PR CS2113-W10-1 DG PR CS2113-F10-2 DG PR
    kwokyto CS2113-F10-1 DG PR CS2113-W10-1 DG PR CS2113-F10-2 DG PR
    Vinci-Hu CS2113-F10-2 DG PR CS2113-W10-1 DG PR CS2113-F10-3 DG PR
    tehtea CS2113-F10-2 DG PR CS2113-W10-2 DG PR CS2113-F10-3 DG PR
    chenling1022 CS2113-F10-2 DG PR CS2113-W10-2 DG PR CS2113-F10-3 DG PR
    geezzzyyy CS2113-F10-2 DG PR CS2113-W10-2 DG PR CS2113-F10-3 DG PR
    zhangyongzhe20 CS2113-F10-3 DG PR CS2113-W10-2 DG PR CS2113-T10-1 DG PR
    cswbibibi CS2113-F10-3 DG PR CS2113-W10-3 DG PR CS2113-T10-1 DG PR
    violinyap CS2113-F10-3 DG PR CS2113-W10-3 DG PR CS2113-T10-1 DG PR
    L-Irvin CS2113-F10-3 DG PR CS2113-W10-3 DG PR CS2113-T10-1 DG PR
    Zufiqqar CS2113-T10-1 DG PR CS2113-W10-3 DG PR CS2113-T10-2 DG PR
    boonjuey CS2113-T10-1 DG PR CS2113-W10-3 DG PR CS2113-T10-2 DG PR
    Tyuanyuan CS2113-T10-1 DG PR CS2113T-F08-1 DG PR CS2113-T10-2 DG PR
    JoviYeung92 CS2113-T10-1 DG PR CS2113T-F08-1 DG PR CS2113-T10-2 DG PR
    nagiteja CS2113-T10-1 DG PR CS2113T-F08-1 DG PR CS2113-T10-2 DG PR
    KevinNgWK CS2113-T10-2 DG PR CS2113T-F08-1 DG PR CS2113-T10-1 DG PR
    brynagoh CS2113-T10-2 DG PR CS2113T-F08-1 DG PR CS2113-T10-3 DG PR
    kangxinwang CS2113-T10-2 DG PR CS2113T-F08-2 DG PR CS2113-T10-3 DG PR
    JethroPhuah CS2113-T10-2 DG PR CS2113T-F08-2 DG PR CS2113-T10-3 DG PR
    ManikaHennedige CS2113-T10-2 DG PR CS2113T-F08-2 DG PR CS2113-T10-3 DG PR
    averliz CS2113-T10-3 DG PR CS2113T-F08-2 DG PR CS2113-T10-4 DG PR
    lamzf1998 CS2113-T10-3 DG PR CS2113T-F08-2 DG PR CS2113-T10-4 DG PR
    e0699194 CS2113-T10-3 DG PR CS2113T-F08-3 DG PR CS2113-T10-4 DG PR
    FarmZH98 CS2113-T10-3 DG PR CS2113T-F08-3 DG PR CS2113-T10-4 DG PR
    jalvinchan CS2113-T10-3 DG PR CS2113T-F08-3 DG PR CS2113-T10-4 DG PR
    yanli1215 CS2113-T10-4 DG PR CS2113T-F08-3 DG PR CS2113-T10-3 DG PR
    Chihui8199 CS2113-T10-4 DG PR CS2113T-F08-4 DG PR CS2113-W10-1 DG PR
    jovanhuang CS2113-T10-4 DG PR CS2113T-F08-4 DG PR CS2113-W10-1 DG PR
    NgManSing CS2113-T10-4 DG PR CS2113T-F08-4 DG PR CS2113-W10-1 DG PR
    s-t-e-f CS2113-T10-4 DG PR CS2113T-F08-4 DG PR CS2113-W10-1 DG PR
    yyixue CS2113-W10-1 DG PR CS2113T-T09-1 DG PR CS2113T-F08-1 DG PR
    seangoats CS2113-W10-1 DG PR CS2113T-T09-1 DG PR CS2113-W10-2 DG PR
    vaiish371 CS2113-W10-1 DG PR CS2113T-T09-1 DG PR CS2113-W10-2 DG PR
    zihan9485 CS2113-W10-1 DG PR CS2113T-T09-1 DG PR CS2113-W10-2 DG PR
    vvvvh123 CS2113-W10-1 DG PR CS2113T-T09-1 DG PR CS2113-W10-2 DG PR
    jianningzhuang CS2113-W10-2 DG PR CS2113T-T09-2 DG PR CS2113-W10-3 DG PR
    bryanwhl CS2113-W10-2 DG PR CS2113T-T09-2 DG PR CS2113-W10-3 DG PR
    AlexanderTanJunAn CS2113-W10-2 DG PR CS2113T-T09-2 DG PR CS2113-W10-3 DG PR
    blank-bank CS2113-W10-2 DG PR CS2113T-T09-2 DG PR CS2113-W10-3 DG PR
    NoorSarrah CS2113-W10-3 DG PR CS2113T-T09-2 DG PR CS2113T-T09-1 DG PR
    MingShun98 CS2113-W10-3 DG PR CS2113T-T09-3 DG PR CS2113T-F08-1 DG PR
    Chiamjiaen CS2113-W10-3 DG PR CS2113T-T09-3 DG PR CS2113T-F08-1 DG PR
    huachen24 CS2113-W10-3 DG PR CS2113T-T09-3 DG PR CS2113T-F08-1 DG PR
    jhjhajh CS2113-W10-3 DG PR CS2113T-T09-3 DG PR CS2113T-F08-1 DG PR
    EmilyTJX CS2113T-F08-1 DG PR CS2113T-T09-4 DG PR CS2113-W10-1 DG PR
    Krithigha24 CS2113T-F08-1 DG PR CS2113T-T09-4 DG PR CS2113T-F08-2 DG PR
    BlubberMonster CS2113T-F08-1 DG PR CS2113T-T09-4 DG PR CS2113T-F08-2 DG PR
    hazelhedmine CS2113T-F08-1 DG PR CS2113T-T09-4 DG PR CS2113T-F08-2 DG PR
    nivikcivik CS2113T-F08-1 DG PR CS2113T-T09-4 DG PR CS2113T-F08-2 DG PR
    liping-eng CS2113T-F08-2 DG PR CS2113T-W09-1 DG PR CS2113T-T09-2 DG PR
    JonathanKhooTY CS2113T-F08-2 DG PR CS2113T-W09-1 DG PR CS2113T-F08-3 DG PR
    iamakilahamed CS2113T-F08-2 DG PR CS2113T-W09-1 DG PR CS2113T-F08-3 DG PR
    hussain1998 CS2113T-F08-2 DG PR CS2113T-W09-1 DG PR CS2113T-F08-3 DG PR
    limwenfeng CS2113T-F08-2 DG PR CS2113T-W09-1 DG PR CS2113T-F08-3 DG PR
    sarzorwyn CS2113T-F08-3 DG PR CS2113T-W09-2 DG PR CS2113T-F08-4 DG PR
    wjchoi0712 CS2113T-F08-3 DG PR CS2113T-W09-2 DG PR CS2113T-F08-4 DG PR
    Rye98 CS2113T-F08-3 DG PR CS2113T-W09-2 DG PR CS2113T-F08-4 DG PR
    Rizavur CS2113T-F08-3 DG PR CS2113T-W09-2 DG PR CS2113T-F08-4 DG PR
    SimBowen CS2113T-F08-4 DG PR CS2113T-W09-2 DG PR CS2113T-T09-1 DG PR
    KimIdeas8 CS2113T-F08-4 DG PR CS2113T-W09-3 DG PR CS2113T-T09-1 DG PR
    fangxinjia0203 CS2113T-F08-4 DG PR CS2113T-W09-3 DG PR CS2113T-T09-1 DG PR
    soepaingzaw CS2113T-F08-4 DG PR CS2113T-W09-3 DG PR CS2113T-T09-1 DG PR
    rageqqq CS2113T-T09-1 DG PR CS2113T-W09-3 DG PR CS2113-W10-3 DG PR
    douglaslewpc CS2113T-T09-1 DG PR CS2113T-W09-3 DG PR CS2113T-T09-2 DG PR
    Cocokkkk CS2113T-T09-1 DG PR CS2113T-W09-4 DG PR CS2113T-T09-2 DG PR
    951553394 CS2113T-T09-1 DG PR CS2113T-W09-4 DG PR CS2113T-T09-2 DG PR
    zikunz CS2113T-T09-1 DG PR CS2113T-W09-4 DG PR CS2113T-T09-2 DG PR
    ongweisheng CS2113T-T09-2 DG PR CS2113T-W09-4 DG PR CS2113T-F08-2 DG PR
    E00426142 CS2113T-T09-2 DG PR CS2113T-W09-4 DG PR CS2113T-T09-3 DG PR
    gerardtwk CS2113T-T09-2 DG PR CS2113-F10-1 DG PR CS2113T-T09-3 DG PR
    LeeHanYongAndy CS2113T-T09-2 DG PR CS2113-F10-1 DG PR CS2113T-T09-3 DG PR
    jonahtwl CS2113T-T09-2 DG PR CS2113-F10-1 DG PR CS2113T-T09-4 DG PR
    tzexern CS2113T-T09-3 DG PR CS2113-F10-1 DG PR CS2113T-T09-4 DG PR
    marklowsk CS2113T-T09-3 DG PR CS2113-F10-2 DG PR CS2113T-T09-4 DG PR
    kewenlok CS2113T-T09-3 DG PR CS2113-F10-2 DG PR CS2113T-T09-4 DG PR
    LJ-37 CS2113T-T09-3 DG PR CS2113-F10-2 DG PR CS2113T-T09-4 DG PR
    oscarlai1998 CS2113T-T09-4 DG PR CS2113-F10-2 DG PR CS2113T-T09-3 DG PR
    fupernova CS2113T-T09-4 DG PR CS2113-F10-3 DG PR CS2113T-W09-1 DG PR
    xseh CS2113T-T09-4 DG PR CS2113-F10-3 DG PR CS2113T-W09-1 DG PR
    ivanchongzhien CS2113T-T09-4 DG PR CS2113-F10-3 DG PR CS2113T-W09-1 DG PR
    H-horizon CS2113T-T09-4 DG PR CS2113-F10-3 DG PR CS2113T-W09-1 DG PR
    isaharon CS2113T-W09-1 DG PR CS2113-T10-1 DG PR CS2113T-W09-2 DG PR
    aliciatay-zls CS2113T-W09-1 DG PR CS2113-T10-1 DG PR CS2113T-W09-2 DG PR
    8kdesign CS2113T-W09-1 DG PR CS2113-T10-1 DG PR CS2113T-W09-2 DG PR
    brandonfoong CS2113T-W09-1 DG PR CS2113-T10-1 DG PR CS2113T-W09-2 DG PR
    hiongkaihan CS2113T-W09-1 DG PR CS2113-T10-1 DG PR CS2113T-W09-2 DG PR
    leowxx CS2113T-W09-2 DG PR CS2113-T10-2 DG PR CS2113T-W09-1 DG PR
    fsgmhoward CS2113T-W09-2 DG PR CS2113-T10-2 DG PR CS2113T-W09-3 DG PR
    Emkay16 CS2113T-W09-2 DG PR CS2113-T10-2 DG PR CS2113T-W09-3 DG PR
    • Decide which of the given team(s) to review:

      • Open the DG link of the team allocated as 'First choice'.
      • Confirm that the DG has significant updates, to the diagrams in particular. If it doesn't, you can try the DG of the 'Second choice' team, and failing that, 'Third choice' team.
      • If neither one of the three has enough updates but collectively they have enough updates, you can also review all of them.
      • Failing all above, you can pick any other team(s) to review.
      • Try to give at least 4 comments in total.
      • If the PR already has reviews, you can give your own input of the existing review comments too.
    • Go to the PR of the team(s) you have chosen to review.

    • Review the Design and the Implementation sections w.r.t possible DG bugs (given further down); add your observations as comments.

    • In the PR, add review comments (i.e., in the files changed tab) in the corresponding place of the code.
      • In this case, choose the option rather than option.
    • But if the 'files changed' tab is too laggy, you can add a normal comment instead in the conversation tab.
      • In this case, enter each observation as a separate comment (reason: our bot will count the number of comments you have given to determine if you qualify for participation points)
    • As you know, it is better to phrase your comments as question/doubts (e.g., Is this format correct? Should it be ... instead?) rather than directives (e.g., Change this to ...).
      Where possible, use screenshots from their DG in your comments, preferably with annotations. This is particularly useful when commenting on diagrams. An example given below:
    • The understanding you gain from this exercise can indirectly determine how well you do in your own project. Note that your comments will be reviewed by a tutor later.
    DG - Possible Bugs

    Pay attention to these as they are same as the final evaluation criteria of the DG.

    UML diagrams:

    • Notation incorrect or not compliant with the notation covered in the module.
    • Some other type of diagram used when a UML diagram would have worked just as well.
    • The diagram used is not suitable for the purpose it is used.
    • The diagram is too complicated.

    Use of visuals

    • Not enough visuals e.g., screenshots/diagrams
    • The visuals are not well integrated to the explanation
    • The visuals are unnecessarily repetitive e.g., same visual repeated with minor changes

    Use of examples:

    • Not enough or too many examples e.g., sample inputs/outputs

    Explanations:

    • The explanation is too brief or unnecessarily long.
    • The information is hard to understand for the target audience. e.g., using terms the reader might not know

    Neatness/correctness:

    • looks messy
    • not well-formatted
    • broken links, other inaccuracies, typos, etc.
    • hard to read/understand
    • unnecessary repetitions (i.e., hard to see what's similar and what's different)

    Also see:

    • Aim to showcase your documentation skills. The stated objective of the DG is to explain the implementation to a future developer, but a secondary objective is to serve as evidence of your ability to document deeply-technical content using prose, examples, diagrams, code snippets, etc. appropriately. To that end, you may also describe features that you plan to implement in the future, even beyond v2.1 (hypothetically).
      For an example, see the description of the undo/redo feature implementation in the AddressBook-Level3 developer guide.
    • Use multiple UML diagram types. Following from the point above, try to include UML diagrams of multiple types to showcase your ability to use different UML diagrams.
    • Diagramming tools:
      • AB3 uses PlantUML (see the guide Using PlantUML @SE-EDU/guides for more info).
      • You may use any other tool too (e.g., PowerPoint). But if you do, note the following:
        • Choose a diagramming tool that has some 'source' format that can be version-controlled using git and updated incrementally (reason: because diagrams need to evolve with the code that is already being version controlled using git). For example, if you use PowerPoint to draw diagrams, also commit the source PowerPoint files so that they can be reused when updating diagrams later.
        • Use the same diagramming tool for the whole project, except in cases for which there is a strong need to use a different tool due to a shortcoming in the primary diagramming tool. Do not use a mix of different tools simply based on personal preferences.
      • Can i.e., automatically reverse engineered from the Java codeIDE-generated UML diagrams be used in project submissions? Not a good idea. Given below are three reasons each of which can be reported by evaluators as 'bugs' in your diagrams, costing you marks:
        • They often don't follow the standard UML notation (e.g., they add extra icons).
        • They tend to include every little detail whereas we want to limit UML diagrams to important details only, to improve readability.
        • Diagrams reverse-engineered by an IDE might not represent the actual design as some design concepts cannot be deterministically identified from the code. e.g., differentiating between multiplicities 0..1 vs 1, composition vs aggregation
    • Keep diagrams simple. The aim is to make diagrams comprehensible, not necessarily comprehensive.
      Ways to simplify diagrams:
      • Omit less important details. Examples:
        • a class diagram can omit minor utility classes, private/unimportant members; some less-important associations can be shown as attributes instead.
        • a sequence diagram can omit less important interactions, self-calls.
      • Omit repetitive details e.g., a class diagram can show only a few representative ones in place of many similar classes (note how the AB3 Logic class diagram shows concrete *Command classes using a placeholder XYZCommand).
      • Limit the scope of a diagram. Decide the purpose of the diagram (i.e., what does it help to explain?) and omit details not related to it.
      • Break diagrams into smaller fragments when possible.
        • If a component has a lot of classes, consider further dividing into sub-components (e.g., a Parser sub-component inside the Logic component). After that, sub-components can be shown as black-boxes in the main diagram and their details can be shown as separate diagrams.
        • You can use ref frames to break sequence diagrams to multiple diagrams.
      • Use visual representations as much as possible. E.g., show associations and navigabilities using lines and arrows connecting classes, rather than adding a variable in one of the classes.
      • For some more examples of what NOT to do, see here.
    • Integrate diagrams into the description. Place the diagram close to where it is being described.
    • Use code snippets sparingly. The more you use code snippets in the DG, and longer the code snippet, the higher the risk of it getting outdated quickly. Instead, use code snippets only when necessary and cite only the strictly relevant parts only. You can also use pseudo code instead of actual programming code.
    • Resize diagrams so that the text size in the diagram matches the the text size of the main text of the diagram. See example.

    These class diagrams seem to have lot of member details, which can get outdated pretty quickly:


    This class diagram seems to have too many classes:
    These sequence diagrams are bordering on 'too complicated':

    In this negative example, the text size in the diagram is much bigger than the text size used by the document:

    It will look more 'polished' if the two text sizes match.

    • After the tutorial, if you are unsure about a concern raised by a reviewer, you can post in the forum to seek the opinion of the teaching team.


    tP week 10: mid-v2.0tP week 12: mid-v2.1