This site is from a past semester! The current version will be here when the new semester starts.

iP: Week 5iP: Week 7


iP: Week 6

  1. Add Increments: A-BetterGui, A-Personality, A-MoreErrorHandling, A-MoreTesting, A-AiAssisted
  2. Finalize the features
  3. Set up a product website
  4. Submit the final version Fri, Feb 23rd 2359

1 Add Increments: A-BetterGui, A-Personality, A-MoreErrorHandling, A-MoreTesting, A-AiAssisted

  • As before, we recommend (but not require) that each increment is done as a separate branch and merged to the master branch when ready fully done.
Duke A-BetterGui: Better GUI optional

Duke A-Personality: A unique personality optional

Duke A-MoreErrorHandling: More error handling optional

Duke A-MoreTesting: More testing optional

  • If you are already following the iP.AI route, you may add the A-AiAssisted tag to the latest commit of your repo without any other work.
  • Otherwise (i.e., if you haven't been using AI tools in the iP until now), the increment below is an opportunity for you to use the iP to explore how AI tools can help with programming tasks. If you take it up, in places where you use code that you wrote with the help of AI tools, give some details (e.g., which tool you used how it helped) as a code comment. Alternatively, you can add an AI.md file, similar to the iP.AI route.
Duke A-AiAssisted: Enhance using AI tools optional

2 Finalize the features

  • You may give the product any name, but do not rename the repo.
  • Reminder: you can give the chatbot any personality (there is no need to follow the exact command/response formats given)
  • Ensure that the name of the product name is not Duke (as required by Level-0).
    Ensure the correct product name appears everywhere in the UI e.g., titlebar of the GUI.
  • Remember to give credit to any code you reused or solutions you adopted from others. Reuse without giving credit is plagiarism and will be reported to the university for disciplinary action.

3 Set up a product website

  • Add a representative screenshot of the product to the docs folder.
    • The file should be in the docs folder and named Ui.png exactly (even if the file format is not png, name it png)
    • Ui.png should show the full GUI window (i.e., not just the part containing the chat messages).
    • Ui.png should be a single GUI window (i.e., do not stitch multiple screenshots together).
    • Ideally, the product name should visible in the screenshot e.g., in the title bar of the Window
    • Also note the tips given in the panel below:

  • Add a brief User Guide (UG)
Duke A-UserGuide: User Guide

  • If you added the Ui.png correctly and set up the product website correctly, you should be able to see your screenshot in the iP Showcase page (a link to the iP Showcase page is also available in the top navigation menu → Links) and you should be able to access the image using the link https://{your user name}.github.io/{repo name}/Ui.png (e.g., https://johndoe.github.io/ip/Ui.png).

4 Submit the final version Fri, Feb 23rd 2359

  • Soft deadline: midnight before the tutorial
  1. Double-check to confirm your iP meets the criteria for full marks:

Admin iP - Grading


  1. Create a new jar file
    • Create the JAR file using Gradle -- this needs to be a fat JAR file (hence, it's best created using Gradle's shadow plugin).
    • The JAR file should be cross-platform and should work in a computer that has Java 11 (but no other Java version). To avoid version compatibility issues, we strongly recommend the following approach:
      1. Open a terminal window, and navigate to the root of your project folder.
      2. Run the java -version command to confirm the terminal is using Java 11.
      3. Run the ./gradlew clean shadowJar command to create the JAR file.
  2. Do the following smoke tests to ensure the jar file works (reason: a similar flow will be used when grading your iP).
    1. Copy the jar file to an empty folder and test it from there. This should surface issues with hard-coded file paths.
    2. Pass the jar file to team members and ask them to do a test drive. Assuming some of your team members' OS differ from yours, this should verify if the app is cross-platform.
      If you don't have ready access to a specific OS, post a link to your JAR in the forum and ask others to help with the smoke testing -- some of them will even appreciate the opportunity to help a classmate.
      Note that concepts you encounter while doing course project tasks (e.g., smoke testing) are in the scope of the final exam.
  3. Create a new release on GitHub (e.g., v0.2) and upload the JAR file.
    • Recommended to refrain from uploading multiple JAR files as this can cause extra work for the evaluators.
Duke A-Release: Release


iP: Week 5iP: Week 7