Project: Teaching Assistant’s Personal Assistant (TAPA)

TAPA is a desktop contact management application used to manage students’ contact and progress. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

Given below are my contributions to the project.

  • Code contributed: RepoSense link

  • New Feature:
    • Added the ability to find students by specifying name and matriculation number. #47
      • What it does: Allows the user to search for students in TAPA based on their name or matriculation number.
      • Justification: This feature allows users to easily find students of interest, allowing TAs to easily get their contact details or for follow-up commands.
      • Highlights: The original find feature allows users to find students by keywords in their names, but due to the use of additional fields I believe the functionality was insufficient and added an additional ability to search by matriculation number. For this purpose, I created an additional predicate for the purpose of matching matriculation numbers.
  • New Feature:
    • Added the ability to filter students by module code. #105
      • What it does: Allows the user to filter students in TAPA by their module code.
      • Justification: This feature allows users to easily filter students by their module codes, allowing TAs to easily get their contact details or for follow-up commands.
      • Highlights: This feature was originally meant to be a standalone command separate from find, but I decided to make it an extension of it as there is some overlap in functionality. This proved tricky as it meant there were more complex cases to handle during input validation, but I was able to implement it successfully.
  • New Feature:
    • Added the ability to delete all students in a particular module. #135
      • What it does: Deletes all students of a particular module by the inputted module code.
      • Justification: This feature allows users to easily remove all students of a particular module after the semester is over.
  • Enhancements to existing features:
    • Modified the delete feature to allow deletion by a student’s matriculation number. #56
      • Justification: The delete command ships with the default AB3, but only takes in a single index as a possible parameter. I extended it to also allow users to input the student’s matriculation number as an alternative, as it will be easier for users to delete individual students if the list gets too long.
      • Highlights: I made use of the new predicate that I created for my implementation of the find command to implement this feature.
    • Modified the delete feature to allow deletion with multiple indices. #126
      • Justification: The delete command ships with the default AB3, but only takes in a single index as a possible parameter. I extended it to also allow users to input multiple indices, such that users can conveniently delete multiple students at once without having to retype the command again and again.
    • Wrote additional tests for new and existing features to increase code coverage. (#113, #229, #244)
  • Contribution to team-based tasks:
    • Joint effort in renaming the product to “TAPA”.
    • Joint effort in creating the product icon.
    • Joint effort in morphing product into “TAPA” by extending relevant features.
    • Maintained the issue tracker by assigning/labelling issues.
    • Tested product for cross-platform compatibility for MacOS.
    • Created product banner image.
  • Documentation:
    • User Guide:
      • Added/updated documentation for the features find, delete #32, #105, #126 and deleteModule #135
    • Developer Guide:
      • Added implementation details for commands: find #111, delete and deleteModule #189
      • Updated existing sequence diagrams to match new implementation #189
      • Added/updated use cases: UC02, UC03, UC04 #56, #249
      • Added/updated details for manual testing: #270
  • Community: