- Learn about the project
- Set up prerequisites
- Set up the project on your computer
- Add Increments while committing frequently:
Level-0,Level-1,Level-2,Level-3,Level-4,Level-5,Level-6,A-EnumsFri, Aug 21st 1600
If you encounter any problem while doing the project, please post in the forum so that we can take the necessary action. We did significant changes to the individual project (iP) and the team project (tP) this semester. Hence, teething issues are a possibility.
We discourage you from doing project tasks allocated to future weeks, although it is fine to stay ahead of the schedule a bit (but no more than a week ahead).
Reasons: To help you gain and better simulate real projects, we want the project work to be over a longer period, rather than done as a short burst.
Reminder: As stated in the iP grading criteria, some increments need to be done each week. Clumping all the iP work into a short burst will not earn you full marks.
Please follow instructions closely. Any deviations can cause our grading scripts to miss your work (and result in you not getting credit for it).
Deadline:
Note the typical deadline for weekly project tasks:
As stated above, you have until the weekly briefing at the end of this week (i.e., Fri, Aug 21st 1600) to finish this week's iP tasks, but if you fail to do so, we won't penalize you if you can catch up within one more week after that deadline.
2 Set up prerequisites
- Ensure you have followed the Preparation sections of the following course tools:
3 Set up the project on your computer
Read through this week's topics before starting the project.
If you encounter technical problems while doing the iP, follow the guidelines given below:
Your GitHub username : 
Note: Type your GitHub username in the blank above so that we can customize sample commands to fit you.
- Fork https://github.com/NUS-CS2103-AY2627-S1/ip, while noting the points below:Keep the fork name as
ipor else our grading scripts will not be able to detect it. You can change the fork name to something else after the semester (and the grading) is over e.g., after receiving your grade for the course.
Keep the default branch name asmaster. While Git-Mastery usesmainas the default branch name, iP and tP usemaster. As both these are used widely in the industry, it is good for you to be comfortable using both.
Keep the source location as[project root]/src. Our grading scripts look for code in this folder.Uncheck the[ ] Copy the master branch onlyoption so that you get a copy of the full repo. - Enable the issue tracker of your fork (Go to
Settings, scroll to theFeaturessection, and select theIssuescheckbox). 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/new
e.g., https://github.com/[[username: JohnDoe]]/ip/issues/new - Clone the fork onto your computer.Avoid putting Git-controlled files inside cloud-synced (e.g., OneDrive, Dropbox) folders. Reason: Multiple tools trying to detect/sync changes in the same folder can cause conflicts and unexpected behavior.
If you want to access project files from multiple computers, use Git to do that (rather than cloud-syncing tools). - Set up the project in your IDE as explained in the README file, if you plan to use an IDE for the project.Not willing to lose Vim power? If you are worried about losing access to powerful Vim features when using an IDE for the project, note that most IDEs have a Vim plugin (e.g., IdeaVim plugin) for using Vim features within the IDE. In other words, it is possible to access both IDE features and Vim features at the same time!
- Run
Duke.javato verify that your project setup works.
4 Add Increments while committing frequently: Level-0, Level-1, Level-2, Level-3, Level-4, Level-5, Level-6, A-Enums Fri, Aug 21st 1600
Implement the below in the given order.
Keep in mind ...
- From this point onward, commit code at important points. Minimally, commit after completing each increment.
Remember not to commit.classfiles and any other file that should not be revision-controlled.
- From this point onward, after completing each increment,
git tagthe commit that completed the increment with the exact increment ID e.g., Level-2, A-ClassesGit tags are not the same as Git commit messages.%%{init: { 'theme': 'default', 'gitGraph': {'mainBranchName': 'master'}} }%% gitGraph commit id: "..." commit id: "Rename main class" commit id: "Add greeting" tag: "Level-0" commit id: "Add support for echo" commit id: "Fix bug in echo" tag: "Level-1" commit id: "Add support for list" commit id: "Add support for bye"git pushthe code to your forkGit doesn't push tags unless you specifically ask it to. After pushing a tag to your fork, you should be able to see that tag by visitinghttps://github.com/YOUR_USER_NAME/REPO_NAME/tagse.g., https://github.com/[[username: JohnDoe]]/ip/tagsIf you encounter issues connecting Sourcetree with your GitHub account, refer to this Sourcetree Tutorial.
- The relevant textbook topics are:
- Git-Mastery → Lesson: T1L5. Saving a Snapshot
- Git-Mastery → Lesson: T2L5. Updating the Remote Repo
- Git-Mastery → Lesson: T4L2. Tagging Commits
- Be familiar with how this course expects to use AI tools:
FAQ Wait. So, do we hand-code the iP or use the prompts given?
A: It's your decision, as given in the panel above. If you are not sure, you can start with level AI-2 of AI use) and move to higher levels only when you feel it is justified.
- Remember to take note of our plagiarism policies, if you haven't done so already: