This site is from a past semester! The current version will be here when the new semester starts.
CS2103/T 2020 Aug-Dec
  • Full Timeline
  • Week 1 [Mon, Aug 10th]
  • Week 2 [Fri, Aug 14th]
  • Week 3 [Fri, Aug 21st]
  • Week 4 [Fri, Aug 28th]
  • Week 5 [Fri, Sep 4th]
  • Week 6 [Fri, Sep 11th]
  • Week 7 [Fri, Sep 18th]
  • Week 8 [Fri, Oct 2nd]
  • Week 9 [Fri, Oct 9th]
  • Week 10 [Fri, Oct 16th]
  • Week 11 [Fri, Oct 23rd]
  • Week 12 [Fri, Oct 30th]
  • Week 13 [Fri, Nov 6th]
  • Textbook
  • Admin Info
  • Dashboards
  •  Individual Project (iP):
  • Individual Project Info
  • iP Upstream Repo
  • iP Showcase
  • iP Code Dashboard
  • iP Progress Dashboard

  •  Team Project (tP):
  • Team Project Info
  • Addressbook-level3
  • Team List
  • tP Code Dashboard
  • tP Progress Dashboard
  • Report Bugs
  • Forum
  • Gitter (Chat)
  • Instructors
  • Announcements
  • Files
  • Tutorial Schedule
  • Java Coding Standard
  • Git Conventions
  • Forum Activities Dashboard
  • Participation Dashboard
  • Week 3 [Fri, Aug 21st] - Tutorial

    0 [CS2103 students only] Form teams

    • Form teams, under the guidance of the tutor. See the panel below for team forming constrains and other related info.


    [Picture: The team that was at the top of early Google]

    When to form teams

    • CS2103T: Your team will be formed by the CS2101 side.
    • CS2103: Team forming will be done at the start of the week 3 tutorial. If you are not there at the team forming time and others in the class are unaware which team you wanted to be in, we'll have to put you into a team randomly.

    Team size

    • The default team size is five.

    Team composition

    • We allow some freedom in choosing team members, subject to these constraints:

      • All team members should be in the same tutorial. Delay forming teams until your place in a tutorial is confirmed. We do not allow changing tutorials to team up with your preferred team mates.
      • Teams of single nationality are not allowed unless the only language common among all team members is English. e.g. an all-Singaporean team that include both Chinese and Malay students. Rationale: to train you to work in multicultural teams, to ensure that English is used for all project communication
      • No more than one exchange students per team Rationale: to increase interaction between exchange students and NUS students.
      • Same gender teams are discouraged but allowed. Rationale: to train you for mixed-gender work environments.
    • If you prefer not to form teams yourselves, not to worry; we'll put you in a team.

    • We may modify teams when circumstances call for it. There is no avenue for you to object. Staying with your preferred team is not guaranteed.

    1 Introduce yourselves

    • Introduce yourself to the tutor and the members of your team and the partner team (i.e., the other team under your tutor)

    2 Find coding standard violations extra

    • Do the following exercise, if you have time.

    Consider the code given below:

    import java.util.*;

    public class Task {
    public static final String descriptionPrefix = "description: ";
    private String description;
    private boolean important;
    List<String> pastDescription = new ArrayList<>(); // a list of past descriptions

    public Task(String d) {
    this.description = d;
    if (!d.isEmpty())
    this.important = true;
    }

    public String getAsXML() { return "<task>"+description+"</task>"; }

    /**
    * Print the description as a string.
    */
    public void printingDescription(){ System.out.println(this); }

    @Override
    public String toString() { return descriptionPrefix + description; }
    }

    In what ways do the code violate the coding standard you are expected to follow?

    Here are three:

    • descriptionPrefix is a constant and should be named DESCRIPTION_PREFIX
    • method name printingDescription() should be named as printDescription()
    • boolean variable important should be named to sound boolean e.g., isImportant

    There are many more.

    3 Decide a weekly project meeting time

    • If you haven't done so already, do the following tP task.
    • After forming teams, set up a weekly project meeting time/venue (and communication channels) with your team members:

    Team Communications

    • Use English for all team communications, both spoken and written.

    • We recommend at least one 1-2 hour synchronous online project meeting per week, in addition to any asynchronous communicating. Reason: Having all members available at the same time will facilitate easier collaboration and more peer-learning.

      • Fix a weekly 1-2 hour time slot and a venue for project meetings after the team has been finalized (latest by the end of week 3 tutorial). All members are expected to attend weekly project meetings (not doing so could lower the peer evaluation ratings you receive, which in turn will be factored into your grade).
      • The best time for the weekly project meeting is the period Saturday, Sunday, Monday, Tuesday i.e., soon after the lecture but well ahead of the deadline for weekly tasks. Reason: After the lecture → you'll have the knowledge required for upcoming project tasks; before the deadline → you can use the meeting to deal with weekly project tasks.

    4 Help team members troubleshoot iP problems

    • Now that you are in a team, it's time to build up the team spirit. For starters, you can start helping each other with module tasks. e.g., if anyone is facing problems in the iP, you can work together to solve them.