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
,EditClassCommand
and their relatedParser
classes. (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
Timeslot
of 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
,DeleteClassCommand
and their correspondingParser
classes. (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
RemoveStudent
feature: ImplementedRemoveStudentCommand
andRemoveStudentCommandParser
. (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
LocalTime
andDate
for class timings instead ofString
. (Pull request #125)- What it does: Parses and saves the timing of any tuition class as
Date
andLocalTime
to compare timeslots across classes. - Justification: Previously, the time slot was a
String
which 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
Timeslot
is crucial for the logic ofTimetable
and 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
,DeleteClassCommand
andRemoveStudentCommand
to 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
,DeleteClassCommandParser
andRemoveStudentCommandParser
as 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
DeleteCommand
andEditClassCommand
. (Pull Request #217, #233)
Contributions to the Developer Guide
- Added the implementation details of
EditClassCommand
. (Pull Request #135) - Added UML diagrams for
RemoveStudent
andDeleteClassCommand
. features (Pull Request #209) - Added implementation details of
EditCommand
andDeleteCommand
. (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.