PROJECT: T.A.rence

Hi there, I’m Ellie. I am currently pursuing a double major in Real Estate and Computer Science at National University of Singapore (NUS).
I love to build practical applications that can help with our day-to-day activities.

Overview

T.A.rence is a class management system for teaching assistants in NUS. Given that many students in NUS serve as TAs and take up multiple
classes in 1 semester, this application will allow for a smoother management process. T.A.rence is designed to be a simple and intuitive application that allows users to interact by typing the commands using the Command Line Interface. In addition, T.A.rence also comes with a clean Graphical User Interface (GUI) that presents information in an organized manner.

Summary of contributions

Major Enhancement: added GUI enhancement and GUI commands

All GUI enhancements and displays shown in T.A.rence, list, displayAttendance, displayAssignmentScore, listAssignment, changeTab

  • Summary of the features:

    • Allows the user to generate graphs and view the various information such as students, tutorials, modules, attendance and assignments to be displayed in a easy-to-understand form.

    • Summarizes data such as assignment scores into multiple formats (graph and table) to allow different ways of understanding the data.

    • Commands such as changeTab also allows the user to change the view of T.A.rence purely using the command line

  • Justification:

    • These features compresses the large and complex data pool stored within T.A.rence to be observed by the user in easily understandable formats.

  • Highlights:

    • This enhancement affects existing commands and commands to be added in the future. Given the large variety of data structures used to store information in T.A.rence, an in-depth analysis of display formats and design alternatives were considered in the process.

    • The implementation too was challenging as it required to work with a variety of data structures, so as to maintain the efficiency and effectiveness of data processing.

    • Given the many layers of information contained within T.A.rence, information had to carefully extracted without compromising other related systems.

  • Credits:

    • Attendance table generation code was adapted from the following link: {https://stackoverflow.com/questions/41771098/how-to-plot-a-simple-double-matrix-into-tableview-in-javafx}

  • Minor enhancement:

    • Implemented the find command to allow users to find students based on their name

    • Implemented shortcut format for addStudentCommand to allow users to add students into tutorials based on their index instead of having to type out both the tutorial and module name.

  • Code contributed:

  • [Commits] [Pull Requests] [RepoSense Code Contribution Dashboard]

  • Other contributions:

    • Project management:

      • Managed releases v1.1, v1.2, v1.2.1, v1.3 and v1.4 (3 releases) on GitHub

    • Enhancements to existing features:

      • Performed surgical refactoring of the original Address Book (Level 3) codebase to fit our requirements (example: PRs #2, #11, #12)

      • Wrote additional tests for existing features to increase coverage from 65.5% to 69.7% (Pull requests #33)

    • Documentation:

      • Did cosmetic tweaks to existing contents of the User Guide: #173, #108

      • Did cosmetic tweaks to existing contents of the Developer guide: #92

    • Community:

    • Tools:

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 a Module : deleteModule

Deletes an existing module from T.A.rence, based on it’s module list index.
Format: deleteModule INDEX.

  • Deletes the module at the specified INDEX (Based off the module list).

  • The index refers to the index number shown in the displayed module list.

  • The index must be a positive integer 1, 2, 3, …​

  • This will also remove the students and tutorials inside the module.

Examples:

  • deleteModule 1

Alternatively, you can use the module code to specify the module to be deleted. The format will be: deleteModule m/[MOD_CODE]

  • E.g deleteModule m/GER1000

Command synonyms: deletemod, delmodule, delmod, `deletemodule

Deleting a Tutorial : deleteTutorial

Deletes an existing tutorial from T.A.rence, based on it’s tutorial list index.
Format: deleteTutorial INDEX

  • Deletes the tutorial at the specified INDEX (Based off the tutorial list).

  • The index refers to the index number shown in the displayed tutorial list.

  • The index must be a positive integer 1, 2, 3, …​

  • This will also remove the tutorial from the existing module and students who are in the tutorial.

Examples:

  • deleteTutorial 1

Alternatively, You can use the module code and tutorial name to specify the tutorial to be deleted.
If the tutorial name is unique, you can simply specify the tutorial name.

  • The format will be: deleteTutorial tn/[TUTORIAL_NAME]

  • E.g deleteTutorial tn/tut1

If there are multiple tutorials with the same name, you will need to specify the module code.
The format will then be deleteTutorial tn/[TUTORIAL_NAME] m/[MOD_CODE]

  • E.g deleteTutorial tn/Lab 1 m/PC1431

Command synonyms: deletetut, deleteclass, deltutorial, deltut, delclass, deletetutorial

Display Tutorial Class' Test Results : displayAssignmentScore

Allows user to display overall results for an exam or assignment. This can be in the form of a graph or table,

Ui
AssignmentTable

Format: displayAssignmentScore i/TUTORIAL_INDEX n/ASSIGNMENT_NAME f/DISPLAY_FORMAT`.

Example:

  • displayAssignmentScore i/1 n/Lab01 f/graph

  • displayAssignmentScore i/1 n/Lab01 f/table

Command synonyms: displayscore, displayassignment, displayassignment

  • When a new student is added/deleted/modified, the assignment will need to be refreshed.

  • i.e you will need to enter the command again to display the updated scores.

  • When displaying the graph format, a short lag may follow.

Display tutorial class assignments : displayAssignments

Allows user to list out existing assignments in a tutorial.

ListAssignment

Format: displayAssignments `TUTORIAL_INDEX.

Example:

  • displayAssignments 1

Command synonyms: listassignments, lista

Display Tutorial Class' Attendance : displayAttendance

Allows user to display overall attendance for a class.

AttendanceDisplay

Full Format: displayAttendance m/MOD_CODE tn/TUTORIAL_NAME

Shortcut Format: displayAttendance i/TUTORIAL_INDEX

Example:

  • displayAttendance m/CS1010 tn/Lab Session

  • displayAttendance i/1

Command Synonyms: displayatt, showattendance, showatt

  • When a new student is added/deleted/modified, the attendance will need to be refreshed.

  • i.e you will need to enter the command again to display the updated attendance.

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.

UI component

UiClassDiagram
Figure 1. Structure of the UI Component

API : Ui.java

The UI consists of a MainWindow that is made up of parts e.g.CommandBox, ResultDisplay, PersonListPanel, StatusBarFooter etc. All these, including the MainWindow, inherit from the abstract UiPart class.

The UI component uses JavaFx UI framework. The layout of these UI parts are defined in matching .fxml files that are in the src/main/resources/view folder. For example, the layout of the MainWindow is specified in MainWindow.fxml

The UI component,

  • Executes user commands using the Logic component.

  • Listens for changes to Model data so that the UI can be updated with the modified data.

list feature

The list command lets T.A.rence display all students or students from a specific tutorial.

Implementation

The list command can include no additional input, or the index of the tutorial. When the user executes the list command, the following steps are taken by the application:

  • The CommandParser determines the format of user input. If not input is provided, all students are displayed.

  • When the list class is invoked, it will perform the following actions before displaying the output to the user:

  • Obtains a list of tutorials from the model and filters through the students which belong to the indicated tutorial of choice.

Below is an activity diagram shows the process of invoking the list command.

ListCommandActivityDiagram

The sequence diagram below shows the interaction with the Logic components as described above.

ListCommandSequenceDiagram