PROJECT: SuperTA


Overview

SuperTA is a desktop app for Teaching Assistants and Professors of NUS School of Computing to manage their tutorials and students. It is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). It is written in Java, and has about 10 kLoC.

Summary of contributions

  • Major enhancement: added the ability to delete an existing Assignment in an existing tutorial group.

    • What it does: allows the user to delete the specified assignment from the specified tutorial group.

    • Justification: This feature improves the product significantly because a user can make mistakes when adding assignments, such as creating the assignment in the wrong tutorial group.

    • Highlights: This enhancement affects multiple components, such as Logic and Model, and requires in-depth understanding of these components.

  • Minor enhancement: added a delete-tutorial-group command which allows the user to delete an existing tutorial group. (Pull request #84)

  • Code contributed: RepoSense collated code

  • Other contributions:

    • Enhancements:

      • Improved test coverage (Pull request #157)

    • Project Management:

      • Managed Issue tracker on GitHub

    • Documentation:

      • Added team’s ideas into relevant appendixes. (Pull request #4)

      • Modified old diagrams in the Developer Guide to correspond with SuperTA. Pull request #100)

    • Community:

      • PRs reviewed (with non-trivial review comments) (Pull request #97)

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Deleting an Assignment: delete-assignment

Deletes an existing assignment for a specific tutorial group.
Format: delete-assignment tg/TUTORIAL-GROUP-ID as/ASSIGNMENT-TITLE

Examples:

  • delete-assignment tg/04a as/lab1
    Deletes an assignment named 'lab1' from the tutorial group with an ID of '04a'.

Deleting a Tutorial Group: delete-tutorial-group

Deletes an existing tutorial group.
Format: delete-tutorial-group id/TUTORIAL-GROUP-ID

Examples:

  • delete-tutorial-group id/04a
    Deletes a tutorial group with the ID 04a.

Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.

Delete Assignment feature

Current Implementation

The delete-assignment command is facilitated by the DeleteAssignmentCommand class. It extends the abstract class Command and is supported by DeleteAssignmentCommandParser, and changes made to the Model are done through Model#deleteAssignment().

The delete-assignment command is executed in the following way:

  1. LogicManager calls parseCommand() of SuperTaClientParser, with the user input as the argument.

  2. SuperTaClientParser invokes parse() of DeleteAssignmentCommandParser.

  3. If arguments are valid, parse extracts fromTutorialGroup and assToDelete strings to instantiate a DeleteAssignmentCommand.

  4. The DeleteAssignmentCommand is returned to LogicManager, which calls execute() on it.

  5. DeleteAssignment calls Model#deleteAssignment() using fromTutorialGroup and assToDelete.

The following is a sequence diagram of the delete-assignment command:

DeleteAssignmentSdForLogic

Design Considerations

Aspect: Implementation of DeleteAssignmentCommand
  • Alternative 1(current choice): Store the tutorial group ID and assignment title as String fields in DeleteAssignmentCommand.

    • Pros: Easy to implement. Does not require instantiating new TutorialGroup and Assignment objects to hold the String values.

    • Cons: Requires that the Model supports finding a tutorial group and assignment within Model#deleteAssignment().

  • Alternative 2: Wrap the tutorial group ID and assignment title in TutorialGroup and Assignment objects and store them as fields in DeleteAssignmentCommand.

    • Pros: Easy to compare between actual TutorialGroup and Assignment using equals().

    • Cons: Dependent on the overridden equals() method in the TutorialGroup and Assignment classes to work as intended.

Use Cases:

UC04 - Grade Assignment

MSS:

  1. User views a tutorial group.

  2. System displays the tutorial group.

  3. User creates assignment in tutorial group.

  4. System creates assignment.

  5. User enters grade of student to be graded for an assignment.

  6. System grades the assignment for the student.

    Use case ends.

Extensions:

  • 1a. User enters invalid tutorial group ID.

    • 1a1. System displays an error message.

      Use case resumes at step 1.

  • 3a. User enters invalid details for new assignment.

    • 3a1. System displays an error message.

      Use case resumes at step 3.

  • 5a. User enters invalid grade/student/assignment/tutorial group.

    • 5a1. System displays an error message.

      Use case resumes at step 5.

UC05 - Mark Attendance

MSS:

  1. User creates attendance session in tutorial group.

  2. System creates attendance session.

  3. User enters ID for student to mark attendance for the session.

  4. System marks student’s attendance for the session.

    Use case ends.

Extensions:

  • 1a. User enters invalid details for new attendance session.

    • 1a1. System displays an error message.

      Use case resumes at step 1.

  • 3a. User enters invalid student/session.

    • 3a1. System displays an error message.

      Use case resumes at step 3.

UC06 - Add feedback for student

MSS:

  1. User enters feedback for student.

  2. System creates feedback for student.

    Use case ends.

Extensions:

  • 1a. User enters invalid student/empty feedback.

    • 1a1. System displays an error message.

      Use case resumes at step 1.