PROJECT: SuperTA


Overview

The purpose of this portfolio is to document my role in the project and the contributions I made in the CS2103T project.

SuperTA is a desktop application 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 RemoveStudentFromTutorialGroup command. (Pull Requests #90)

    • What it does: Allows the user to delete students from a tutorial group.

  • Code contributed: [https://nus-cs2103-ay1819s1.github.io/cs2103-dashboard/#=undefined&search=keithtan]

  • Other contributions:

    • Minor enhancements:

      • Created a UniqueAssignmentList so that assignments cannot have the same title. (Pull Requests #71)

      • Enhanced FindCommand with the ability to search using multiple keywords. (Pull Requests #136)

    • Project management:

      • Added milestones and labels on GitHub

      • Added issues and enhancement suggestions as needed on GitHub

    • Enhancements to existing features:

      • Created additional classes for enhancement to existing features: #71

      • Improved error messages for user experience: #143

      • Wrote additional tests for existing features to increase coverage from 80% to 82%: #87

    • Documentation:

      • Added user stories, use case and manual testing instructions to Developer Guide: #49, #151

      • Did cosmetic tweaks to existing contents of the User Guide: #110, #134

    • Community:

      • PRs reviewed: #83, #142

      • Reported bugs and suggestions for other teams in the cohort (examples: #132, #139, #143)

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.

Remove from Tutorial Group: remove-from-tutorial-group

Removes a student from a tutorial group.
Format: remove-from-tutorial-group tg/TUTORIAL-GROUP-ID st/STUDENT-ID

Examples:

  • remove-from-tutorial-group tg/1 st/A1231231Y
    Removes the student with student ID A1231231Y from the tutorial group with an ID of 1.

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.

Introduction

Welcome to the SuperTA Developer Guide. This guide provides information to help you get started as a SuperTA contributor, allowing you to code, test and improve on the software without much hassle.

SuperTA is a desktop application for Teaching Assistants and Professors in NUS School of Computing. It provides a convenient, flexible and fast method to manage students and their tutorials. This software is also designed to have the Command Line Interface (CLI) to be the primary mode of input while the GUI is used for visual feedback to the user.

If you’re brand new to SuperTA and want to jump into code, start with [Setting up].

User Stories

Priorities: High (must have) - * * *, Medium (nice to have) - * *, Low (unlikely to have) - *

Priority As a …​ I want to …​ So that I can…​

* * *

TA

see usage instructions

refer to instructions when I forget how to use the App

* * *

TA

add a new student

* * *

TA

edit a student

keep their details updated

* * *

TA

view a student

know the student’s details in a glance

* * *

TA

delete a student

remove entries that I no longer need

* * *

TA

find a student by name

locate details of students without having to go through the entire list

* * *

TA

find a student by matriculation number

locate details of persons without having to remember his/her name

* * *

TA

give feedback for my students

update additional information about the student

* * *

TA

create a tutorial group

categorize them into groups

* * *

TA

delete a tutorial group

remove them when I am no longer teaching in it

* * *

TA

add a student to a tutorial group

* * *

TA

delete a student from a tutorial group

see students in a specific tutorial group

* * *

TA

add attendance for my students

know whether my students are coming to tutorials

* * *

TA

delete attendance for my students

remove entries that I no longer need

* * *

TA

add an assignment to tutorial group

track the assignments

* * *

TA

delete an assignment to tutorial group

remove entries that I no longer need

* * *

TA

add marks to assignments

track their marks

* * *

TA

edit marks in assignments

change their marks

* * *

TA

sort students in order of their grades for a specific assignment

know who is/is not performing well

* *

TA

view the performance of my students over time through visual aids

easily view their progress at a glance

* *

TA

get recommendations on my teaching style

improve or change my teaching style

* *

TA

data trending of the performance of my students

track the progress of the students

* *

TA

plan consultations with students through a calendar system

better manage my time and the learning of the students

* *

TA

get suggestions on how to cater my teaching style to a specific student

teach that student better

* *

TA

flag a student that needs help

easily filter out the students that need help

* *

TA

plan non-clashing consultation sessions with students

reduce tht time needed to find a suitable date and time and better manage my schedule

* *

Prof/TA

access the academic records of my students with a secure password

prevent leaking of personal data

*

TA

share student records with other TAs

build on pre-existing data about the student

*

TA

receive student records from other TAs

understand my students better

*

TA

send emails to tutorial groups

relay important information to my students

*

TA

export student data to a CSV/PDF

easily share the data with related parties

*

Student

feedback to my TAs about their teaching style

learn better during classes

{More to be added}

Creating an attendance session

  1. Creating an attendance session

    1. Prerequisites: Have one tutorial group with an ID of 04a.
      View the tutorial group using the view-tutorial-group id/04a command.

    2. Test case: create-attendance tg/04a n/W4 Tutorial
      Expected: An attendance session should be created. If you are on the detailed tutorial group screen, the UI should update accordingly.

    3. Test case: create-attendance tg/05a n/W4 Tutorial
      Expected: An error message should be displayed, saying that there is no such tutorial group.

    4. Test case: create-attendance tg/04a n/W4 Tutorial
      Expected: An error message should be displayed, saying that the attendance session already exists in the tutorial group.

Marking an attendance

  1. Marking an attendance

    1. Prerequisites: Have one tutorial group with an ID of 04a, an attendance session with name of W4 Tutorial and 3 students with student IDs A0166733Y, A0123456Y and A0144582N in the tutorial group.
      View the session in the tutorial group using the view-session tg/04a n/W4 Tutorial command.

    2. Test case: mark-attendance tg/04a n/W4 Tutorial st/A0166733Y
      Expected: The student with id A0166733Y should now be in the 'Attended' column.

    3. Test case: mark-attendance tg/04a n/W4 Tutorial st/A0123456Y st/A0144582N
      Expected: Both students with ids A0123456Y and A0144582N should now be in the 'Attended' column, as mark-attendance supports marking multiple students.

    4. Test case: Duplicate ID - mark-attendance tg/04a n/W4 Tutorial st/A0166733Y
      Expected: An error message should be displayed, saying that the student’s attendance is already marked.

    5. Test case: mark-attendance tg/05a n/W4 Tutorial st/A0166733Y
      Expected: An error message should be displayed, saying that there is no such tutorial group.

    6. Test case: mark-attendance tg/04a n/W4 Lab st/A0166733Y
      Expected: An error message should be displayed, saying that the session does not exist.

    7. Test case: mark-attendance tg/04a n/W4 Tutorial st/A1234560T
      Expected: An error message should be displayed, saying that the student is not in the tutorial group.

Giving feedback to a student

  1. Giving feedback to a student

    1. Prerequisites: Have a student with student id of A0166733Y
      View the student using the view id/A0166733Y command.

    2. Test case: feedback id/A0166733Y f/Is generally attentive during class.
      Expected: The student gets a feedback on the student profile.

    3. Test case: feedback id/A0123456T f/Is generally attentive during class.
      Expected: An error message showing that there is no such student.