Ammar's Project Portfolio Page
Project: TutAssistor
TutAssistor is a desktop application for private tutors to manage tuition class timeslots. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). The user interacts with it using a CLI, and it has a GUI created with JavaFX. It has about 20 kLoC.
Given below are my contributions to the project.
Summary of Contributions
Access my RepoSense link to view the code that I have contributed.
Enhancements implemented
- Create edit features: Designed and created
EditCommand,EditClassCommandand their relatedParserclasses. (Pull request #125)- What it does: Allows user to edit details of a particular student or tuition class in TutAssistor.
- Justification: This improves the user experience as users do not have to delete and recreate entire students or classes, in order to change a few details.
- Highlights:
- Changing the
Timeslotof a class has to be considered carefully, as it cannot overlap with any timeslot of existing classes.
- Changing the
- Create delete features: Designed and created
DeleteCommand,DeleteClassCommandand their correspondingParserclasses. (Pull requests #46)- What it does: Allows user to delete a student or tuition classes in TutAssistor.
- Justification: This enables the user to remove entire records pertaining to multiple students or tuition classes.
- Highlights:
- Duplicate indices in user inputs have to be removed to ensure that only one student/class is deleted at a particular index.
- The order of deletion has to be considered carefully by sorting the indices before deletion, as the list of students/classes adapts while students/classes are being deleted respectively.
- Implement
RemoveStudentfeature: ImplementedRemoveStudentCommandandRemoveStudentCommandParser. (Pull request #58)- What it does: Allows user to remove existing students from a tuition class in TutAssistor.
- Justification: This allows the user to update class enrollment promptly whenever students drop out of a tuition class.
- Highlights:
- Efforts are taken to ensure that students who are not enrolled in the class are not removed and this is conveyed to users.
- Refactor Timeslot class: Refactor Timeslot class to use Java
LocalTimeandDatefor class timings instead ofString. (Pull request #125)- What it does: Parses and saves the timing of any tuition class as
DateandLocalTimeto compare timeslots across classes. - Justification: Previously, the time slot was a
Stringwhich created scheduling conflicts between classes and classes to be created at invalid timings. (E.g classes could span across days). Following the refactoring of theTimeslot, classes were created only at valid timings and the timetable conflicts were resolved more easily using the existing Java API. - Highlights:
- This is a major refactor as the
Timeslotis crucial for the logic ofTimetableand general management of all the tuition classes.
- This is a major refactor as the
- What it does: Parses and saves the timing of any tuition class as
- Refactor some commands to use multiple indices: Refactor
DeleteCommand,DeleteClassCommandandRemoveStudentCommandto use multiple student or class indices as arguments. (Pull request #65)- What it does: Allows user to delete multiple students or tuition classes, as well as remove multiple students from a class.
- Justification: Improve efficiency so that the user is able to delete multiple students or classes at once instead of repeating similar commands multiple times.
- Testing: Create tests for the
EditClassCommandParser,EditCommandParser,DeleteCommandParser,DeleteClassCommandParserandRemoveStudentCommandParseras well as their related classes to increase coverage. (Pull Request #216, #230)
Contributions to the User Guide
- Added to the FAQ and Introduction, formatted figures and enabled quicklinks for the command summary. (Pull Request #139)
- Added implementation details for
EditClassCommand,EditCommand,DeleteClassCommand. (Pull Request #217) - Fix some documentation bugs from PE-D. (Pull Request #187)
- Added screenshots for the
DeleteCommandandEditClassCommand. (Pull Request #217, #233)
Contributions to the Developer Guide
- Added the implementation details of
EditClassCommand. (Pull Request #135) - Added UML diagrams for
RemoveStudentandDeleteClassCommand. features (Pull Request #209) - Added implementation details of
EditCommandandDeleteCommand. (Pull Request #217) - Added use cases for TutAssistor.
Contributions to the team-based tasks
- Proposed the idea for TutAssistor.
- Proposed the feature to enable command shortcuts for long commands.
- Proposed the idea of input history navigation feature to improve the design of TutAssistor to model a CLI application.
- Enabled status checks and approvals for all PRs to prevent CI failures for the team’s repository.
Review/mentoring contributions
- PRs reviewed: #198
Contributions beyond the project team
- Reported 20 bugs in group F13-2’s tP during mock PE.