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
  • Java exercisesiP: Week 2


    iP (Individual Project): Overview

    The objectives of the individual project (iP) is to learn/refresh the basics of,

    • Java
    • OOP
    • IDEs
    • Git and GitHub
    • Project automation tools
    • Code quality

    All skills you will learn in the iP will be useful in the team project (tP). Some of the iP code can even be adapted for the tP.
    The more you do in the iP and farther you push beyond the minimal expectations, the easier it will be in your tP.

    The iP is based on the generic project called Project Duke, the overview of which is given below.

    Duke Overview

    Project Duke

    Duke, the Java Mascot
    [credit: Wikipedia]

    Project Duke is a educational software project designed to take you through the steps of building a small software incrementally, while applying as many Java and SE techniques as possible along the way.

    The project aims to build a product named Duke, a Personal Assistant Chatbot that helps a person to keep track of various things. The name Duke was chosen as a placeholder name, in honor of Duke, the Java Mascot. You may give it any other name and personality you wish.

    Here is a sample interaction with Duke:

        ____________________________________________________________
          ____        _        
         |  _ \ _   _| | _____ 
         | | | | | | | |/ / _ \
         | |_| | |_| |   <  __/
         |____/ \__,_|_|\_\___|
    
         Hello! I'm Duke
         What can I do for you?
        ____________________________________________________________
    
    list
        ____________________________________________________________
         Here are the tasks in your list:
         1.[T][X] read book
         2.[D][ ] return book (by: June 6th)
         3.[E][ ] project meeting (at: Aug 6th 2-4pm)
         4.[T][X] join sports club
        ____________________________________________________________
    
    todo borrow book
        ____________________________________________________________
         Got it. I've added this task: 
           [T][ ] borrow book
         Now you have 5 tasks in the list.
        ____________________________________________________________
    
    
    deadline return book /by Sunday
        ____________________________________________________________
         Got it. I've added this task: 
           [D][ ] return book (by: Sunday)
         Now you have 6 tasks in the list.
        ____________________________________________________________
    
    done 2
        ____________________________________________________________
         Nice! I've marked this task as done: 
           [D][X] return book (by: June 6th)
        ____________________________________________________________
    
    blah
        ____________________________________________________________
         ☹ OOPS!!! I'm sorry, but I don't know what that means :-(
        ____________________________________________________________
    
    bye
        ____________________________________________________________
         Bye. Hope to see you again soon!
        ____________________________________________________________
    
    

    The project consists of the following increments:

    • Levels: A series of features, meant to be added to Duke in the given order, although some can be skipped. These have been named Level 1 to Level 10 to indicate how each makes the product progressively "level up".
    • Extensions:
      • Category A These are internal/feature enhancements meant to help you practice a specific Java or an SE technique.
      • Category B These are enhancements related to task tracking.
      • Category C These are enhancements, not specifically related to task tracking.
      • Category D Each of these adds the ability to track another type of entities.

    The iP is to be done over the first half of the semester.

    • Volatile requirements ahead!: Some requirements will only be released later (or could be changed along the way), to simulate how requirements of a project may not be available at the start or stay the same during the project.
    • Requirements may differ between students!: Note that some requirements that are to be released later could be different from one student to another.

    Java exercisesiP: Week 2