TAHub Contacts User Guide

Introduction

Hi there! 👋

If you are a busy Computer Science student juggling Teaching Assistant roles and struggling to keep track of your many students, TAHub Contacts is a desktop application for you to easily manage your student contact details!

Think about TAHub Contacts as a little helper, residing on your computer, made just for you, the Computing TA.

While it has a GUI (Graphical User Interface), most of the user interactions happen using a CLI (Command Line Interface) with typed commands. A perfect fit if you’re already a wizard at the keyboard.

Also preferable would be being comfortable with the concept of entering configurable, text-based commands into a terminal.

(Or if you've already taken/suffered/enjoyed CS2030S)

Overview

TAHub Contacts allows you to easily:

  • Manage your students
  • Organise them by course and tutorial group
  • Mark attendance

Interested? Head down to quick start to get started!


Table of Contents


Quick start 🚀

  1. Ensure you have Java 17 or above installed in your Computer.

    • How to check your Java version? Run java -version in your terminal.
    • Don't have Java 17 or above, download here.
  2. Download the latest .jar file from here.

  3. Copy the file to the folder you want to use as the home folder for the program.

    • Make sure that this folder is empty. (Program files will be saved in it!)
  4. Open a command terminal (Windows | MacOS | Linux), cd into the folder you put the jar file in, and run java -jar tahub-contacts.jar to run the application.
    A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
    img_1.png

  5. Type the command in the command box and press Enter to execute it. e.g. typing help and pressing Enter will open the help window, which links you back to this page.
    Some example commands you can try:

    • list : Lists all students.
    • person-add m/A0296210X n/John Tan p/98765432 e/johnt@email.com a/John street, block 123, #01-01 : Adds a contact named John Tan to TAHub Contacts.
    • person-delete m/A0296210X : Deletes the student with the matriculation number A0296210X. In this case, the John Tan that we just added.
    • clear : Deletes all contacts.
    • exit : Exits the app.
  6. Refer to the Features below for the juicy details of each command. Alternatively check the Command Summary for a quick list of the available commands. Have fun!


Example TA Workflow

Check this section out for an example on how you might use TAHub Contacts as a TA!

The specific commands in this section, e.g. clear, are hyperlinked to their respective command feature sections. Use them to learn more!

  1. Make sure you're starting from an empty student list. Use the command clear if it isn't.
  2. Let's say you have two students from your T05 class for the course CS2005, Computer Examples, Jane, and John.
  3. Add the two students into TAHub Contacts using person-add :
    • person-add m/A1234567Q n/Jane p/99871234 e/jahn@email.com a/12 AMK Ave
    • person-add m/A2233445X n/John p/88112233 e/john@email.com a/200 Bedok Road
  4. Now add the course CS2005 using course-add
    • course-add c/CS2005 n/Computer Examples
  5. Then, add your students to their class using enroll .
    • Jane: enroll m/A1234567Q c/CS2005 tut/T05
    • John: enroll m/A2233445X c/CS2005 tut/T05
  6. You should now see the following in TAHub Contacts.
Example Workflow 1
  1. Fast forward a bit, you just had your first tutorial session with this class. Jane showed up, but John didn't. So it's time to mark attendance!

  2. Use the attend-present and attend-absent commands:

    • Jane: attend-present m/A1234567Q c/CS2005 tut/T05
    • John: attend-absent m/A2233445X c/CS2005 tut/T05
  3. You just recorded their attendance! Click on the Attendance button to see their attendance. For instance, here's Jane's:

    Example Workflow 2

This is just a simple example. For more details, check the Features section below.


Back to Table of Contents


Features 💻

Notes about the command format:

  • Words in UPPER_CASE are the parameters to be supplied by the user.
    e.g. in person-add m/MATRICULATION_NUMBER, MATRICULATION_NUMBER is a parameter which can be used as person-add m/A1234567L.

  • Items in square brackets are optional. e.g.

    • n/NAME [a/ADDRESS] can be used as n/John Doe a/Nasi Lemak Street or as n/John Doe.
  • Parameters can be in any order.
    e.g. if the command specifies n/NAME p/PHONE_NUMBER, p/PHONE_NUMBER n/NAME is also acceptable.

  • Address Length: If the a/ADDRESS parameter is too long, it may overflow in the user interface. To avoid display issues, keep addresses concise.

  • Extraneous parameters for commands that do not take in parameters (such as help, list, exit and clear) will be ignored.
    e.g. if the command specifies help 123, it will be interpreted as help.

  • If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.

Data Formats

All input fields in the table below must follow the specified data formats. Input fields not listed may accept any non-blank value.

Field Format
MATRICULATION_NUMBER must be a valid NUS matriculation number in the form AxxxxxxxB, where A is the fixed as 'A', B is any uppercase character, and xxxxxxx is any 7 integers.
NAME must only contain alphanumeric characters and spaces, and not be blank.
PHONE_NUMBER must only contain numbers, and it should be at least 3 digits long.
EMAIL must be a valid email format.
COURSE_CODE must be in the form A+xxxxB where A+ is 1 or more uppercase letters, xxxx is a 4-digit number, B is an optional uppercase letter.
COURSE_NAME must only contain alphanumeric characters and spaces, and not be blank.
TUTORIAL_ID should be in the form Txx, where T is fixed as 'T', while xx is a 2 digit integer from 01 to 99.

Back to Table of Contents


Main Commands

The main basic commands for TAHub Contacts.

Shows a message explaining how to access the help page.

help message

Format: help

Shows a list of all students saved in TAHub Contacts in the GUI.

Format: list

Clears all student entries from TAHub Contacts.

Format: clear
WARNING: this operation is irreversible. You may lose all your data!

Exits the program.

Format: exit


Back to Table of Contents


Student Commands

This is for managing your individual students, modifying their attributes and information.

See Course Commands or Enrollment Commands regarding your students' courses and tutorial groups.

Reminder: follow the data formats!

Adds a student into TAHub Contacts.

Format: person-add m/MATRICULATION_NUMBER /NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS
Examples
person-add m/A0296210X n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
person-add m/A0315310L n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567

Edits an existing student in TAHub Contacts.

Format: person-edit m/MATRICULATION_NUMBER [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS]
  • Edits the student with the specified MATRICULATION_NUMBER. The MATRICULATION_NUMBER must be the matriculation number of an existing student.
  • At least one of the optional fields must be provided.
  • Existing values will be updated to the input values.
Examples
person-edit m/A0296210X p/91234567 e/johndoe@example.com edits the phone number and email address of the student with MATRICULATION_NUMBER of A0296210X to be 91234567 and johndoe@example.com respectively.

Finds students whose names contain any of the given keywords.

Format: person-find KEYWORD [MORE_KEYWORDS]​​
  • The search is case-insensitive.
    • e.g hans will match Hans
  • The order of the keywords does not matter.
    • e.g. Hans Bo will match Bo Hans
  • Only the name is searched.
  • Only full words will be matched.
    • e.g. Han will not match Hans
  • All students matching at least one keyword will be returned (i.e. OR search).
    • e.g. Hans Bo will return Hans Gruber, Bo Yang
Examples
person-find John returns john and John Doe.
person-find alex david returns Alex Yeoh, David Li.
result for 'find alex david'

Deletes the specified student from TAHub Contacts.

Format: person-delete m/MATRICULATION_NUMBER​​
  • Deletes the student with the specified MATRICULATION_NUMBER.
  • The MATRICULATION_NUMBER must be the matriculation number of an existing student.
Examples
person-delete m/A0296210X deletes the student with MATRICULATION_NUMBER of A0296210X in TAHub Contacts.


Back to Table of Contents


Course Commands

This is for managing the courses you are (or previously were, cuz why not) teaching.

Reminder: where used, parameters must follow the data format!

Adds a course to TAHub Contacts.

Format: course-add c/COURSE_CODE n/COURSE_NAME
  • COURSE_CODE must be unique and follow the COURSE_CODE format
  • COURSE_NAME must follow the COURSE_NAME format
Examples
course-add c/CS1101S n/Programming Methodology 1
course-add c/MA1522 n/Linear Algebra

Edit by changing the name of a course in TAHub Contacts.

Format: course-edit c/COURSE_CODE n/COURSE_NAME
  • COURSE_CODE must be an existing course code.
  • COURSE_NAME is the new course name and must follow the COURSE_NAME format.
  • Note that it is not possible to edit the course code. If you want to do so, create a new course with the different code.
Examples
course-edit c/CS1101S n/Programming Methodology 2
course-edit c/MA1522 n/Linear Algebra 2

Deletes a course in TAHub Contacts.

Format: course-delete c/COURSE_CODE
  • COURSE_CODE must be an existing course code.
Examples
course-delete c/CS1101S

Caution: Deleting a course will also delete all tutorial groups, attendance and student associations related to the course.

The courses are stored in file data/courselist.json for easy import/export.

Caution: If any of the fields in courselist.json are invalid, no courses will be loaded and may result in data loss.



Back to Table of Contents


Enrollment Commands

This is for you to attach (enroll) and unattach (unenroll) students from specific courses and tutorials for better management.

Enrolls a student in a particular course and tutorial group.

Format: enroll m/MATRICULATION_NUMBER c/COURSE_CODE tutut/TUTORIAL_ID
  • MATRICULATION_NUMBER must be the matriculation number of an existing person.
  • COURSE_CODE must be the course code of an existing course.
  • TUTORIAL_ID is the tutorial that the tutor wishes to enroll the person in.
  • Students already enrolled in this course and tutorial cannot be enrolled again in the same course-tutorial combination.
Examples
enroll m/A1234567Y c/CS1101S tut/T12
enroll m/A1262929T c/CS2030 tut/T08

Unenrolls a student from a particular course and tutorial group that he/she is in.

Format: unenroll m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
  • MATRICULATION_NUMBER must be the matriculation number of an existing person.
  • COURSE_CODE must be the course code of an existing course.
  • TUTORIAL_ID is the tutorial that the tutor wishes to enroll the person in.
  • The combination of MATRICULATION_NUMBER, COURSE_CODE and TUTORIAL_ID must represent an existing enrollment.
Examples
unenroll m/A1234567Y c/CS1101S tut/T12
unenroll m/A1262929T c/CS2030 tut/T08


Back to Table of Contents


Attendance Commands

This is for you to conveniently keep track of each one of your students' attendance records.

Each of your students will have an attendance record associated with each unique course and tutorial group. This record is to be edited over the duration of a semester (or longer), where you can mark (present 😃 or absent 😦) and unmark attendance for for each consecutive session.

To view the attendance record of a student,

Click on the Attendance button:

Attendance Button

Then the following Attendance window will be shown:

Attendance Window

Note: the course name shown in the message window will be COURSE QUERY, rather than the actual course name of the course, even for valid course codes. This is intended behavior and is simply a result of how student-course-tutorial matching is done 😃

Reminder: where used, course code and name, and tutorial code must exist and follow the data format!

The particular student must also be enrolled in that course and corresponding tutorial.

Marks a student in a particular course and tutorial group as having attended a session (present).

Format: attend-present m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
Examples
attend-present m/A1234567Y c/CS1101S tut/T10

Marks a student in a particular course and tutorial group as having missed a session (was absent).

Tsk tsk tsk, remember to check with the student why they were absent, and whether they have an official valid reason or MC~

Format: attend-absent m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
Examples
attend-absent m/A1234567Y c/CS1101S tut/T10

Removes the last attendance session record of a student in a particular course and tutorial group.

For when you accidentally marked a truant king as present. Oops!

Format: attend-remove m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
Examples
attend-remove m/A1234567Y c/CS1101S tut/T10

Clears the attendance of a student in a particular course and tutorial group.

Format: attend-clear m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
Examples
attend-clear m/A1234567Y c/CS1101S tut/T10
Destructive irreversible command. Be careful!


Back to Table of Contents


Data

Saving the data

Ever experience the stomach-churning sinking feeling of being petrified when you forgot to Ctrl/Cmd-S something important?

Don't worry!

TAHub data is saved in your drive automatically after any command that changes the data. You don’t need to save manually!

This already makes us unambiguously superior to Microsoft Office (when saving locally).

Editing the data file

Data is saved automatically in the JSON files [JAR file location]/data/addressbook.json, storing the list of your students and [JAR file location]/data/courselist.json, storing the list of courses.

Advanced users are welcome to update data directly by editing that data file. The file structure should be decently self-explanatory.

Caution: 💀

If your changes to the data file makes its format invalid, TAHub Contacts will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.

Furthermore, certain edits can cause TAHub Contacts to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.

You have been duly warned.

Coming Soon


Added Support for more Tutorial IDs

  • Currently, we only support tutorial IDs of a specific format, as mentioned here. However, we are aware that there are valid but rarer tutorial IDs with an additional character at the back like T01A. Due to time limitations, we are not able to support all potential tutorial IDs and this could be fixed in a future iteration.

Quick Refresh of Edited Course Name

  • Currently, on editing the name of a particular course using the course-edit command, the user(TA) will have to wait for sometime before it is visible in the UI or will have to reopen the Attendance Window to refresh the screen to view the new Course Name. However, we are aware that this will hinder the efficiency of a fast working TA and so this will be fixed in a future iteration.

Back to Table of Contents


FAQ ❔

Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous TAHub Contacts home folder.

Q: I accidentally performed the wrong command. Is there a way for me to... revert the change?
A: Unfortunately, we have not implemented an undo command for TAHub contacts. 😔
So be careful especially when you're using destructive (deletion) commands!


Known issues 🐛

  1. When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the preferences.json file created by the application before running the application again.
  2. If you minimize the Help Window and then run the help command (or use the Help menu, or the keyboard shortcut F1) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.

Command summary 📒

Action Format, Examples
Help help
List Students list
Clear clear
Exit exit
Add Student person-add m/MATRICULATION_NUMBER n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS
e.g.person-add m/A0177310M n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665
Find Students by Name person-find KEYWORD [MORE_KEYWORDS]
e.g.person-find James Jake
Edit Student person-edit m/MATRICULATION_NUMBER [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS]
e.g.person-edit m/A0296210X n/James Lee e/jameslee@example.com
Delete Student person-delete m/MATRICULATION_NUMBER
e.g.person-delete m/A0296210X
Add Course course-add c/COURSE_CODE n/COURSE_NAME
e.g.add c/CS1101S n/Programming Methodology 1
Edit Course course-edit c/COURSE_CODE n/NAME
e.g.course-edit c/CS1101S n/Programming Basics
Delete Course course-delete c/COURSE_CODE
e.g.course-delete c/CS3230
Enroll Student enroll m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
e.g.enroll m/A1234567Y c/CS1101S tut/T10
Unenroll Student unenroll m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
e.g.unenroll m/A1234567Y c/CS1101S tut/T10
Mark Present attend-present m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
e.g.attend-present m/A1234567Y c/CS1101S tut/T10
Mark Absence attend-absent m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
e.g.attend-absent m/A1234567Y c/CS1101S tut/T10
Remove Attendance Session attend-remove m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
e.g.attend-remove m/A1234567Y c/CS1101S tut/T10
Clear Attendance attend-clear m/MATRICULATION_NUMBER c/COURSE_CODE tut/TUTORIAL_ID
e.g.attend-clear m/A1234567Y c/CS1101S tut/T10

Back to Table of Contents