iP: Week 5iP: Week 7


iP: Week 6

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

1 Add Increment: A-AiAssisted

  • If you are already following the iP.AI route, you may add the A-AiAssisted tag to the latest commit of your repo without needing any further 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 AI-assisted code, 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.
  • You may also do this increment in combination with optional increments given later in this page. For example, you can do the A-BetterGui using AI assistance.
Duke A-AiAssisted: Enhance using AI tools

2 Add Increments: A-BetterGui, A-Personality, A-MoreErrorHandling, A-MoreTesting

  • As before, we recommend (but not require) that each increment is done as a separate branch and merged to the master branch when 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

3 Finalize the features

  • Ensure the product can handle common errors , such as the user making an unintentional error in the command, or the data file not being found in the expected location.
  • Ensure that the name of the product name is not Duke (as required by Level-0)
    and the name is shown correctly everywhere it appears in the UI e.g., title bar of the GUI.
    • Reminder: 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)
  • Remember to give credit for 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.

FAQ Can we get another round of automated code quality feedback?


FAQ What if my iP final submission doesn't meet the bar for full marks? Do I get a chance to resubmit?


4 Set up a product website

Your GitHub username :
Note: Type your GitHub username in the blank above so that we can customise sample commands to fit you.

  • 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, not UI.png (case-sensitive).
    • 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 be 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

Troubleshooting Markdown tables render correctly in GitHub file preview but not in the iP website.


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 username}.github.io/{repo name}/Ui.png (e.g., https://[[username: JohnDoe]].github.io/ip/Ui.png).

Troubleshooting Ui.png is not green in the dashboard even after I've added it to the repo.


5 Submit the final version Fri, Feb 20th 2359

  1. Double-check to confirm your iP meets the criteria for full marks, as given in the panel below.
    For example, ensure your Git Standard tag is green in the iP progress dashboard, as it is a necessary condition for you to receive 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 17. To avoid version compatibility issues, we strongly recommend the following approach:
      • Open a terminal window, and navigate to the root of your project folder.
      • Run the java -version command to confirm the terminal is using Java 17.
      • 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).
    • Copy the jar file to an empty folder and test it from there. This should surface issues with hard-coded file paths.
      When running the jar file for smoke testing, instead of double-clicking the jar file, do the following: open a terminal → navigate to the jar location → run the java -jar "JAR_FILE_NAME" command.
    • 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, you can ask others' help to smoke-test it by posting a smoke-testing request in the forum -- 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.

Troubleshooting My JAR file works on my OS, but not other OSes


Troubleshooting Error when running JAR file: JavaFX runtime components are missing


Troubleshooting Error when running JAR file: Error initializing QuantumRenderer: no suitable pipeline found


Troubleshooting Error when running JAR file: ... compiled by a more recent version of the Java Runtime


  1. Create a new release on GitHub (e.g., v0.2) and upload the JAR file.

    Your GitHub username :
    Note: Type your GitHub username in the blank above so that we can customise sample commands to fit you.

    • There is no need for the release to be tagged A-Release specifically.
    • Ensure your release appears at https://github.com/[[username: JohnDoe]]/ip/releases. Use an incognito browser window when checking this URL, to ensure the release is visible to the public.
    • The JAR file should be uploaded as an 'asset', with the .jar extension. Do not put it inside a zip file.
    • Refrain from uploading multiple JAR files into this release as this can cause extra work for the evaluators. Upload only the JAR file you want to be evaluated as your iP.
    • If you have multiple iP releases on GitHub, we take the JAR file from the latest release, irrespective of the release name or the tag used. So, feel free to create more releases if you happen to update the code after creating the initial release.
Duke A-Release: Release

The JAR, User Guide, and the code released via GitHub constitute the iP final submission; there is no separate submission on Canvas.

FAQ How to get a deadline extension for the iP final submission?



iP: Week 5iP: Week 7