Rezwan Arefin's Project Portfolio Page
Project: TA-Assist
TA-Assist is a desktop application targeted at NUS Teaching Assistants (TA). It helps them to keep track of their students’ grades, attendance, and work submission status of relevant modules. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java. Given below are my contributions to the project.
New Features
- Grading related behavior, which includes:
- A
SessionData
class to hold the data regarding a session for a student. - A
StudentModuleData
to hold all theSessionData
for a student in a module. - A
JsonAdapterSessionData
class to handle storingSessionData
data. - A
JsonAdaptedStudentModuleData
class to handle storingStudentModuleData
data. - Integration between the new classes with the TA-Assist architecture.
- The
grade
command to allow users to give grades to students for a session.
- A
- The
view
command to allow users to view session-wise grades of a student in a module. - Collapsible student cards in the GUI to allow users to hide the student details.
- Feature to display current focused class (if any) in the GUI.
- Implemented using bindings.
- Alert dialog to ask confirmation from users before starting with an empty data file, in case the data load failed.
- Functionality to back up the data file everytime it is loaded successfully.
Code contributed
Project management
- Refactored AddressBook to TA-Assist in the whole repository.
- Refactored
Tag
toModuleClass
in the whole repository. In collaboration with Lin Zechen. - Authored 35 issues to help keep track of current issues and progress.
- Reviewed 48 pull requests to ensure quality and consistency across the project.
- Updated styling of the website to make it more visually appealing.
- Edited the UG and DG for consistency and clarity.
- Exported the UG and DG to PDF format, fixing spacing issues.
Enhancements to existing features
- Fixed the help window not being loaded in Linux environment.
- Extracted a generic
UniqueList<T>
class replacing previously existingUnique*List
classes.- The generic type
T
implements theIdentity<T>
interface, which makes a way to compare two objects of typeT
with a defined identity, ignoring other data fields. - This change was necessary to reduce code duplication and improve code quality.
- The generic type
- Updated the
find
command to filter on the current displayed list instead of all students. - Removed empty fields from the student card in the GUI, in order to not have empty spaces between fields.
- Added text wrapping to the command result box.
Documentation
- Added implementation details regarding loading and saving of
SessionData
andStudentModuleData
in the DG. - Added implementation details and sequence diagrams for the
grade
command to the DG. - Added implementation details and sequence diagrams for the
view
command in the DG. - Updated class diagrams in the DG to reflect the changes made due to
grade
command. - Updated implementation details and sequence diagrams for the
assign
command to reflect new changes. In collaboration with Lin Zechen. - Updated sequence diagram of
export
command to reflect new changes. In collaboration with Lin Zechen.