User Guide
TA-Assist is a desktop app for Teaching Assistants (TA) to keep track of students’ particulars and allocate marks for attendance and assignments. It is optimized for use via a Command Line Interface (CLI) while having the benefits of a Graphical User Interface (GUI).
This User Guide provides brief documentation on how you can install the application and describes how each feature should be used. Start by looking at the quick start guide to get you started.
- Quick Start
- Features
- Modes
-
Commands
- View help:
help - Add a student:
add - Edit a student:
edit - Delete a student:
delete - Locate student by name:
find - List all students:
list - Add classes:
addc - Delete classes:
deletec - Assign students to class:
assign - Unassign students from class:
unassign - List classes:
listc - Exit the program:
exit - Enter focus mode:
focus - Clear all existing data:
clear
- View help:
- Focus Mode Commands
- Automated Data Backup
- Frequently Asked Questions (FAQ)
- Appendix
Quick Start
- Ensure you have Java
11or above installed on your computer. - Download the latest
taassist.jarfrom here. - Copy the file to the folder you want to use as the home folder for your TA-Assist.
- Double-click the file to start the app. The GUI similar to the one below should appear in a few seconds. Note how the app contains sample data.

Features
Before diving into the features, the examples in this guide are formatted with the following conventions:
- Words in
UPPER_CASEare the parameters to be supplied by you.- e.g. in
add n/NAME,NAMEis a parameter which can be used asadd n/John Doe.
- e.g. in
- Items in square brackets are optional.
- e.g.
n/NAME [c/CLASS_NAME]can be used asn/John Doe c/CS1231Sor asn/John Doe.
- e.g.
- Items with
...after them can be used multiple times.- e.g.
c/CLASS_NAME...can be used asc/CS1101Sorc/CS2030 c/ST2334.
- e.g.
- Parameters, excluding index parameters, can be in any order.
- e.g. if the command specifies
n/NAME p/PHONE_NUMBER,p/PHONE_NUMBER n/NAMEis also acceptable. - e.g. while
assign INDEX c/CLASS_NAMEis acceptable,assign c/CLASS_NAME INDEXis not acceptable.
- e.g. if the command specifies
- If a parameter is expected only once in a command, but you specified it multiple times, the parser takes only the last occurrence of the parameter.
- e.g. if you specify
p/12341234 p/56785678, onlyp/56785678will be taken.
- e.g. if you specify
- Extraneous parameters for commands that do not take in parameters (such as
help,list,exit, andclear) are ignored by the parser.- e.g. if you specify
help 123, the parser interprets it ashelp.
- e.g. if you specify
- Extraneous parameters for commands that do not expect such parameters may be parsed incorrectly.
- e.g. if you specify
addc c/CS1231S n/CS2030S, the parser interprets it as adding a class named “CS1231S n/CS2030S”, which is not a valid class name. Hence, TA-Assist throws an error.
- e.g. if you specify
- All parameters and their constraints have been provided in the Appendix for your reference.
Modes
In TA-Assist, you can switch into a mode called focus mode, which lets you run tasks that are specific to a class. Therefore, some commands can only be executed when you are in focus mode. Commands that you can run in the default (unfocused) mode can also be run in focus mode. On the other hand, commands that are available only in focus mode cannot be executed in the default mode.
Let’s first begin with the commands available in the default mode.
Commands
| Command | Format |
|---|---|
help |
help |
add |
add n/NAME [p/PHONE_NUMBER][e/EMAIL][a/ADDRESS][c/CLASS_NAME...] |
edit |
edit INDEX [n/NAME][p/PHONE_NUMBER][e/EMAIL][a/ADDRESS] |
delete |
delete INDEX |
find |
find KEYWORD... |
list |
list |
addc |
addc c/CLASS_NAME... |
deletec |
deletec c/CLASS_NAME... |
assign |
assign INDEX... c/CLASS_NAME |
unassign |
unassign INDEX... c/CLASS_NAME |
listc |
listc |
exit |
exit |
focus |
focus c/CLASS_NAME |
clear |
clear |
Click here for the commands only available in the focus mode.
View help: help
Format: help
-
If TA-Assist is unable to redirect you to the page, i.e. due to a non-existent browser, unsupported operating system, etc., the following dialog box will be shown instead:

You can click on the “Copy URL” button to copy the URL shown in the help window, then paste the URL into the address bar of your favourite browser to visit this User Guide page.
Add a student: add
Format: add n/NAME [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [c/CLASS_NAME...]
- Adds a student named
NAMEinto TA-Assist. - To add a student with class attributes, the class must exist in TA-Assist.
Examples:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 c/CS2103Tadd n/Betsy Crowe a/Betsy street p/62353535 c/CS1231S c/CS1101S
Edit a student: edit
Format: edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS]
- Edits student data at the specified
INDEX. - Only specified fields are modified.
Examples:
-
edit 2 n/John Doechanges the 2nd student’s name to John Doe. -
edit 4 e/john.doe@example.com a/38 College Avenue East, 138601changes the 4th student’s:- E-mail to john.doe@example.com.
- Address to 38 College Avenue East, 138601.
Delete a student: delete
Format: delete INDEX
- Deletes the student at the specified
INDEX.
Examples:
-
listfollowed bydelete 2deletes the 2nd student in the student list. -
find Betsyfollowed bydelete 1deletes the 1st student in the results of thefindcommand. -
focus c/CS2103Tfollowed bydelete 3deletes the 3rd student in the CS2103T class.
Locate student by name: find
Format: `find KEYWORD…
- The search is case-insensitive, i.e.
Johmatches withjohnandJOHN. - The search is performed on the currently displayed student list.
- To clear the current search, use the
listcommand.
Examples:
-
find bertfinds students with bert in their name (case-insensitive), i.e. Edbert Geraldy, Bert Hendrick, Gerard Albert, etc. -
find ben chrisfinds students with either ben or a chris in their name, i.e. chris ben, wonders ChRIs, bEn ten, etc. -
find alex davidreturnsAlex Yeoh,David Li.
find command performs its search over the currently displayed student list and replaces the displayed list with its search result. If you need to revert to the original list of all students, you may use the list command.
List all students: list
Format: list
- The displayed list of students contains all the students in TA-Assist.
Add classes: addc
Format: addc c/CLASS_NAME...
- Adds the classes with the specified names.
- Class names are converted to uppercase.
- e.g.
addc c/cs1101sadds a class CS1101S.
- e.g.
- Class names are case-insensitive.
- e.g. If a class with the name CS1101S already exists,
addc c/cs1101sdoes not add another CS1101S class.
- e.g. If a class with the name CS1101S already exists,
Examples:
-
addc c/CS2103T c/CS2100adds the classes named CS2103T and CS2100.
Delete classes: deletec
Format: deletec c/CLASS_NAME...
- Deletes the classes with the specified names.
- Class names are case-insensitive.
Examples:
-
deletec c/CS2103T c/CS2100deletes the classes named CS2103T and CS2100.
Assign students to class: assign
Format: assign INDEX... c/CLASS_NAME
- Assigns students specified by the given indices to an existing
CLASS_NAMEclass. - The class name is case-insensitive.
- If a specified student is already assigned to the class, the assignment for that student will be skipped.
Example:
-
listfollowed byassign 1 3 5 6 c/CS1231Sassigns the 1st, 3rd, 5th and 6th student in the displayed student list to the CS1231S class.
Unassign students from class: unassign
Format: unassign INDEX... c/CLASS_NAME
- Unassigns students specified by the given indices from an existing
CLASS_NAMEclass. - The class name is case-insensitive.
- If a specified student is not assigned to the class, the unassignment for that student will be skipped.
Example:
-
listfollowed byunassign 1 3 5 6 c/CS1231Sunassigns the 1st, 3rd, 5th and 6th student in the displayed student list from the CS1231S class.
List classes: listc
Format: listc
Exit the program: exit
Format: exit
Enter focus mode: focus
Format: focus c/CLASS_NAME
- Enters focus mode for the class named
CLASS_NAME. - The class name is case-insensitive.
-
If successful, the GUI changes to one that is similar to the one below:

Example:
-
focus c/CS2100enters focus mode for the CS2100 class, allowing you to manage data relating to CS2100.
Clear all existing data: clear
Format: clear
Focus Mode Commands
The following commands are ONLY available in focus mode.
| Command | Format |
|---|---|
list |
list |
adds |
adds s/SESSION_NAME... [d/DATE] |
deletes |
deletes s/SESSION_NAME... |
grade |
grade INDEX... s/SESSION_NAME g/GRADE_VALUE |
scores |
scores s/SESSION_NAME |
view |
view INDEX |
export |
export |
unfocus |
unfocus |
Click here for commands that are also available in default mode.
List all students in the class: list
Format: list
- The list of students only shows the students that are assigned to the currently focused class.
Create sessions: adds
Format: adds s/SESSION_NAME... [d/DATE]
- Creates new sessions with names
SESSION_NAMEon the sameDATE. If theDATEfield is empty, the current date is used instead. - The
DATEfield should follow the formatYYYY-MM-DD. - Session names are capitalised (i.e. the first character of each word will be converted to upper-case. The remaining characters of the word will be converted to lower-case).
- e.g.
adds s/tutorial ONEadds a session Tutorial One.adds s/_tutorial_2adds a session _tutorial_2.
- e.g.
- Session names are case-insensitive.
- e.g. If a session Lab 1 already exists,
adds s/lab 1does not create another Lab 1 session.
- e.g. If a session Lab 1 already exists,
Example:
-
adds s/Lab1 s/Tutorial1 d/2022-08-11creates sessionsLab1andTutorial1on 11 August 2022.
Delete sessions: deletes
Format: deletes s/SESSION_NAME...
- Deletes the sessions with the specified names.
- Session names are case-insensitive.
Examples:
-
deletes s/Lab1 s/Assignment3deletes the session named Lab1 and Assignment3.
Grade session: grade
Format: grade INDEX... s/SESSION_NAME g/GRADE_VALUE
- Grades the students specified by the given indices on the session
SESSION_NAMEwith a grade ofGRADE_VALUE. -
GRADE_VALUEmust be a number between 0 and 1000 (decimal points are allowed). -
GRADE_VALUEwill be rounded to 2 decimal places. - The session name is case-insensitive.
Example:
-
grade 1 2 s/Lab 1 g/93gives the students at index 1 and 2 a grade of 93 for the session Lab 1.
Show students’ grades for a session: scores
Format: scores s/SESSION_NAME
- Shows the grades of all students for the session
SESSION_NAME. - The session name is case-insensitive.
Example:
-
scores s/Tutorial 11shows the grades of all students for the session Tutorial 11, as shown below.
In the above example,
- Edbert Geraldy, Lin Zechen, Ng Jing Xue, and Rezwan Arefin have been allocated a score of 100.0 for Tutorial 11.
- Tutorial 11 for Xu Yi has not been graded, hence her cell has been marked red.
View session grades of student: view
Format: view INDEX
- Shows the grades of the student at index
INDEXfor the currently focused class. - Only sessions that are graded for the student will have the grades displayed.
Example:
-
grade 2 s/Lab 1 g/93thenview 2returns1. Lab 1: 93, which is the grade of the student at index 2 for the session Lab 1.
Export class data: export
Format: export
- The exported class data includes:
- Names of students in the class.
- Names of sessions for the class.
- The grades of the students for each session.
-
An example generated CSV file when opened in Microsoft Excel:

- The first column shows all the student names.
- Subsequent columns show the grades of students for various sessions (e.g. David Li scores 0 for Tutorial 1).
Exit focus mode: unfocus
Format: unfocus
- Alternatively, you can exit focus mode by clicking on the button shown here.
Automated Data Backup
On each launch of TA-Assist, if the save data loads without error, a backup of the save data is made and saved to data/taassist.json.bak. If you need to revert a catastrophic change, you may simply quit the app and overwrite data/taassist.json with the backup file.
data/taassist.json.bak file will be overwritten if it exists.
Frequently Asked Questions (FAQ)
Q: How do I install Java?
A: You may refer to Oracle’s JDK Installation Guide.
Q: I double-clicked the JAR file but was unable to start the app. What do I do?
A: Open your preferred terminal and navigate to the directory the JAR file is located in. Then type in java -jar TaAssist.jar to run the application.
Q: How do I transfer my data to another computer?
A: Install the app on the other computer and overwrite the empty data file it creates with the file that contains the data of your previous TA-Assist home folder.
Appendix
Parameters and Constraints
For all parameters, the following constraints are applied:
- As TA-Assist uses prefixes such as
p/andc/to identify the start of a new parameter, all parameters have the implicit constraint that they must not contain prefixes of another parameter if that other parameter is being used in a command.- e.g. You cannot add a student with the address
Commongrove n/123Aas then/123Aprefix will be parsed by TA-Assist as the Student’s name.
- e.g. You cannot add a student with the address
The following is the list of all parameters used in TA-Assist along with their constraints:
-
INDEX- Indices must be positive integers.
- Indices must be within the indices shown in the displayed list.
-
KEYWORD- Search keywords cannot contain spaces.
-
n/NAME- Student names must not be empty.
- Student names must only contain alphanumeric characters and spaces.
-
p/PHONE_NUMBER- Phone numbers must only contain numbers.
- Phone numbers must be at least 3 digits long.
-
e/EMAIL- E-mails must be of the format
local-part@domain, i.e.johndoe+work@s.mail.com. -
local-partmust only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-). -
domainis made up of domain labels, separated by periods.- Each
domainmust end with a domain label of at least 2 characters long. - Each domain label must start and end with alphanumeric characters.
- Each domain label must consist of only alphanumeric characters, separated only by hyphens if any.
- Each
- E-mails must be of the format
-
a/ADDRESS- Addresses must not be empty.
- Note that addresses follows the above implicit constraint.
-
c/CLASS_NAME- Class names must be alphanumeric.
- Class names must not exceed 25 characters.
-
s/SESSION_NAME- Session names must not be empty.
- Session names must only contain alphanumeric characters, underscores, and spaces.
-
d/DATE- Dates must be of the format
YYYY-MM-DD, i.e. 25th May 2022 must be written as2022-05-25. - Dates must be valid, i.e.
2001-02-29is not a valid date because the year 2001 is not a leap year.
- Dates must be of the format
-
g/GRADE_VALUE- Grades must be a non-negative numerical value, i.e.
0,100.0, and12.34. - Grades will be rounded to two decimal places.
- Grades must be a non-negative numerical value, i.e.