TAHub (TAHub) is a desktop app for Teaching Assistants (TAs) to efficiently manage student-related information, optimized for use via a Command Line Interface (CLI) while still offering the benefits of a Graphical User Interface (GUI). If you can type fast, TAHub can handle your tasks faster than traditional GUI apps.
Designed to streamline the workflow of TAs, TAHub goes beyond basic contact management by including powerful features such as calculating aggregate scores, marking attendance, and tracking grades. These functionalities make it an essential tool for TAs looking to manage student records and assessments effectively. If you're new to CLI-based apps, a comprehensive Quick Start section is available to help you get up to speed quickly and confidently.
delete 3
would remove the third contact shown in that list. The value provided should be a positive integer smaller than 2147483648.TAHub.json
file, which contains structured information about contacts, grades, and attendance records.Ensure you have Java 17
or above installed in your Computer.
Download the latest .jar
file from here.
Copy the file to the folder you want to use as the home folder for your TAHub.
Open a command terminal, cd
into the folder you put the jar file in, and use the java -jar TAHub.jar
command to run the application.
A GUI similar to the one below should appear in a few seconds.
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.
Some example commands you can try:
list
add n/John Doe p/98765432 e/johnd@example.com c/CS2103/T
John Doe
to the TAHub.delete 3
clear
exit
Refer to the Features below for details of each command.
Ensure you have Java 17
or above installed in your Computer.
Check if Java is installed:
Windows + R
, type cmd
, and hit Enter.Command + Space
, type Terminal
, and hit Enter.Ctrl + Alt + T
, or search for "Terminal" in your applications menu.java -version
17
or above, you should see something like:java version "17.0.x" 2024-xx-xx LTS
17
, proceed to the next step to install Java.
Install Java 17
if not installed:
java -version
command to ensure Java is properly installed.
Download the latest .jar
file from here.
.jar
file (TAHub.jar
) from the latest release..jar
file to the folder where you want to store your TAHub project.
Copy the file to the folder you want to use as the home folder for your TAHub.
.jar
file in your Downloads
folder..jar
file, select Copy.Downloads
folder.Control + Click
) on the .jar
file and choose Copy.Downloads
directory..jar
file, choose Copy.Open a command terminal, cd
into the folder where you saved the .jar
file, and use the following command to run the application.
.jar
file.C:\Users\YourName\Documents\TAHub
))Windows + R
, type cmd
, and press Enter.cd
command and paste the copied path to change to the directory where the .jar
file is located. Example:cd C:\Users\YourName\Documents\TAHub
java -jar TAHub.jar
Ctrl + Alt + T
..jar
file is located:
.jar
file.Cmd + Option + C
(Mac) to copy the path.cd
command and paste the copied path to change to the directory where the .jar
file is located. Example:cd /Users/YourName/Documents/TAHub
java -jar TAHub.jar
After a few seconds, the GUI similar to the one below should appear:
Type commands in the command box and press Enter to execute them.
Some example commands you can try:
list
add n/John Doe p/98765432 e/johnd@example.com c/CS2103/T
John Doe
to the TAHub.delete 3
clear
exit
Refer to the Features section below for details of each command.
Below is a summary of the available commands in TAHub, with links to detailed explanations:
Refer to the specific sections for a detailed guide on how to use each command.
Notes about the command format:
Words in UPPER_CASE
are the parameters to be supplied by the user.
e.g. in add n/NAME
, NAME
is a parameter which can be used as add n/John Doe
.
Items in square brackets are optional.
e.g n/NAME [t/TAG]
can be used as n/John Doe t/friend
or as n/John Doe
.
Items with …
after them can be used multiple times including zero times.
e.g. [t/TAG]…
can be used as (i.e. 0 times),
t/friend
, t/friend t/family
etc.
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.
Extraneous parameters are not allowed and will cause an error. Even in commands that do not need any parameters
(such as help
, list
, exit
and clear
), the program will still notify the user when unrecognized parameters are present.
This is to prevent the user from making mistakes and misinterpreting what a command does.
Dates supplied by the user are assumed to be in Anno Domini or the Common Era. In other words, the user will not be able to enter a date before the year 0001 AD.
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.
help
Shows a message explaining how to access the help page.
Format: help
Expected output:
add
Adds a person to the TAHub.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL c/COURSE [t/TAG]…
NAME
, PHONE_NUMBER
, and EMAIL
should correspond to a valid name, phone number, and email of the person.COURSE
refers to the course this person is taking.TAG
refers to any additional information about the person and should only contain alphanumeric characters. A person can have any number of tags (including 0).Tip: TAs can use tags to keep small notes about students' progress and performance in class.
Examples:
add n/John Doe p/98765432 e/johnd@example.com c/CS2103/T
add n/Betsy Crowe t/friend e/betsycrowe@example.com c/CS1231S p/1234567 t/struggling
Expected output for add n/John Doe p/98765432 e/johnd@example.com c/CS2103/T t/excellent
:
list
Shows a list of all persons in the TAHub.
Format: list
Expected output:
edit
Edits an existing person in the TAHub.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [c/COURSE] [t/TAG]…
INDEX
. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, …t/
without specifying any tags after it.Examples:
edit 1 p/91234567 e/johndoe@example.com
91234567
and johndoe@example.com
respectively.edit 2 n/Betsy Crower t/
Betsy Crower
and removes all tags associated with the person.Expected output for edit 1 p/99947328 e/bcy@example.com
find
Finds persons whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
hans
will match Hans
Hans Bo
will match Bo Hans
Han
will not match Hans
OR
search). e.g. Hans Bo
will return Hans Gruber
, Bo Yang
Examples:
find John
returns john
and John Doe
find Alex David
returns Alex Yeoh
, David Li
Expected output for find Alex David
:
delete
Deletes the specified person from the TAHub.
Format: delete INDEX
INDEX
.Examples:
list
followed by delete 2
find Alex
followed by delete 1
find
command.Expected output for find Alex
followed by delete 1
:
addGrade
Adds or updates a grade for a person in the TAHub. If a grade with the same test name already exists, it will be overwritten.
Format: addGrade INDEX n/TEST_NAME s/SCORE w/WEIGHTAGE
INDEX
. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, …TEST_NAME
refers to the name of the test (e.g. Midterm Exam). The test name will be automatically converted to lowercase.SCORE
refers to the score obtained by the person, which must be between 0 and 100 inclusive.WEIGHTAGE
refers to the weightage of the test in percentage, which must be between 0 and 100 inclusive. Weightages of 0 are allowed for tests that are formative in nature.TEST_NAME
exists, it will be updated with the new SCORE
and WEIGHTAGE
.Examples:
addGrade 2 n/Midterm s/85 w/30
find Alex
followed by addGrade 1 n/midterm s/85 w/30
find
command with a score of 92% for "Final Exam" and 30% weightage.Expected output for addGrade 1 n/midterm s/85 w/30
:
deleteGrade
Deletes a grade for a person in the TAHub.
Format: deleteGrade INDEX n/TEST_NAME
TEST_NAME
for the person at the specified INDEX
.TEST_NAME
refers to the name of the test whose grade you want to delete.Examples:
deleteGrade 2 n/Midterm
find Betsy
followed by deleteGrade 1 n/Final Exam
find
command.Expected output for deleteGrade 1 n/midterm
:
aggGrade
Performs aggregation operation on the current filtered list of people.
Format: aggGrade OPERATION [n/TEST_NAME]
OPERATION
can be:
var
: Taking variancestddev
: Taking standard deviationmean
: Taking meanmax
: Taking maximummin
: Taking minimummedian
: Taking medianWithout the [n/TEST_NAME]
parameter, the command performs the selected aggregation OPERATION
on the overall grade of the current filtered list.
This includes persons without any grades listed, for which the overall grade is taken as 0.00.
When adding in the [n/TEST_NAME]
parameter, the behaviour of the command changes to perform the selected aggregation OPERATION
only on
TEST_NAME
tests of the current filtered list. This will only include persons who have the specified test recorded in their grade list.
Example:
aggGrade mean
Shows the mean of the overall grade of the current filtered list.
Expected output:
In this example, aggGrade mean
calculates the mean of the overall grades of Alex Yeoh and Bernice Yu, which are 86.40 and 87.00 respectively.
aggGrade min
Shows the minimum of the overall grade of the current filtered list (including persons with no grades).
Expected output:
In this example, aggGrade min
calculates the minimum of the overall grades of Alex Yeoh and Bernice Yu, which are 77.50 and 92.50 respectively.
aggGrade mean n/final
Shows the mean for final tests of the current filtered list.
Expected output:
In this example, aggGrade mean n/final
calculates the mean of the final grades of persons who have their final tests recorded in their grade list.
Only Alex Yeoh and Bernice Yu have their final marks recorded, which are 87.00 and 90.00 respectively.
Other persons like Charlotte Oliveiro who currently do not have a grade for 'final' are not included in the calculation.
mark
Marks the attendance record for the specified date for a person in the TAHub. If the attendance record for that date already exists, it will be overwritten.
Format: mark INDEX d/DATE_TIME m/ATTENDANCE
INDEX
. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, …DATE_TIME
refers to the date and time of attendance that you want to add or edit. It must be written in the format dd/MM/yyyy HH:mm
.ATTENDANCE
refers to the attendance status, which must be either Attended
or Absent
. They are not case-sensitive.DATE_TIME
already exists, it will be updated with the new ATTENDANCE
.Examples:
mark 2 d/31/01/2024 10:00 m/Attended
find Alex
followed by mark 1 d/31/01/2024 12:00 m/Absent
find
command.Expected output for mark 1 d/31/01/2024 12:00 m/absent
:
unmark
Deletes the attendance record for the specified date for a person in the TAHub. All the remaining attendance records for that person will be retained.
Format: unmark INDEX d/DATE_TIME
INDEX
. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, …DATE_TIME
refers to the date and time of attendance that you want to delete. It must be written in the format dd/MM/yyyy HH:mm
.Examples:
unmark 2 d/31/01/2024 10:00
find Alex
followed by unmark 1 d/31/01/2024 12:00
find
command.Expected output for unmark 1 d/31/01/2024 12:00
:
absentees
Finds all people who were absent on the specified date and time.
Format: absentees d/DATE_TIME
DATE_TIME
refers to the date and time for which you want to find people who were absent. It must be written in the format dd/MM/yyyy HH:mm
.Examples:
absentees d/31/01/2024 10:00
Expected output for absentees d/31/01/2024 10:00
:
clear
Clears all entries from the TAHub.
Format: clear
Expected output:
exit
Exits the program and closes.
Format: exit
TAHub data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
TAHub data are saved automatically as a JSON file [JAR file location]/data/TAHub.json
. Advanced users are welcome to update data directly by editing that data file.
Caution:
If your changes to the data file makes its format invalid, TAHub 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 the TAHub 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.
[coming in v2.0]
Details coming soon ...
Q: How do I transfer my data to another computer?
A: To transfer your TAHub data to another computer, follow these steps:
[JAR file location]/data/TAHub.json
.data
folder within that location.TAHub.json
file to a USB drive, cloud storage, or any other method you prefer for transferring files between computers.
.jar
file from the TAHub releases page..jar
file in a folder on the new computer where you want to use TAHub.
cd
into the folder containing the .jar
file, and run the command:java -jar TAHub.jar
data
folder in the same directory as the .jar
file with an empty TAHub.json
file.
data
folder where the new TAHub.json
file was created.TAHub.json
file and replace it with the TAHub.json
file you copied from the old computer.
.jar
file again.By following these steps, you can easily transfer all your TAHub data to a new computer without losing any information.
preferences.json
file created by the application before running the application again.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.add
or edit
command, if the name, tag, or course has a known prefix (e.g. having c/method e/a
as the course name parameter), the application will interpret it as another parameter instead of being one whole parameter. The remedy is to avoid using any known prefixes inside parameters, or separate the letter and slash character with a space if absolutely necessary.Action | Format, Examples |
---|---|
Add | add n/NAME p/PHONE_NUMBER e/EMAIL c/COURSE [t/TAG]… e.g. add n/James Ho p/22224444 e/jamesho@example.com c/CS2103/T t/friend t/colleague |
Clear | clear |
Delete | delete INDEX e.g. delete 3 |
Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [c/COURSE] [t/TAG]… e.g. edit 2 n/James Lee e/jameslee@example.com |
Find | find KEYWORD [MORE_KEYWORDS] e.g. find James Jake |
Action | Format, Examples |
---|---|
Add/Edit Grade | addGrade INDEX n/TEST_NAME s/SCORE w/WEIGHTAGE e.g. addGrade 1 n/Midterm s/85 w/30 |
Delete Grade | deleteGrade INDEX n/TEST_NAME e.g. deleteGrade 1 n/Midterm |
Grade Aggregation | aggGrade OPERATION [n/TEST_NAME] e.g. aggGrade median n/Midterm |
Action | Format, Examples |
---|---|
Mark Attendance | mark INDEX d/DATE_TIME m/ATTENDANCE e.g. mark 1 d/31/01/2024 10:00 m/Attended |
Unmark Attendance | unmark INDEX d/DATE_TIME e.g. unmark 1 d/31/01/2024 10:00 |
Filter Absentees | absentees d/DATE_TIME e.g. absentees d/31/01/2024 10:00 |
Action | Format |
---|---|
List | list |
Help | help |
Exit | exit |