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

Week 2 [Fri, Jan 14th] - Project

iP:

  1. Learn about the project
  2. Set up prerequisites
  3. Set up the project in your computer
  4. Add Increments while committing frequently: Level-1, Level-2, Level-3, Level-4, A-TextUiTesting, Level-5, Level-6, A-Enums Thu, Jan 20th 2359

iP

The iP (and the tP) undergoes changes after each semester. As such, teething issues are a possibility. If you encounter any problem while doing the iP/tP, please post in the forum so that we can take necessary actions.

We discourage you from doing project tasks allocated to future weeks. Reasons: In order to help you gain the ability to apply knowledge or do tasks effortlessly as if you have been doing them for a long timefluency (and also to better simulate real projects), we want the project work to be done at multiple times with time gaps in betweenspaced and span a longer period, rather than to be done as a short burst.

Reminder: as per iP grading criteria, some increments need to to be done in each week for you to get full marks.

Please follow instructions carefully. Any deviations can cause our grading scripts to miss your work (and result in you not getting credit for the work).

Deadline:

Note the typical deadline weekly project tasks:

But as there are no tutorials this week, you have until the next lecture to finish this week's iP tasks.

1 Learn about the project

  • Read the following two sections, if you haven't done so already:

2 Set up prerequisites

  • Ensure you have followed the Preparation sections of the following module tools:

3 Set up the project in your computer

  • Read through this week's topics before starting the project.
  1. Fork https://github.com/nus-cs2103-AY2122S2/ip.
  2. Enable the issue tracker of your fork (Go to Settings of your fork, scroll to the Features section, and tick the Issues checkbox). Reason: at times we post feedback on your issue tracker.
    If the issue tracker is enabled, you should be able to visit the following URL https://github.com/{your_user_name}/ip/issues
    e.g., https://github.com/johnDoe/ip/issues
  3. Clone the fork onto your computer.
  4. Set up the project in your IDE as explained in the README file.

If you encounter technical problems, follow the guidelines given below in seeking help:

FAQ about iP increments
  • Q. How are the iP git tags used in grading?
    A. A git tag is a self-declaration that you think you are done with the iP increment. We take your word for it. We don't check the code to see if you have actually done the said increment. Therefore, it is just a mechanism for you to self-declare progress and for us to monitor those progress declarations.
  • Q. What if I discovered a bug after I finished an increment?
    A. Go ahead and fix it in a subsequent commit. There is no need to update the previous commit or move the corresponding tag to the new commit. As we do not test your code at every tag, earlier bugs will not affect your grade as long as they are fixed later. Similarly, feel free to improve the code of previous increments later.
  • Q. I did multiple increments in the same commit. How to fix?
    A. You can add the corresponding tags to the same commit.
    Optionally, if you haven't pushed the commit to the fork yet, you can try to figure out how to split that commit into multiple commits.
  • Q. The requirements of an increment scheduled for this week is already satisfied by the work I did in an earlier week. What now?
    A. You can add the corresponding tag to the earlier commit (or the latest commit -- it doesn't matter) and push the tag.
  • Q. My iP increments are not detected by the dashboard because I forgot to push my tags earlier. What now?
    A. Not to worry. Just push the tags now. They will be detected by the dashboard at the next update. There is no penalty if mistakes are detected and fixed soon after.
  • Q. Oh no! I made a mistake in my tag/branch name.
    A. It's OK; correct it now.

4 Add Increments while committing frequently: Level-1, Level-2, Level-3, Level-4, A-TextUiTesting, Level-5, Level-6, A-Enums Thu, Jan 20th 2359

  • Implement the following in this context, an increment is a Duke level or a Duke extensionincrements in the given order.
  • From this point onward, commit code at important points. Minimally, commit after completing each increment.
    Remember not to commit .class files and any other file that should not be revision controlled.
  • From this point onward, after completing each increment,
    • git tag the commit with the exact increment ID e.g., Level-2, A-TextUiTesting
    • git push the code to your fork ( git doesn't push tags unless you specifically ask it to)
Duke Level-1: Greet, Echo, Exit

Duke Level-2: Add, List

Duke Level-3: Mark as Done

Duke Level-4: ToDo, Event, Deadline

Duke A-TextUiTesting: Automated Text UI Testing

Duke Level-5: Handle Errors

Duke Level-6: Delete

Duke A-Enums: Use Enums if-applicable