Standards/ConventionsiP: Week 2


iP (Individual Project): Overview

The objectives of the individual project (iP) are to learn or refresh the basics of:

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

All the skills you 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 the farther you go beyond the minimal expectations, the easier the tP will be.

The iP is based on the generic project called Project Duke. Its overview is given below.

Duke Overview

Duke, the Java Mascot
[credit: Wikipedia]

Project Duke is an educational project that takes you through building a small piece of software incrementally, while you apply as many Java and SE techniques as possible.

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.

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 (from: Aug 6th 2pm to: 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.
    ____________________________________________________________

mark 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!
    ____________________________________________________________

You are encouraged to give your chatbot another name (and a different personality if you wish), to differentiate yours from others'. If you give it a personality, please do not use slang or words that some classmates might not know, and avoid offensive language.

The project consists of the following increments:

  • Levels: A series of features to add to your chatbot in the given order; some can be skipped. These have been named Level 0 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 entity.


You will do the iP over the first half of the semester.

AI Guidance » Use of AI in the iP

As mentioned in Course Expectations, you'll need to decide the level of AI use on a case-by-case basis.

We'll provide you AI guidance for some tasks, corresponding to levels AI-4 to AI-5 range. If you have chosen a different level for a task, adjust accordingly.



Standards/ConventionsiP: Week 2