Wan Ning's Project Portfolio Page
Project: tApp
tApp is a desktop app for managing tutorial groups and personal tasks, optimized for use via a Command Line Interface (CLI). It has a GUI created with JavaFX. It is written in Java, and has about 15 kLoC.
Given below are my contributions to the project.
-
Code contributed: RepoSense link
- New Feature: Added the ability to delete a student from a list.
- What it does:
- Allows the user to delete a student from the student list.
- If the student is in an existing group, this command deletes the reference of the student from the group.
- Justification: This feature improves the product significantly as a student may drop out of the class within the semester.
- Credits: This feature was built on AB3’s
delete
feature, but is edited to ensure all references to the student were deleted as well.
- What it does:
- New Feature: Added the ability to mark students’ attendance and participation.
- What it does:
- Allows the user to mark multiple students’ attendance and participation for one week at a time.
- The feature also toggles the attendance/participation status when the command is executed twice, giving the user an easy way to reverse their actions.
- Justification: This feature allows the user (TA) to keep track of whether a student has attended and participated a tutorial class and improve their workflow. A user can also easily rectify their mistakes by executing the command again.
- Highlights: This feature required being well-versed in how the
Model
andLogic
components work in tApp. It was hence challenging, as there were multiple design alternatives to consider.
- What it does:
- New Feature: Added the ability to find students and groups based on partial name inputs.
- What it does:
- Allows the user to search for students and groups based on a partial word.
- Removes special characters when parsing the commands.
- Justification: Searching through partial words offers a better search experience for the user. If there is a student’s name the TA cannot seem to remember, searching by his/her partial name will narrow down the search results. Furthermore, in the event of a typo, the user will not need to correct their mistakes everytime as the parser automatically removes certain characters that are not allowed.
- Highlights: This enhancement was challenging, especially to improve the time complexity of the find feature using
String::contains
. - Credits: Transformed AB3’s existing find feature to allow a better user experience for search.
- What it does:
- New Feature: Added the ability to clear (purge) students list and groups list.
- What it does:
- Allows the user to purge the students and groups list after trying out sample data, or when he wants to start a new semester with new students.
- Clearing students will clear the student and group list, but keep the group names intact (empty groups with no students).
- Clearing groups will clear the groups list and clear all references in the attribute
groupName
for all students.
- Justification: This feature improves the product significantly, on top of the
clearAll
feature, as it allows the user to have more flexibility in choosing what data to purge at any time. - Highlights: There was a need to properly understand which data needs to be removed when each command was made, and also understand how the different components interact with one another using a
filteredList
. - Credits: Transformed AB3’s existing clear feature to allow a better user experience on purging unused data.
- What it does:
- Enhancements to existing features:
- Documentation:
- User Guide:
- Added documentation for the features
deleteStudent
,marka
,markp
,findStudent
,findGroup
,clearStudents
,clearGroups
- Added documentation for the features
- Developer Guide:
- Added implementation details and diagrams for the
findStudent
andmarka
feature. - Added use case descriptions for the features
deleteStudent
,marka
,markp
,findStudent
,findGroup
,clearStudents
,clearGroups
- Added implementation details and diagrams for the
- User Guide:
- Community:
- Team tasks:
- Setting up the GitHub team org/repo + codecov
- General code enhancements: Renaming product, changing product icon, changing product image
- Updating user/developer docs: user stories, use cases, manual testing