Ryan Low's Project Portfolio Page
Project: TeachWhat!
TeachWhat! is a desktop address book application used for private tutors in managing their class. 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
Click here to see the code contributions I have made.
Features and enhancments implemented
Assign/Unassign command
- Assign command pull request #74
- Unassign command pull request #135
- What the commands do:
- Assigns/Unassigns a
Student
from aLesson
. - Allows users to see a list of
enrolledStudents
in the details of alesson
- Allows users to see a list of
enrolledLessons
in the details of astudent
- Assigns/Unassigns a
Implement RecurringLesson
model(Pull request #82)
- What it does:
- Extended from the
Lesson
model,RecurringLesson
models lessons that happen weekly, and therefore behaves differently when the date of the lesson has to be retrieved.
- Extended from the
- Justification:
- As the date of a recurring lesson is not fixed, as it has to be updated to the date of the lesson in the
current week. Therefore,
RecurringLesson
overrides thelesson#getDateTimeSlot()
andlesson#isConflictingWithLesson()
to ensure that the correct date is retrieved and the correct date is used when compared with anotherLesson
.
- As the date of a recurring lesson is not fixed, as it has to be updated to the date of the lesson in the
current week. Therefore,
Implement editlesson
command (Pull request #151)
- What it does:
- Allows users to edit details of lessons.
Implement Student
and Lesson
tab (Pull request #68)
- What it does:
- splits the list of students and lessons into their respective tabs
- Justification:
- AB3 only had one panel where users could view a single list of contacts. Since tutors will need to track both their lessons and students, we had to add another panel for them to view their lessons. As opposed to having two panels for students and lessons, our team decided the GUI would look much better by splitting the two lists into tabs.
Implement liststudents
and listlessons
command (Pull request #68)
- What it does:
- Displays the list of students/lessons.
- This feature was implemented together with the tabs. The command displays the list of students/lessons by toggling to the respective tab, after refreshing to internal list of lessons/students.
Contributions to the UG
- Drafted out the initial version of the user guide (Pull request #43)
- Updated the user guide to be consistent with features upon every milestone completion
Contributions to the DG
- Added implementation details of the
assign
command- Included object diagrams to depict the state of the relevant classes at different points of the command execution.
- Used sequence diagram to show the interaction between entities of the program.
- Added the details of the
Storage
component - Added manual testing instructions for
Assign
andUnassign
command.
Contributions to team-based tasks
- Add issues to milestones
Review/mentoring contributions
- Suggested improvements in PR review #57
- Reviewed and merged 42 pull requests