Project: TutorBuddy

TutorBuddy is a desktop application made for freelance tutors who give one-to-one tuition to efficiently manage their students’ contacts, provide a quick overview of scheduled tuition sessions, and handle monthly tuition fees calculation. TutorBuddy is also optimized for fast typing users to handle their day-to-day administrative responsibilities effectively.

Summary of Contributions

Here is a summary of my personal contributions to the project. My code contribution can be found at ReposenseLink

Major Enhancements

  • Recurring Session component (excluding overlap handling, by Choon Wei)
    • What it does: RecurringSession class holds information in addition to Session, namely the interval and last date of recurrence.
    • Justification: This feature allows for recurring session, which is likely the norm to tuition sessions, which often occur at fixed intervals. Because the information of previously-multiple sessions are now abstracted into one recurring session, this saves resources.
    • Highlights: Defensive coding employed: A recurring session object can be created only if the last session date is consistent with the first session date and interval.
      User-friendly: Through parser of add_rec_session command, the correct last date of a session is suggested if entered wrongly.
      Single responsibility: Creation of recurring session that do not in fact recurse, i.e. happens only once, is prevented. This is to establish to users that non-recurring single sessions are not a subset of recurring sessions.
      Some key methods to the recurring session class include:
      • hasSessionOnDate, which checks if recurring session occurs on given date
      • buildSessionOnDate, which returns a single, non-recurring session of the recurring session, happening on a valid date
      • lastSessionOnOrBefore, which retrieves the session that would come before a given date.
      • numOfSessionsBetween, which returns the number of sessions that occurs between 2 given dates
    • Related PR: PR #106 PR #152 PR #258
  • Delete Session
    • What it does: Deletes a session that belongs to a student under his/her list of sessions. This includes deleting both a non-recurring session and an entire recurring session.
    • Justification: A primitive, necessary functionality.
    • Highlights: Rather basic, the D to CRUD. But not a refactoring of AB3’s deletePerson; it involves some logic as a session belongs to a list of sessions, belonging to a particular student.
    • Related PR: PR #64 Not merged to master, because pulled to PR #73 to combine with storage component for session.

Other Contribution

  • Project Management
    • Responsible for ensuring code logic
  • Testing
  • Non-merged
    • isOverlapDate method for 2 recurring session. Checks in a non-brute-force, mathematical way using extended euclid. Reason for no merge: Brute-force method works well in reasonable time. Review can be time-consuming. PR #171
  • Documentation
    • User Guide
    • Developers Guide
      • Details for deleting session (PR #103)
      • Recurring Session, besides delete rec session feature ((PR #306)) (PR #320)