TAA User Guide
Are you a NUS Teaching Assistant (TA) struggling to keep track of your student's data between spreadsheets and different apps?
Are you a TA that prefers typing commands over clicking through menus?
Look no further! Teacher Assistant's Assistant (TAA) is a desktop app that consolidates all your student management needs in one place. It leverages the speed of fast typists while maintaining a clean visual display, so you can manage students and track assignments, participation, and attendance — all without leaving your keyboard!
Spend less time organizing data and more time focusing on what matters most: teaching.
macOS users: Please ensure you have the exact Java version as stated here.
TAA.jar) from our GitHub page here:
TAA.jar into a new folder used to contain the app's data. We recommend naming this folder "TAA" and putting it in your Downloads folder.You should see TAA launch:
Here is a brief overview of the user interface:
Once TAA is running, you can start by learning about the app's Core Concepts to understand what the app can do. Then, continue onto the Recommended Workflows how see how the app can fit into your workflows.
You can refer to the Features section for detailed command documentation.
Finally, to clear all existing demo data and begin your use of TAA, run clear.
Before diving into features, let's learn how TAA organises your data.
TAA manages two types of information:
👉 This means a student can have different attendance, participation, and grades across different groups and dates.
Most actions in TAA happen within a group context.
switchgroup g/GROUP_NAME
mark, unmark (attendance)part (participation)view (session overview)createassignment, gradeassignment👉 Think of it as: “I am currently working in this group.”
TAA has different layouts:
list → shows a list of students in the current groupview → shows an overview of attendance and participation across sessions👉 Important:
Many commands use i/INDEX or i/INDEX_EXPRESSION.
👉 Tip: Run list or view before using index-based commands to avoid mistakes.
Here are some common workflows that TAA supports.
add n/John Doe p/98765432 e/johnd@example.com m/A1234567X
creategroup g/2026-S1-T01
addtogroup g/2026-s1-t01 i/1-5
Note how group names can be specified case-insensitively for convenience.
switchgroup g/2026-s1-t01
view d/2026-03-16
mark i/1-10
unmark i/3
After opening a session:
part i/1 pv/4
createassignment a/Quiz 1 d/2026-04-05 mm/20
Type createa and press TAB on your keyboard to autocomplete commands.
gradeassignment a/Quiz 1 i/1-5 gr/18
Export the current session view to a CSV file:
exportview f/t01-view.csv
Most workflows follow this pattern:
list or view)👉 If something doesn’t work, check that you're in the right Group
This section describes the valid formats for commonly used fields in TAA commands.
You don't need to memorise everything — refer back here if a command fails due to invalid input.
Info:
Words in UPPER_CASE are the parameters to be supplied by the user.
e.g. NAME in add n/NAME is a parameter which can be used like add n/John Doe
Parameters can be in any order.
e.g. if the command specifies n/NAME p/PHONE, p/PHONE n/NAME is also acceptable
Items in square brackets are optional.
e.g n/NAME [t/TAG] can be used as n/John Doe t/scholar or as n/John Doe
Items with …​ after them can be used multiple times including 0 times.
e.g. [t/TAG]…​ can be used as t/scholar or t/scholar t/exchangeStudent
Additional parameters for commands that do not take in parameters (such as help, list, exit and clear) will be ignored.
e.g. help 123 will run help
When using the PDF version of this User Guide, be careful when copy-pasting commands with multiple lines as spaces across lines might be omitted.
Many commands in TAA accept an i/INDEX or i/INDEX_EXPRESSION parameter to refer to one or more students. The index refers to the position shown in the current list or view.
Supported formats:
INDEX i/1INDEX_EXPRESSION i/1,2,4i/1-4i/1,3-5Rules:
i/3-2 is invalid)list/view'), hyphen (-), or forward slash (/)ã, é, ç)Examples:
John DoeMary-Jane O'BrienRenéeX Æ A-Xii+Examples:
98765432+1 (650) 253-0000911Must follow the format: local-part + @ + domain-name
+, _, ., -.Examples:
john@example.come1234567@u.nus.edu.sgAExamples:
A1234567XExamples:
scholarexchangeStudentTip: A student can have zero or more tags.
The g/GROUP_NAME parameter is used to identify tutorial or lab groups.
Allowed characters:
-)_)Rules:
-) or underscore (_), such as:
-T09_T09Examples:
T01CS2103T T09Lab_Group_1Tip: If the group name field is optional for that command, supplying it acts as a shortcut for the switchgroup command.
The mm/MAX_MARKS parameter refers to the maximum marks (grade) for an Assignment.
The gr/GRADE parameter refers to the grade (marks) for an Assignment given to a Student.
Remember that Fields (e.g. NAME, PHONE, EMAIL, etc.) must follow the rules stated in Command Parameters and their Rules.
addAdds a student to TAA.
Format: add n/NAME p/PHONE e/EMAIL m/MATRIC_NUMBER [t/TAG]…​
Examples:
add n/John Doe p/98765432 e/johnd@example.com m/A1234567X t/scholar Adds a student named John Doe with phone number 98765432, email johnd@example.com, matric number A1234567X, and one tag named scholar.Related FAQs:
listShows a list of all students in the current group.
Format: list
Examples:
list when Current Group: T01 Shows a list of all the students in group T01.list when Current Group: No Group Selected Shows a list of all the students in TAA.editEdits an existing student in the TAA.
Format: edit i/INDEX [n/NAME] [p/PHONE] [e/EMAIL] [m/MATRIC_NUMBER] [t/TAG]…​
t/ without specifying any tags after it.Examples:
edit i/1 p/91234567 e/johndoe@example.com Edits the phone number and email address of the 1st student to be 91234567 and johndoe@example.com respectively.edit i/2 n/Betsy Crower t/ Edits the name of the 2nd student to be Betsy Crower and clears all existing tags.Related FAQs:
findFinds and lists students whose fields match any of the given parameters in the current group.
Format: find [n/NAME]... [p/PHONE]... [e/EMAIL]... [m/MATRIC_NUMBER]... [t/TAG]...
n/john will match the name Johnn/john will match the name John DoeOR search) though students who match more parameters will be listed first.find n/alex n/david returns a list of students with names containing alex or davidExamples:
find n/john Returns students with the names john and John Doe.
find n/john p/987 e/example.com m/123 t/scholar Returns students with a name containing john, a phone number containing 987, an email containing example.com, a matric number containing 123 or a tag containing scholar.
find n/alex n/david Returns the students Alex Yeoh, David Li.

deleteDeletes the specified student from TAA.
Format: delete i/INDEX
Examples:
list followed by delete i/2 Deletes the 2nd student in the current list.find n/Betsy followed by delete i/1 Deletes the 1st student in the result list of the find command.Group names are case-insensitive. For example, 2026-S1-T01 and 2026-s1-t01 refers to the same group.
creategroupAdds a tutorial group to TAA.
Format: creategroup g/GROUP_NAME
g/-T09 and g/_T09 are invalid group names.Examples:
creategroup g/T01 Creates the group T01.Tip: Use a consistent group-naming format that matches how you organize your classes.
For example: 2024-S1-T02 or 2025-S2-T02.
deletegroupDeletes a tutorial group from TAA.
Format: deletegroup g/GROUP_NAME
Examples:
deletegroup g/T01 Deletes the group T01.Info: This only deletes the group. Your students that were in the group will still remain in TAA, but will no longer be part of that group.
Warning: When a group is deleted, its assignments and grades are deleted too.
listgroupsShows a list of all groups in TAA.
Format: listgroups
Examples:
listgroups when in Current Group: T01 or Current Group: No Group Selected shows a list of all the groups in TAA.addtogroupAdds one or more students to a group. Students can be identified either by matric number or index expression.
Format:
addtogroup g/GROUP_NAME m/MATRIC_NUMBER [m/MATRIC_NUMBER]addtogroup g/GROUP_NAME i/INDEX_EXPRESSIONExamples:
addtogroup g/T01 m/A1234567X m/A2345678L Adds students with matric number A1234567X and A2345678L to group T01.addtogroup g/Project Team i/1,3,5,7 Adds students at indexes 1, 3, 5, and 7 from the current list to group Project Team.removefromgroupRemoves one or more students from a group. Students can be identified either by matric number or index expression. This only removes the student’s membership from the group, not the student from the TAA.
Format:
removefromgroup g/GROUP_NAME m/MATRIC_NUMBER [m/MATRIC_NUMBER]removefromgroup g/GROUP_NAME i/INDEX_EXPRESSIONExamples:
removefromgroup g/T01 m/A1234567X m/A2345678L Removes students with matric number A1234567X and A2345678L from group T01.removefromgroup g/Project Team i/1,3,5,7 Removes students with the index 1, 3, 5, 7 from the list in the current group Project Team.renamegroupChanges the name of a group.
Format: renamegroup g/OLD_GROUP_NAME new/NEW_GROUP_NAME
Examples:
renamegroup g/T01 new/Tutorial-01 Renames group T01 to Tutorial-01.Info: When a group is renamed, its assignments and grades stay attached.
switchgroupSwitches into or out of a group.
Format:
switchgroup g/GROUP_NAMEswitchgroup allExamples:
switchgroup g/T01 Switches current group to T01switchgroup all Switches out of the current group (i.e. No Group Selected).Info:
You must first switch to a group using switchgroup g/GROUP_NAME before using the part, mark, unmark or view commands.
partAssigns a participation level for a student in a group for a particular date.
Format: part i/INDEX_EXPRESSION d/YYYY-MM-DD pv/PARTICIPATION_VALUE
PARTICIPATION_VALUE must be an integer from 0 to 5.Examples:
part i/1 d/2026-03-16 pv/4 Assigns a participation level of 4 on the 16 of March 2026 for the student at index 1 for the current list.Tip:
TAA allows assigning participation value for absent students.
For example, to account for take-home assignments.
markMarks the attendance for a student in a group as PRESENT for a particular date.
Format: mark i/INDEX_EXPRESSION d/YYYY-MM-DD
Examples:
mark i/1 d/2026-03-16 Marks the attendance of the student at index 1 of the current list as PRESENT for the 16 of March 2026.Tip:
TAA allows marking attendance for future sessions.
For example, you can mark a student on long-term medical leave as absent, or mark the whole class present in advance and adjust on the actual day.
unmarkMarks the attendance for a student in a group as ABSENT for a particular date.
Format: unmark i/INDEX_EXPRESSION d/YYYY-MM-DD
Examples:
unmark i/1 d/2026-03-16 Marks the attendance of the student at index 1 of the current list as ABSENT for the 16 of March 2026.Tip:
TAA does not automatically mark students as ABSENT when a session's date passes.
You must mark absences manually with the unmark command.
viewShows the attendance and participation overview for the current group.
Format: view [STATUS] [d/YYYY-MM-DD] [from/YYYY-MM-DD] [to/YYYY-MM-DD] [g/GROUP_NAME]
Tip: You can supply [g/GROUP_NAME] as a shortcut to switchgroup.
After using view d/YYYY-MM-DD, you can use shorthand follow-up commands without repeating the date or group:
mark i/1unmark i/1part i/1 pv/4You can still use the full forms if needed:
mark i/1 d/2026-03-16unmark i/1 d/2026-03-16part i/1 d/2026-03-16 pv/4Examples:
view Shows the semester overview of attendance and participation for the current group.view d/2026-03-16 Highlights the session on 16 March 2026.view absent d/2026-03-16 Shows the list of students who have the attendance status ABSENT on 16 March 2026 for the current group.view from/2026-03-01 to/2026-03-31 Shows only March 2026 session columns in the overview.Tips:
By default (no STATUS specified in command), the overview will show:
[ ] Absent, [X] Present, [-] Uninitialised.You can optionally narrow the visible session columns with a date range:
from/ sets the earliest visible session date.to/ sets the latest visible session date.from/ and to/ can be used together:
view from/2026-01-20 to/2026-01-30 Shows the session columns from 20 January 2026 to 30 January 2026.from/ cannot be later than to/.Info:
Assignments can only be managed after you switch to a specific group using switchgroup g/GROUP_NAME.
You will not be able to run assignment-related commands outside a group.
Tip: Assignment names are case-insensitive. For example: Assignment 1 and assignment 1 are treated as the same.
createassignment (createa)Creates an assignment for students in the current group with a due date and maximum marks.
Format:
createassignment a/ASSIGNMENT_NAME d/DUE_DATE mm/MAX_MARKSNotes:
Examples:
createassignment a/Quiz 1 d/2026-04-05 mm/20 Creates assignment Quiz 1 for the current group with a due date on 5 April 2026 and maximum marks of 20.Warning: When a student is removed from a group, their grades for that group’s assignments are removed.
editassignment (edita)Edits an existing assignment for students in the current group .
Format:
editassignment a/ASSIGNMENT_NAME [na/NEW_ASSIGNMENT_NAME] [d/NEW_DUE_DATE] [mm/NEW_MAX_MARKS]Note: At least one optional field should be provided.
Examples:
editassignment a/Quiz 1 na/Test d/2026-04-08 mm/25 Changes existing assignment Quiz 1 for the current group to have a name Test, a due date on 8 April 2026 and maximum marks of 25.listassignments (lista)Shows a list of all assignments for the current group.
Format:
listassignments when Current Group: T01 shows a list of the assignments for the group T01.gradeassignment (gradea)Grades an assignment for students in the current group.
Format:
gradeassignment a/ASSIGNMENT_NAME i/INDEX_EXPRESSION gr/GRADEgradeassignment a/ASSIGNMENT_NAME m/MATRIC_NUMBER [m/MATRIC_NUMBER] gr/GRADENotes:
GRADE is a number between 0 and max marks.Examples:
gradeassignment a/Quiz 1 m/A1234567X m/A2345678L gr/17 Assigns a grade of 17 for the assignment Quiz 1 to the students with matric number A1234567X and A2345678L for the current group.deleteassignment (deletea)Deletes an assignment for the students in the current group.
Format:
deleteassignment a/ASSIGNMENT_NAMEExamples:
deleteassignment a/Quiz 1 Deletes the assignment Quiz 1 for all students in the current group.addsessionAdds a session for the current group or a specified group.
Format: addsession d/YYYY-MM-DD [g/GROUP_NAME] [n/NOTE]
UNINITIALISED attendance and participation value of 0.tutorial, lab, or make-up.Examples:
addsession d/2026-03-16 When Current Group: T01, adds a session of date 16 March 2026 for group T01.addsession d/2026-03-16 n/tutorial When Current Group: T01, adds a session of date 16 March 2026 with a note of tutorial for group T01.addsession d/2026-03-16 g/T01 When Current Group: No Group Selected, adds a session of date 16 March 2026 for group T01.editsessionEdits an existing session's date, note, or both for the current group or a specified group.
Format: editsession d/OLD_DATE [nd/NEW_DATE] [nn/NEW_NOTE] [g/GROUP_NAME]
nd/ or nn/ must be provided.nn/ with no text after it to clear the existing note.Examples:
editsession d/2026-03-16 nd/2026-03-23 When Current Group: T01, edits the date of the session for 16 March 2026 and changes it to 23 March 2026 for group T01.editsession d/2026-03-16 nn/lab When Current Group: T01, edits the note of the session for 16 March 2026 to lab.editsession d/2026-03-16 nd/2026-03-23 nn/make-up tutorial When Current Group: T01, edits the date of the session for 16 March 2026 and changes it to 23 March 2026 and adds a note make-up-tutorial for group T01.editsession d/2026-03-16 nd/2026-03-23 g/T01 When Current Group: No Group Selected, edits the date of the session for 16 March 2026 and changes it to 23 March 2026 for group T01.deletesessionDeletes a session for the current group or a specified group.
Format: deletesession d/YYYY-MM-DD [g/GROUP_NAME]
g/GROUP_NAME is omitted, the session is deleted from the current group.view, the highlight is cleared.Examples:
deletesession d/2026-03-16 When Current Group: T01, deletes the session of date 16 March 2026 for group T01.deletesession d/2026-03-16 g/T01 When Current Group: No Group Selected, deletes the session of date 16 March 2026 for group T01.helpShows a message explaining how to access the help page.
Format: help
clearClears all entries from TAA. This includes all students, groups, assignments and sessions.
Format: clear
Examples:
clear when Current Group: T01 or Current Group: No Group Selected deletes all entries from TAA, regardless of view.exportviewInfo: This command only works when you are in a group.
Exports the currently displayed view matrix to a CSV-formatted file.
Format: exportview [f/FILE_NAME]
[JAR file location]/view-export.csv.[JAR file location]/[FILE_NAME]Examples:
exportview When Current Group: T01, exports to a file named view-export.csv containing the sessions, attendance and participation values for group T01.exportview f/exports/t01-view.csv When Current Group: T01, exports to a file named t01-view.csv in a folder exports containing the sessions, attendance and participation values for group T01.For an example of the exported CSV structure, refer to the CSV file format section below.
Warning:
If you provide a file name, you will need to append .csv to the end.
TAA will not automatically append .csv at the back of your given file name.
The exported CSV file contains the students shown in the current session overview.
Each row represents one student.
The columns are arranged as follows:
Student.<date> Attendance<date> ParticipationExample:
| Student | 2026-04-01 Attendance | 2026-04-01 Participation |
|---|---|---|
| John Doe | PRESENT | 0 |
| Philip Cap | PRESENT | 0 |
| Brendan Tan | ABSENT | 0 |
Warnings:
If you export again to the same file path, the existing file will be overwritten. If you want to keep an older export, save it to a different location or rename the file before exporting again.
Avoid illegal filename characters such as :, *, ?, ", <, >, and | in FILE_NAME, and only use / or \ for the filepath. TAA will reject file names containing these characters and ask you to choose a different name.
exitExits the program.
Format: exit
Your data will be saved automatically as a JSON file [JAR file location]/data/TAA_savefile.json after any command that changes the data.
You do not need to save any changes manually.
You are welcome to update data directly by editing the TAA_savefile.json save file.
You are recommended to back up your data before beginning.
You can edit the save file using pre-installed text editors found on your computer:
Warning: You should follow the format below closely to prevent an invalid save file.
{
"persons" : [ {
"name" : "NAME",
"phone" : "PHONE",
"email" : "EMAIL",
"matricNumber" : "MATRIC_NUMBER",
"tags" : [ "TAGS" ],
"groups" : [ "GROUP_NAME" ],
"groupSessions" : {
"GROUP_NAME" : [ {
"date" : "YYYY-MM-DD",
"attendance" : "ATTENDANCE_STATUS",
"participation" : PARTICIPATION_VALUE,
"note" : "NOTE"
} ]
},
"assignmentGrades" : {
"GROUP_NAME" : {
"ASSIGNMENT_NAME" : ASSIGNMENT_MARKS (this field must be less than or equal to MAX_MARKS)
}
}
} ],
"groups" : [ {
"name" : "GROUP_NAME",
"assignments" : [ {
"name" : "ASSIGNMENT_NAME",
"dueDate" : "YYYY-MM-DD",
"maxMarks" : MAX_MARKS
} ],
"sessions" : [ {
"date" : "YYYY-MM-DD",
"attendance" : "UNINITIALISED", (this field should be kept at "UNINITIALISED")
"participation" : 0, (this field should be kept at 0)
"note" : ""
} ]
} ]
}
Tip:
If your changes to the save file makes it invalid, TAA will not load your students and will not overwrite your save file.
You should close TAA and manually fix the save file before continuing your use of the app, as any changes you make will not be saved.
Related FAQs:
preservedSkippedPersons, preservedSkippedGroups and loadWarnings in my save file. What are they?| Action | Formats and Examples |
|---|---|
| Add | add n/NAME p/PHONE e/EMAIL m/MATRIC_NUMBER [t/TAG]…​ e.g., add n/James Ho p/22224444 e/jamesho@example.com m/A1234567X t/scholar |
| Add to Group | addtogroup g/GROUP_NAME m/MATRIC_NUMBER [m/MATRIC_NUMBER] addtogroup g/GROUP_NAME i/INDEX_EXPRESSION e.g., addtogroup g/T01 m/A1234567X m/A2345678L |
| Add Session | addsession d/YYYY-MM-DD [g/GROUP_NAME] [n/NOTE] e.g., addsession d/2026-03-16 g/T01 n/tutorial |
| Edit Session | editsession d/OLD_DATE [nd/NEW_DATE] [nn/NEW_NOTE] [g/GROUP_NAME] e.g., editsession d/2026-03-16 nd/2026-03-23 nn/lab g/T01 |
| View Attendance/Participation | view [STATUS] [d/YYYY-MM-DD] [from/YYYY-MM-DD] [to/YYYY-MM-DD] [g/GROUP_NAME] e.g., view absent d/2026-03-16 |
| Export View | exportview [f/FILE_NAME] e.g., exportview f/exports/t01-view.csv |
| Clear | clear |
| Create Assignment | createassignment a/ASSIGNMENT_NAME d/DUE_DATE mm/MAX_MARKS createa a/ASSIGNMENT_NAME d/DUE_DATE mm/MAX_MARKS e.g., createassignment a/Quiz 1 d/2026-04-05 mm/20 |
| Create Group | creategroup g/GROUP_NAME e.g., creategroup g/T01 |
| Delete | delete i/INDEXe.g., delete i/3 |
| Delete Assignment | deleteassignment a/ASSIGNMENT_NAME deletea a/ASSIGNMENT_NAME e.g., deleteassignment a/Quiz 1 |
| Delete Group | deletegroup g/GROUP_NAME e.g., deletegroup g/T01 |
| Delete Session | deletesession d/YYYY-MM-DD [g/GROUP_NAME] e.g., deletesession d/2026-03-16 g/T01 |
| Edit | edit i/INDEX [n/NAME] [p/PHONE] [e/EMAIL] [m/MATRIC_NUMBER] [t/TAG]…​ e.g., edit i/2 n/James Lee e/jameslee@example.com |
| Edit Assignment | editassignment a/ASSIGNMENT_NAME [na/NEW_ASSIGNMENT_NAME] [d/NEW_DUE_DATE] [mm/NEW_MAX_MARKS] edita a/ASSIGNMENT_NAME [na/NEW_ASSIGNMENT_NAME] [d/NEW_DUE_DATE] [mm/NEW_MAX_MARKS] e.g., editassignment a/Quiz 1 na/Test d/2026-04-08 mm/25 |
| Exit | exit |
| Find | find [n/NAME]... [p/PHONE]... [e/EMAIL]... [m/MATRIC_NUMBER]... [t/TAG]...e.g., find n/john p/987 e/example.com m/123 t/scholar |
| Grade Assignment | gradeassignment a/ASSIGNMENT_NAME i/INDEX_EXPRESSION gr/GRADE gradeassignment a/ASSIGNMENT_NAME m/MATRIC_NUMBER [m/MATRIC_NUMBER] gr/GRADEgradea a/ASSIGNMENT_NAME i/INDEX_EXPRESSION gr/GRADEgradea a/ASSIGNMENT_NAME m/MATRIC_NUMBER [m/MATRIC_NUMBER] gr/GRADE e.g., gradeassignment a/Quiz 1 m/A1234567X m/A2345678L gr/17 |
| Help | help |
| List | list |
| List Assignment | listassignments lista |
| List Groups | listgroups |
| Mark Attendance | mark i/INDEX_EXPRESSION d/YYYY-MM-DD e.g., mark i/1 d/2026-03-16 |
| Participation | part i/INDEX_EXPRESSION d/YYYY-MM-DD pv/PARTICIPATION_VALUE e.g., part i/1 d/2026-03-16 pv/4 |
| Remove from Group | removefromgroup g/GROUP_NAME m/MATRIC_NUMBER [m/MATRIC_NUMBER] removefromgroup g/GROUP_NAME i/INDEX_EXPRESSION e.g., removefromgroup g/T01 m/A1234567X m/A2345678L |
| Rename Group | renamegroup g/OLD_GROUP_NAME new/NEW_GROUP_NAME e.g., renamegroup g/T01 new/Tutorial-01 |
| Switch Group | switchgroup g/GROUP_NAME switchgroup all e.g., switchgroup g/T01 |
| Unmark Attendance | unmark i/INDEX_EXPRESSION d/YYYY-MM-DD e.g., unmark i/1 d/2026-03-16 |