Project: Tuition Address Book

Tuition Address Book (TAB) is an all-in-one desktop application for 1-to-1 private home tutors that helps to keep track of students and their respective lesson information. TAB utilises a Command Line Interface (CLI) to allow tutors to perform tasks efficiently, while providing a clean Graphical User Interface (GUI) for tutors to easily view student and lesson data.

Given below are my contributions to the project.

  • New Feature: Added the ability to cancel lessons in TAB, and display recurring lessons with cancelled dates on the Calendar.
    • What it does: Allows the user to cancel and uncancel lessons in TAB.
    • Justification: This feature is necessary so that tutors are able to reschedule lessons by cancelling a lesson date.
    • Highlights: This enhancement required an in-depth analysis of design alternatives in considering how to represent cancelled lessons. The implementation too was challenging as CalendarFX did not support excluding specific dates from recurring lesson entries, and I had to implement a work around for it. In addition, the implementation of the lesson clashing logic needed to be well thought out as there were many side cases that could easily introduce bugs if missed.
  • Enhancement to existing Feature: Adapting from the existing find feature, I added the ability to find students by all student fields, and specify a match condition.
    • What it does: Allows the user to find students by all other student fields. It also allows users to customise the match condition, allowing for a more powerful search function.
    • Justification: This feature is necessary so that tutors are able to search and filter the list for a specific group of students.
    • Highlights: This enhancement required much consideration of users’ needs, to implement a search feature that is most flexible and usable. This included consideration of whether keywords should be a partial word match or a whole word match, and whether all keywords are required to be matched. It was also challenging to implement a data structure to allow searching by multiple fields concurrently, which may each accept multiple keywords, and may have different search behaviours. The find feature also allows users to optionally customise the matching condition, which increased the complexity of the implementation. The large number of parameters and variations also meant that it was more susceptible to bugs, and it required intensive and careful testing. The initial design of the code was well thought out, allowing easy extension of the feature to search for students by lesson fields afterwards.
  • Other Enhancements:
    • Retrieve last command #111
    • Refactoring AB3 terms to TAB #127
    • Improve sample data with lessons #183
    • Improve index error messages #280
    • Improve lesson ordering #311
    • Refactor code to adhere to coding standards #183
  • Code contributed: RepoSense link

  • Project management:
    • Managed closing of milestones v1.1 and v1.3 on GitHub
  • Documentation:
    • User Guide:
      • Added documentation for the features find and cancelling section of ledit #351
      • About this guide section #153
      • Did the cosmetic formatting and language check of the user guide #90, #91, #96, #153
    • Developer Guide:
      • Added implementation details of the find feature and lesson cancelling.
  • Community: