Joshua Chew's Project Portfolio Page
Project: TAskmaster
TAskmaster is a desktop app for managing students, optimised for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you are a CS Teaching Assistant who can type fast, TAskmaster can help you track your students’ attendance and class participation faster than traditional GUI apps.
This application contains a central database of students, and supports operations to add, edit and delete students. Each entry in the database keeps track of a student’s name, NUSNET ID, Telegram handle and email address.
It also supports commands to add and delete tutorial sessions. Each tutorial session contains an independent list of student records. A Teaching Assistant (TA) has the option to mark attendances and assign class participation scores to each student in a session. He or she is also able to mark the attendance or assign a score to all students within a session in one command.
Given below are my contributions to the project.
- New Feature: Added the ability to add sessions to TAskmaster.
- What it does: Allows a TA to add a new session to TAskmaster with a specified session name, date and time. The new session would also contain a list of student records.
- Justification: This feature is essential to the product as a TA should be able to create multiple sessions and name them according to his preferences.
- Highlights: This enhancement requires the implementation of a
Session
class and aSessionList
as a data structure that supports the addition of sessions. This was challenging as it requires an in-depth analysis of design alternatives, and a decision to be made on which stage in the code’s execution should theStudentRecordList
be initialized in the new session.
- New Feature: Added the ability to toggle between current sessions in TAskmaster.
- What it does: Allows a TA to choose which session’s student records to view in the GUI.
- Justification: As a TA would likely create multiple sessions in the application, it is important to allow a TA to be able to choose which session’s records to view or perform commands on.
- Highlights: This enhancement requires some contemplation to be made on how the
Model
class should be redesigned such that it contains information on which session is currently selected. It also has to support the corner case where the TAskmaster is being used for the first time, where no sessions have been created yet and the pointer to the current session isnull
. This implementation is challenging as it has to ensure that such corner cases would not present unexpected bugs.
- New Feature: Added the ability to delete a session in TAskmaster.
- What it does: Allows a TA to delete a session with the specified session name from the session list.
- Justification: This feature improves the usability of the product. TAs can potentially make mistakes when adding sessions. For example, he could have mistyped the name of a session, or keyed in the wrong date and time. In such cases, a TA can easily delete the session from the application.
- Highlights: This enhancement requires careful testing to ensure that all potential bugs are eliminated. For example, I made sure that sessions within the TAskmaster cannot possess the same name, such that there would be no issues when deleting a session with a specific session name.
- New Feature: Renamed the commands such that it is easier to differentiate between student-related and
session-related commands.
- Justification: Some commands have similar names. It is important for the TA to be clear on whether a command acts
on a student or a session. Prior to the renaming, the command to add a student to the student list was
add
, whereas that of adding a new session wassession
. This made the functionality ofadd
sound ambiguous and confusing. Now, the former is namedadd-student
, and the latter is namedadd-session
.
- Justification: Some commands have similar names. It is important for the TA to be clear on whether a command acts
on a student or a session. Prior to the renaming, the command to add a student to the student list was
-
Code contributed: RepoSense link
- Enhancements to existing features:
- Documentation:
- User Guide:
- Added documentation for the features
add-session
,goto
anddelete-session
.
- Added documentation for the features
- Developer Guide:
- User Guide:
- Community:
- PRs reviewed and approved
- Contributed to forum discussions (Examples: 1, 2)
- Did manual testing on another group’s product ConciergeBook and reported bugs to them