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, 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 0toLevel 10to 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.
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.