By: AY1920S1-CS2103T-F11-4
Since: September 2019
Licence: MIT
NUStudy is an application for managing three kinds of informational material: lecture notes, quizzes and revision tasks. Their primary purpose is preparing for exams and tests in universities, but they can also be useful for refreshing memory, particularly after a module has ended (the reliance of some computing modules on prior knowledge is rather heavy).
Most of the work is done through a command line; the GUI merely displays the results. The overall appearance is similar to a simple note-taking client.
-
Ensure you have Java 11+ installed.
-
Download the latest
nustudy.jar
here. -
Copy the file to the folder you want to use as the application’s home folder.
-
Double-click the file to start the app (if this does not work, use
java -jar nustudy.jar
). The GUI should appear in a few seconds. -
Type the command in the command box and press Enter to execute it. Some commands you can try are
-
listnote
: lists all lecture notes -
addnote t/Title c/Content
: adds a lecture note with title "Title" and content "Content". -
deletenote 1
: deletes the first lecture note -
help
: open the help window -
exit
: exits the app
-
This section helps you navigate through the features and commands.
Command Format
-
Words in
UPPERCASE
are parameters you supply e.g. inaddnote t/TITLE
,TITLE
is a parameter which can be used asaddnote t/TITLE
. Parameters can be provided in any order; in the case of multiple parameters with the same prefix (e.g.addnote t/A t/B
) the last one is taken (B
) unless otherwise stated. -
Items in square brackets are optional.
-
Items with
…
after them can be used zero or more times.
This is the basic command for getting your lecture notes into NUStudy. The i/
field, if provided, brings up a
dialog where you can choose an image from your computer’s file system; such an image will be displayed at the
bottom of the note.
Format: addnote t/TITLE c/CONTENT [i/]
Suppose you want to remember what the order-7 triangular tiling looks like and its Schläfli symbol.
Type addnote t/Order-7 triangular tiling c/{3,7} i/
into the command line. The file selection dialog
will pop up, and you can select the image from your file system. Once done, you will see the lecture note:
It is fine to back out of the image selection dialog; an image can always be added later using editnote
.
Your images are copied into the application’s data folder, so don’t worry about losing them –
you can always take them along. Images resize according to the window, but if an image is small enough that it can fit at its
natural resolution, it is left that way.
If your lecture notes need updating, use this command, providing arguments t/
, c/
and i/
(at least one)
as you would do with addnote
, but only those arguments you want to change. Providing i/
brings up the same image
selection dialog like in addnote
.
Images can explain a lot, but if you want to remove them, use i/none
in your command, and the dialog
will not appear. Otherwise, if you back off from choosing an image (e.g. by clicking the dialog’s
close button), nothing will happen and your images will remain safe and sound.
Multiple notes can share the same image, and you can overwrite existing images currently in NUStudy with new ones sharing the same filename.
The index must be between 1 and the number of lecture notes inclusive. It is listed before the title of each lecture note:
Format: editnote INDEX [t/TITLE] [c/CONTENT] [i/[none]]
Of course, what use are virtual lecture notes if you can’t search through them? This command
displays those notes whose titles contain any one of the words (space-separated, ignoring case) you provide
as arguments.
Format: findnote WORD [WORD]…
This is like running findnote
but with no arguments. It shows all your lecture notes in their unabashed glory.
Format: listnote
When your semester ends, surely you want to free up space on your computer so you can accept new notes
for the coming semester? This command deletes the lecture note with the index you provide.
Format: deletenote INDEX
NUStudy can also store different sets of questions and answers; at your command, the system will prompt you to answer those questions.
You can add a question and its answer together with the necessary fields to the app.
Format: addq q/QUESTION a/ANSWER s/SUBJECT d/DIFFICULTY
-
You can define any type of difficulty level that is customized to your understanding of the question.
Example:
-
addq q/How to represent 85 in binary? a/1010101 s/CS2100 d/medium
The new question will be added to your question bank.
You can edit the fields of an existing question by providing the fields you want to change.
Format: editq INDEX [q/QUESTION] [a/ANSWER] [d/DIFFICULTY] [s/SUBJECT]
-
Edits the question at the specified
INDEX
. The index refers to the index number shown in the displayed question list. The index must be a positive integer 1, 2, 3, … -
At least one of the optional fields must be provided.
-
Existing values will be updated to the input values.
Examples:
-
editq 6 a/16 d/easy
Edits the answer and difficulty of the 2nd question to be 16
and easy
respectively.
This command will give you a list of questions whose body or answer contains the keyword(s) you specified.
Format: findq KEYWORD [MORE KEYWORDS]
-
The search is case insensitive.
-
The order of the keywords does not matter.
-
Only full words will be matched.
-
NUStudy will return a list of questions containing any one of the keywords you provided. For example, if you type the command
findq word1 word2
, questions with body or answer which contains "word1", "word2", "word 1 word2", "word2 word1", or "word1 word2 xxxxxx yyyy".
Examples:
-
findq coupling tcp
Finds the questions whose body or answer contains the keyword coupling
or tcp
.
You can delete a question at its specified INDEX together with its relevant fields from the list.
Format: deleteq INDEX
-
Deletes the question at the specified
INDEX
. -
The index refers to the index number shown in the displayed question list.
-
The index must be a positive integer 1, 2, 3, …
Example:
-
listq
deleteq 3
Deletes the 2nd question from the question list.
-
findq character
deleteq 1
Deletes the 1st question in the results of findq
command.
This command allows you to view the list of all questions.
Format: listq
You can view the list of all questions filtered by the specific difficulty.
Format: difficulty DIFFICULTY
-
The search is case insensitive.
-
Only full difficulty will be matched.
Example:
-
difficulty hard
Returns a list of hard
questions.
You can view the list of all questions from a specific subject.
Format: subject SUBJECT
-
The search is case insensitive.
-
Only full subject will be matched.
Example:
-
subject CS2103T
Returns a list of questions of CS2103T
.
There is a built-in quiz mode in NUStudy for you to take a revision quiz. You can indicate the number of questions, subject and difficulty and the quiz will randomly select questions for you according to your requirement. You will answer the question one by one and your result will be given.
You can enter the quiz mode using this command.
Format: quiz n/NUMBER_OF_QUESTIONS d/DIFFICULTY s/SUBJECT
ℹ️
|
The NUMBER_OF_QUESTIONS must be a positive integer.DIFFICULTY and SUBJECT are case insensitive.
|
Example:
Step 1: Types quiz n/2 d/easy s/cs2040
in the command box and presses Enter
to execute the command. The following
graph specifies how you can input the command.
Step 2: The result will show the message of successfully entering the quiz mode. The first quiz question will appear
on the right column. The following graph shows the result of your quiz
command.
You can type your answer
in the command box to answer the question.
ℹ️
|
The answer is case sensitive.
|
Example:
Step 1: Types your answer
in the command box and presses Enter
to execute the command. The figure below is an example
of how to answer question.
Step 2: The result will show the correctness of your answer and the next question will be displayed. The following
graph simulates the situation after you answer the question.
You can check the answer for the current quiz question using this command.
Format: show
ℹ️
|
You can use it as reference and please do not use it to cheat. |
Example:
Step 1: Types show
in the command box and presses Enter
to execute the command.
Step 2: The answer of current question will be displayed.
You can skip current question and go to the next one using this command.
Format: skip
ℹ️
|
The question you have skipped will be marked as false for result. |
Example:
Step 1: Types skip
in the command box and presses Enter
to execute the command.
Step 2: The current question is skipped and next question will be displayed.
You can exit from the quiz mode using this command.
Format: quit
ℹ️
|
You need to quit the quiz mode every time after you finish the quiz.You can quit the quiz mode anytime you want.
|
Example:
Step 1: Types quit
in the command box and presses Enter
to execute the command.
Step 2: The result shows message of exit from the quiz mode and the original questions will appear. The following graph
explains what would happen after you quit
from the quiz mode.
After doing some quizzes, you can get statistics of the questions that you have done in the app. The statistics functions listed below are used to filter the type of statistics that you want to get.
ℹ️
|
To close any statistics panel, you can simply type any of the commands from the Lecture notes,
Questions and Revision tasks features. E.g. rlist .
|
ℹ️
|
Quiz results stored in the app are not synchronised with the questions.
If you have modified a question using the editq command,
the stored quiz result will still refer to the original question.
This is because a question that has been modified might cause past
answers to become irrelevant and distort the statistics.
|
You can get a breakdown of the questions that you have done by its results.
If you want to narrow the results down, you can also choose to get the statistics for a difficulty
level by adding d/
or get the statistics of different subjects by adding s/
.
Format: stats [d/DIFFICULTY] [s/SUBJECT1] [s/SUBJECT2]…
Example:
Let’s say you have answered some questions from CS2103T previously and would like
a ballpark figure to estimate how well you have grasp the basic foundations of the subject.
To get this figure:
-
Type
stats d/easy s/cs2103t
into the command box, and pressEnter
to execute it. -
The result box will display the message "Here are the statistics: [easy] [cs2103t]"
-
And you can see a pie chart of the number of correctly and incorrectly answered questions.
You can get all questions that have been answered correctly/incorrectly by using -c/-i
respectively.
Either one of -c
or -i
must be used. You can also filter by subjects by adding s/
.
Format: question [-c] [-i] [s/SUBJECT1] [s/SUBJECT2]…
Example:
Now that you have gotten the number of correct to incorrect answers, you want to see what questions
you have done incorrectly to decide on how you can further improve.
To see the questions:
-
Type
question -i s/cs2103t
into the command box, and pressEnter
to execute it. -
The result box will display the message "Here are the incorrect questions for [cs2103t]:"
-
You will be able to see a list of all your incorrectly answered questions for CS2103T and your past answers to it as well as a breakdown of the number of questions by difficulty level.
You can get a report of how well you have answered a particular question
and see all your past answers to the question.
Format: report INDEX
-
The index refers to the question number in the displayed question list.
-
The index must be a positive integer 1, 2, 3, …
Example:
After getting the questions that you have done wrong, you noticed that there is one particular
question that you have answered incorrectly numerous times. This just so happened to be the seventh
question in the question list. You decided to investigate further.
To see a report of the question 7:
-
Type
report 7
into the command box, and pressEnter
to execute it. -
The result box will display the message "Here is a report of question 7:"
-
And you can see all your attempts at the question as well as a pie chart of your results.
You can get an overview of the types of questions that you have attempted overall.
A panel containing a stacked bar graph, sorted by subjects will be returned.
You can also add two dt/
fields representing a time period to get questions you did
within that time period. The format for date is dd/MM/yyyy.
Format: overview [dt/START_DATE dt/END_DATE]
ℹ️
|
For date input constraints, you may refer to Section 3.5.1, “Adding a revision task for a note: rn ”.
|
ℹ️
|
If you have more than 8 different difficulty levels, the stack bar chart may repeat colors for the difficulties. To differentiate between the different bars in the chart, you can use your mouse to hover above them. |
Example:
You are finally done viewing your quiz results and want to know what questions you should attempt next.
To be a well-rounded individual, you decided to check if you have been neglecting any subjects recently.
To see an overview of your results:
-
Type
overview dt/20/10/2019 dt/06/11/2019
into the command box, and pressEnter
to execute it. -
The result box will display the message "Here is an overview of the questions: (20/10/2019 to 06/11/2019)"
-
And you can see a stack bar chart of all questions that you have attempted from 20/10/2019 to 06/11/2019.
You will know more about how to work with revision tasks in this section. The revision tasks help you plan your revision of notes and questions. You can do various operations on tasks, including addition, deletion, searching etc.
The revision tasks are not synchronised with the note or the question. Once created, the task content will not
change if you modify the corresponding note or question.
Revision tasks with the same heading, date and time are considered duplicate tasks and cannot co-exist.
The diagram below shows how a revision task looks like:
You can add a revision task for a note to the current revision task list with this command.
The heading will copy the title.
The GUI will display all tasks upon completing the command.
Format: rn t/TITLE_OF_NOTE dt/DATE tm/TIME
ℹ️
|
TITLE_OF_NOTE is case sensitive.
|
Example:
-
Type
rn t/CS2103T UML diagram dt/01/11/2019 tm/0900
in the command input box, and pressEnter
to execute it, as shown in the diagram below. -
The result box will display the message "Revision task added: [N] NOTE : CS2103T UML diagram by: 01 November 2019 09:00". The task is added to the task list shown in the middle panel, as shown in the diagram below.
Constraints for DATE
(yyyy : YEAR
, MM : MONTH
, dd : DAY
), TIME
(HH : HOUR
, mm : MINUTE
) input:
-
All numerical inputs must be integers.
-
DATE
input format should follow Singapore local date convention (i.e. dd/MM/yyyy). -
YEAR
is 4-digit, 0000 < yyyy < 9999.MONTH
is 2-digit, 00 < MM < 13.DAY
is 2-digit, 00 < dd < 32. -
HOUR
is 2-digit and follows 24-hour format, -01 < HH < 24.MINUTE
is 2-digit, -01 < mm < 60. -
"2400" and "0000" for
TIME
are both valid and represent 12am on the same day.
ℹ️
|
Some days of month are valid for some months but invalid for others, eg. 31 is invalid for February, April, June, September, November; 30 is invalid for February; 29 is invalid for February in common years. But they are valid for other scenarios. The day of month will automatically run down to the last valid day of that month in case you remember the number of days of a month wrongly. |
You can add a revision task for a question to the current revision task list with this command.
The heading will copy the question body.
The GUI will display all tasks upon completing the command.
Format: rq i/INDEX_OF_QUESTION dt/DATE tm/TIME
Example:
rq i/1 dt/11/11/2019 tm/1500
ℹ️
|
For constraints on DATE and TIME input, you may refer to Section 3.5.1, “Adding a revision task for a note: rn ”.
|
You can remove a particular revision task from current list with this command.
The GUI will display the current list (all-task, done-task, not-done-task or overdue-task) view.
Format: rdelete INDEX_OF_TASK
Example: rdelete 2
Detailed steps:
You can mark a task as done once you finished it.
The GUI will display the current list (all-task, done-task, not-done-task or overdue-task) view.
Format: rdone INDEX
Example:
-
Type
rdone 1
in the command input box, and pressEnter
to execute it, as shown by the diagram below. -
The result box will display the message "Revision task marked as done: [Y] …" with the task details. The status icon of the task turns from "[N]" (not done) to "[Y]" (done). You may refer to the diagram below.
ℹ️You cannot use "undone" (marking a task as not done) feature. People usually "undone" a task because they realise that some parts of the task are not fully completed. In this case, you should create a new task with a new date or time (same as "re-scheduling" in the real world).
You can edit a revision task with this command. You need to provide non-empty arguments with prefix h/
, dt/
and tm/
for fields you want to change. Please take note that at least one field must be provided.
Format: redit INDEX [h/HEADING] [dt/DATE] [tm/TIME]
Example:
redit 1 h/CS2100 Logic Circuit dt/15/08/2019 tm/1200
ℹ️
|
HEADING can be the title of a note or the question body of a question.
The edited HEADING must be an existing title or question body.HEADING is case sensitive.
|
You may view the whole revision task list using this command.
Format: rlist
You may use this command to view the list of revision tasks that you have completed.
Format: finished
You may use this command to the list of revision tasks that you have not completed.
Format: unfinished
You may use this command to view the revision tasks which you have not done but having passed the scheduled time.
Format: overdue
You may use this command to search for tasks with specified details. You may key in keyword(s) of the heading, or the date, or the time,
with prefix h/
dt/
tm/
respectively.
The GUI will display a task list of all tasks with the field (heading or date or time) that matches your input.
Format:
rfind h/WORD [WORD]…
or rfind dt/DATE
or rfind tm/TIME
ℹ️
|
Words for headings are case insensitive for rfind .
|
Example:
rfind h/hello world
- This command gives you all tasks with headings containing "hello" or "world" or "hello world".
rfind dt/01/11/2019
- This command gives you all tasks on 1 November 2019.
rfind tm/1200
- This command gives you all tasks at 12:00 (12pm), regardless of date.
ℹ️
|
The priority of the fields are h/ > dt/ > tm/ . When multiple prefixes (fields) are provided for search, only
the field with the highest priority will be considered. The rest will be ignored.
|
ℹ️
|
A heading is considered matching with the keywords as long as one of the words in the heading is the same as one of the words in the input keywords.
Please note that the minimum matching unit is a word (not characters) in the heading. Words in the headings are separated by a space. |
For example, suppose we have a task list with tasks of headings {"hello", "hello?", "Hello", "helloworld", "hello world", "HelloWorld"}, here are the use cases:
Input WORD |
Tasks shown |
---|---|
hello |
{"hello", "Hello", "hello world"} |
hello? |
{"hello?"} |
helloworld |
{"helloworld", "HelloWorld"} |
hello world |
{"hello", "Hello", "hello world"} |
he |
No task shown |
NUStudy will automatically complete the command as you type, just like how it behaves in most IDEs.
You can share your notes and questions with other NUStudy users with Internet connection.
You can create an account in the application and login with your email and password. This allows you to access to NUStudy on other platforms.
You can set a time limit before you start a quiz to train yourself under exam conditions. NUStudy will automatically end the quiz when time is up.
Format: quiz n/NUMBER_OF_QUESTIONS d/DIFFICULTY s/SUBJECT tl/TIME_LIMIT
You can enable the push notification feature to send a desktop reminder when the task is about to start.
Format: notify -e [-A]
You can disable the push notification with this command.
Format: notify -d [-A]
You can sort the revision tasks based on certain fields with ascending/descending order.
Format: sort o/ORDER f/FIELD
Example:
sort o/a f/dt
- You can sort the tasks according to date in ascending order.
sort o/d f/h
- You can sort the tasks according to heading in descending alphabetical order.
Adding lecture notes: addnote t/TITLE c/CONTENT [i/]
eg. addnote t/Order-7 triangular tiling c/{3,7} i/
Editing lecture notes: editnote INDEX [t/TITLE] [c/CONTENT] [i/[none]]
eg. editnote 1 t/An AVL Tree
Viewing lecture notes: findnote WORD [WORD]…
eg. findnote AVL
Listing all lecture notes: listnote
Deleting lecture notes: deletenote INDEX
eg. deletenote 1
Clearing all lecture notes: clearnote
Adding Questions: addq q/QUESTION a/ANSWER s/SUBJECT d/DIFFICULTY
eg. addq q/How to represent 85 in binary? a/1010101 s/CS2100 d/medium
Listing all questions: listq
Editing a question: editq INDEX [q/QUESTION] [a/ANSWER] [d/DIFFICULTY] [s/SUBJECT]
eg. editq 7 a/16 d/easy
Locating questions by keyword: findq KEYWORD [MORE KEYWORDS]
eg. findq UDP
Deleting a question: deleteq INDEX
eg. listq
then deleteq 3
Filtering by difficulty: difficulty DIFFICULTY
eg. difficulty hard
Filtering by subject: subject SUBJECT
eg. subject CS2103T
Clearing all questions: clearq
Entering quiz mode: quiz n/NUMBER_OF_QUESTIONS d/DIFFICULTY s/SUBJECT
eg. quiz n/2 d/Easy s/CS2040
Answering the quiz question: type your answer in the text input box
Showing an answer: show
Skipping a question: skip
Exiting quiz mode: quit
Getting statistics for subjects: stats [d/DIFFICULTY] [s/SUBJECT1] [s/SUBJECT2]…
eg. stats d/easy s/cs2103t
Getting questions with correct/incorrect answers: question [-c] [-i] [s/SUBJECT1] [s/SUBJECT2]…
eg. question -i s/cs2103t
Getting a report for individual questions: report INDEX
eg. report 7
Getting overview of questions attempted: overview [dt/START_DATE dt/END_DATE]
eg. overview dt/20/10/2019 dt/06/11/2019
Adding a revision task for note: rn t/TITLE_OF_NOTE dt/DATE tm/TIME
eg. rn t/CS2103T UML diagram dt/01/11/2019 tm/0900
Adding a revision task for question: rq i/INDEX_OF_QUESTION dt/DATE tm/TIME
eg. rq i/1 dt/11/11/2019 tm/1500
Removing a revision task: rdelete INDEX_OF_TASK
eg. rdelete 2
Marking the revision task as done: rdone INDEX
eg. rdone 1
Editing a revision task: redit INDEX [h/HEADING] [dt/DATE] [tm/TIME]
eg. redit 1 h/CS2100 Logic Circuit dt/15/08/2019 tm/1200
Viewing all revision tasks: rlist
Viewing completed revision tasks: finished
Viewing uncompleted revision task: unfinished
Viewing overdue revision tasks: overdue
Finding tasks with specified details: rfind h/WORD [WORD]…
or rfind dt/DATE
or rfind tm/TIME
eg. rfind h/hello world
or rfind dt/01/11/2019
or rfind tm/1200
Clearing current revision plan: rclear
Exitting the app: exit
Opening help window: help