User Guide for lesSON
Table of Contents
- Introduction
- How to use the guide
- Glossary
- Quick start
- Feature list
- Additional Features
- FAQ
- Known Issues
- Contact Us
Introduction
Revolutionise your studying experience with lesSON!
Welcome to the user guide for lesSON, your ultimate companion in mastering the Computer Science curriculum at the National University of Singapore (NUS). This guide is designed to provide you with a comprehensive understanding of the app and how to leverage its powerful features for your academic success.
What is lesSON?
lesSON is not just another study app; it’s a game-changer in the world of education. Tailored specifically for NUS Computer Science students, this desktop application enables incredibly easy creation of flashcards for revision. It employs the efficacy of active recall when you practise with the flashcards you made to increase memory retention. Say goodbye to time-consuming note-taking, and say hello to a more efficient, effective, and enjoyable study experience.
Made with the intention to maximise your study experience, here are some features we believe you’ll love:
- Enhanced Memory Retention: Thanks to lesSON’s inbuilt spaced repetition system, you can supercharge your memory and recall the important details needed. The app optimizes when you should review your flashcards, ensuring you remember and grasp complex concepts with ease.
- Intuitive Card Categorisation: lesSON helps you categorize your flashcards based on subject. This feature makes it a breeze to organize and access specific topics, keeping your study sessions focused and productive.
… and many more!
Prerequisites
Before you get started with lesSON, here’s what we recommend you need to make full use of the app:
- Comfortable with English: Since lesSON is an English-based app, a basic understanding of the language will ensure a smooth and enjoyable experience.
- Typing Proficiency: lesSON primarily uses a Command Line Interface (CLI) on top of a Graphic User Interface (GUI). This means that most of the interaction with lesSON is through the use of keystrokes. Being comfortable and efficient at typing will help you make the most of the app and enhance your user experience.
How to use this guide?
Directory
If you are a first time user, do visit our seamless onboarding process explained in the
quick start section.
For beginners, we recommend familiarising yourself with the basic commands shown in our tutorial
for new users.
If you are already comfortable using lesSON, do try out all of our other features.
Legend
Throughout this user guide, you will encounter some of these colored blocks highlighting some important information.
Glossary
Definitions
Term | Definition |
---|---|
Active recall | A popular method to strengthen memory retention by actively testing the memory to retrieve a piece of information. |
Command Line Interface (CLI) | A text-based interface where you interact with the software by typing commands into a terminal or command prompt, providing more direct and precise control over the system. |
Flashcard | A card created by the user containing a question, answer (not shown) and due date. |
Graphic User Interface (GUI) | A user-friendly interface that allows you to interact with the software through visual elements like windows, icons, buttons, and menus, making it easy to navigate with a mouse and keyboard. |
Keystrokes | Act of pressing a key on a computer keyboard |
Spaced repetition | An evidence-based learning technique where newly created and more difficult flashcards are shown more frequently than older and less difficult flashcards |
Parameter Information
The parameters used in lesSON have certain specifications. Here is an overview of how to use the parameters. Invalid inputs given as examples are non-exhaustive.
Parameter | Prefix | Accepted Format | Valid Input | Invalid Input |
---|---|---|---|---|
QUESTION | q/ | Alphanumerical values, whitespace and certain special characters | How many types of instruction formats are there for MIPS? | 什么 |
ANSWER | a/ | Alphanumerical values, whitespace and certain special characters | The opcode for R-format instruction is 000000. | こんにちは |
TAG | t/ | Alphanumerical values. | CS2100 | !factorials |
HINT | h/ | Alphanumerical values, whitespace and certain special characters | 1 + 1 | 💡 |
DIFFICULTY | d/ | Only “easy”, “medium” or “hard” (case-insensitive). | easy | difficult |
INDEX | NA | Positive integer less than size of deck or r for certain cases (see random). |
1 | 0 |
NUMBER | NA | Positive integer not more than 2147483647 | 1000 | 2147483648 |
Command Format
Format | Details | Example |
---|---|---|
UPPER_CASE parameters |
Compulsory parameter to be filed in by users. Must not be empty or contain only whitespace (except in certain cases: see edit). | add q/QUESTION a/ANSWER means users need to input a question after the q/ prefix and an answer after the a/ prefix. |
Parameters with square brackets, i.e. [ ] |
Optional parameters that can be omitted when entering the command. | add q/QUESTION a/ANSWER [h/HINT] means users can choose to omit hints when adding a card. |
Parameters with ellipsis, i.e. ... |
Command can take in multiple of the same parameter. | add q/QUESTION a/ANSWER [t/TAG...] means user can choose to add multiple tags while creating the card, each with a prefix t/ . |
Certain combinations of characters are not allowed, i.e characters that form a prefix. | Inputs that contain prefixes are not valid inputs. | Having q/ , a/ , t/ , h/ or d/ in certain input fields. |
Inputs are case-sensitive. | Cards with question that differ only in case will be regarded as different cards. | add q/QUESTION a/ANSWER and add q/question a/answer will generate 2 different cards. |
The order of prefix does not matter. | Prefix can be reordered without having any effect on the command. | add q/QUESTION a/ANSWER and add a/ANSWER q/QUESTION are both valid inputs that generates the same card. |
Commands that do not take in any parameters will disregard extraneous parameters. | Certain commands such as help , clear , exit , random and list (in certain cases: see list) will disregard any inputs after the command. |
help 123 or clear a/abc will be regarded as help and clear respectively. |
Quick Start
Get ready to embark on your productive study session with lesSON!
Installation
- Make sure that you have Java 11 or above installed on your computer.
- How do I check my version of Java installed?
- For macOS users, follow the instructions listed here instead to install Java.
- Download the latest
lesSON.jar
file from here. - Move the jar file to a working folder where you would store all of your flashcards.
- Launch lesSON.
- For Windows users:
- Open the folder where
lesSON.jar
was moved to. - Double-click
lesSON.jar
to start the application.
- Open the folder where
- For macOS users,
- Open a new Terminal window
Press Command + Space and type Terminal, then press Enter. - Navigate to the folder where you have stored the jar file using the
cd
command. - Type
java -jar lesSON.jar
and press Enter.
- Open a new Terminal window
- For Windows users:
- You should be able to see the GUI pop up on your screen.
Navigating the app
lesSON uses a Graphical User Interface (GUI) to display the flashcards you have created to you. Here is a brief overview of the GUI to help you familiarise yourself with the key elements and their locations.
Here is a summary of what each component in the GUI displays.
Name of component | Description |
---|---|
Menu button | Lists the Help, Import, Export and Exit buttons when pressed. |
Goal | Displays the number of flashcards to practise for the session. |
Command Line Box | Interface for users to input commands. |
Result Box | Displays the results of inputted command back to the user. Error messages will be shown to guide the user to the correct input if the input was incorrect. |
Deck | Lists all the flashcards in a scrollable view. The deck can be filtered using commands. |
Card | Displays the key information of a flashcard such as its question, tags and index. |
Footer | Displays where the storage of flashcards is located at. |
Tutorial
This is a tutorial for first-time and beginner lesSON users. For more advanced users, feel free to explore the other features in the command summary instead. In this tutorial, we will explain how to add, edit, tag, and practise your flashcards.
- Launch lesSON.
- Refer to the instructions here if you are unsure how to launch lesSON.
ℹ️ Note that users who are launching lesSON for the first time will have an empty deck. -
First, let’s try to add your very first flashcard. Type the following command and hit Enter:
add q/what does + mean in boolean algebra? a/it means OR.
-
Congratulations, you have created your first flashcard! Now, let’s try to edit the card created from the previous input by capitalising it! Note that the flashcard just created is at index
1
. Type the following command and hit Enter:edit 1 q/What does + mean in boolean algebra? a/It means OR.
-
Next, let’s tag it under the module CS1231S. Type the following command and hit Enter:
edit 1 t/CS1231S
-
Let’s add another flashcard. Type the following command and hit Enter:
add q/What are the different hazards to consider when using pipelining? a/Structural, Data and Control t/CS2100
-
Feel free to add a few more cards by following steps 1 to 4!
-
Next, to practise the first card, do:
practise
-
Try to recall the answer, and when you are ready to reveal the answer, type the following command and hit Enter:
solve
-
How hard was the answer to recall? Set the difficulty of the flashcard by typing any of the following command and hit Enter:
set d/easy
set d/medium
set d/hard
-
The flashcard will automatically be reinserted into deck. This is based on how difficult you found the question to be. With our inbuilt spaced repetition system, as you practise, flashcards you find more difficult will surface more at the top.
-
Note that the
practise
,solve
, andset
commands support indexes, but we recommended to use them without indexes as shown in this tutorial. This is to optimise the effectiveness of the spaced repetition by testing your memory with the most difficult flashcard. - Get familiar with these commands and when you are ready, move on to the other commands listed here.
Feature list
Command Summary
Command | Description |
---|---|
add | Adds a Flashcard to the deck. |
delete | Removes a Flashcard from the deck. |
list | Displays a specified set of Flashcards. |
edit | Modifies an existing Flashcard. |
practise | Practises a Flashcard. |
hint | Shows the hint set for a Flashcard. |
solve | Solves a Flashcard. |
set | Sets the difficulty for a Flashcard. |
random | Practises a random Flashcard. |
clear | Removes all Flashcards from the deck. |
goal | Sets the goal for the session. |
help | Shows link to User Guide. |
exit | Exits and closes the application. |
Commands
Adding a Flashcard : add
Adds a flashcard to the deck for the user.
Format:
add q/QUESTION a/ANSWER [t/TAG...] [h/HINT]
Examples:
A flashcard with only a question and answer field.
add q/What are the three ways to implement binary systems? a/1s Complement, 2s Complement, and Sign and Magnitude
A flashcard with a question, answer and tag field.
add q/How do you convert from binary to 1s Complement? a/By inverting all the bits, i.e. 0 to 1 and vice versa t/CS2100 t/Number Systems
A flashcard with a question, answer, tag and hint field.
add q/What are the 5 stages of MIPS? a/Fetch, Decode, Execute, Memory, Write Back t/CS2100 h/5 stages: IF, ID, EX, MEM, WB
1. User Input:
add q/opcode for R format instructions a/000000 t/CS2100 t/MIPS
2. Successful Output:
i. Result box displays:
New Card added: Question: opcode for R format instructions; Answer: 000000
ii. The corresponding card with the question, due date, solve count and tags is created and added to the deck.

Deleting a Flashcard : delete
Deletes a flashcard in the deck
Format:
delete INDEX
Examples:
Deleting the card in the deck with an index of 2.
delete 2
1. User Input:
add q/opcode for R format instructions a/000000 t/CS2100 t/MIPS
delete 1
2. Successful Output:
i. Result box displays:
Deleted Card: Question: opcode for R format instructions; Answer: 000000
ii. The corresponding card is deleted from the deck.

View All Flashcards : list
Shows a list of all flashcards in the deck. A keyword may be specified to filter out the list.
Format:
list [q/QUESTION] [t/TAG...]
Examples:
List full deck of flashcards.
list
List all flashcards with question starting with “What”.
list q/What
List all flashcards with the CS2100 Tag.
list t/CS2100
1. Any extraneous parameters not
q/
and t/
will be ignored, i.e. list 12345
or list a/000000
will be regarded as list
.2. Listing questions with markdown syntax should include their relevant markdown notation, i.e.
list q/**What**
for questions starting with What.3. Newly added cards may not appear if they do not match the current filter.
1. User Input:
add q/What are the three ways to implement binary systems? a/1s Complement, 2s Complement, and Sign and Magnitude
add q/What are the 5 stages of MIPS? a/Fetch, Decode, Execute, Memory, Write Back t/CS2100
list t/CS2100
2. Successful Output:
i. Result box displays:
All cards listed
ii.The corresponding cards matching the keyword and tags is displayed.

Editing a Specific Flashcard : edit
Edits an existing Flashcard in the deck.
Format:
edit INDEX [q/QUESTION] [a/ANSWER] [t/TAG...] [h/HINT]
Examples:
Change the question at index 1 to “What is the colour of the sun?”.
edit 1 q/What is the colour of the sun?
Change the answer at index 1 to “Red”.
edit 1 a/Red
Change the tag at index 1 to “Weather” and “Geography”.
edit 1 t/Weather t/Geogaphy
Change the hint at index 1 to “Apple”.
edit 1 h/Apple
1. There must be at least one optional parameter included for the command input.
2. Empty input after
t/
and h/
will remove existing tags or hint respectively.
1. User Input:
add q/How do you convert from binary to 1s Complement? a/By inverting all the bits, i.e. 0 to 1 and vice versa
edit 1 a/If is a negative number, invert all the bits, i.e. 0 to 1 and vice versa t/CS2100 t/Number Systems
2. Successful Output:
i. Result box displays:
Edited Card: Question: How do you you convert from binary to 1s Complement?; Answer: If is a negative number, invert all the bits, i.e. 0 to 1 and vice versa
ii. The corresponding card in the deck will be updated.

Practise Flashcards : practise
Practise a single Flashcard in the deck
Format:
practise [INDEX]
Examples:
Practising the card in the deck with an index of 2.
practise 2
1. If user omits INDEX in the command input, the first card in the deck will be practised.
1. User Input:
add q/opcode for R format instructions a/000000 t/CS2100 t/MIPS
practise
2. Successful Output:
i. Result box displays:
Practising Question 1 : opcode for R format instructions

Hints for Flashcards : hint
See the hint for a question at the given index
Format:
hint INDEX
Examples:
Hint the card in the deck with an index of 3.
hint 3
1. If no hints are set for card at INDEX,
No Hint has been provided
will be displayed in the result box.
1. User Input:
add q/opcode for R format instructions a/000000 t/CS2100 t/MIPS h/Zeros
hint 1
2. Successful Output:
i. Result box displays:
Hint for Question 1: Zeros

Solving Flashcards : solve
Solves the question at the given index
Format:
solve [INDEX]
Examples:
Solve the card in the deck with an index of 2.
solve 2
1. If user omits INDEX in the command input, the first card in the deck will be solved.
1. User Input:
add q/opcode for R format instructions a/000000 t/CS2100 t/MIPS h/Zeros
solve
2. Successful Output:
i. Result box displays:
Solved Question 1: opcode for R format instructions Answer: 000000
ii. Solve count of the card gets updated.

Setting Difficulty of Flashcards : set
Setting the difficulty of a flashcard, based on the user.
Format:
set [INDEX] d/DIFFICULTY
Example:
Set the first card as easy
set 1 d/easy
1. If user omits INDEX in the command input, the first card in the deck will be set.
1. User Input:
add q/opcode for R format instructions a/000000 t/CS2100 t/MIPS h/Zeros
set d/easy
2. Successful Output:
i. Result box displays:
Set Difficulty for Question 1 (Difficulty level: EASY)
ii. Due date of the card updated.

Randomly Practise Flashcards : random
Practise a single random Flashcard in the deck.
Format:
random
Examples:
Practise a random card.
random
1. Users can use
r
as the index with commands solve and set for the randomly selected question.2. As of v1.4 Hint does not support random and
r
.
1. User Input:
add q/How do you convert from binary to 1s Complement? a/By inverting all the bits, i.e. 0 to 1 and vice versa t/CS2100 t/Number Systems
add q/What are the 5 stages of MIPS? a/Fetch, Decode, Execute, Memory, Write Back t/CS2100 h/5 stages: IF, ID, EX, MEM, WB
random
2. Successful Output (assuming random chooses the card at index 2):
i. Result box displays:
Practising Question 2 : What are the 5 stages of MIPS?

Clear All Flashcards : clear
Clears all flashcards found in the Deck. Deck is reset back to empty.
Format:
clear
Example:
Delete all flashcards from the deck.
clear
1. This action removes all cards and is irreversible!
1. User Input
add q/How do you convert from binary to 1s Complement? a/By inverting all the bits, i.e. 0 to 1 and vice versa t/CS2100 t/Number Systems
clear
2. Successful Output
i. Result box displays:
Deck has been cleared!

Setting Goals : goal
Set a goal for the current studying session.
Format:
goal NUMBER
Example:
Set a goal of 5 for this session.
goal 5
1. On initialisation of lesSON, the target of the goal will be the size of the deck and the number of cards solved will be 0.
1. User Input:
goal 10
2. Successful Output:
i. Result box displays:
New goal set.
ii. Goal box updated with new target and goal completion status.

Getting Help : help
Seek more details from a link provided leading to the User Guide. Users can also access this function by clicking on the File button located at the top left of the application, and then navigating to the Help tab.
Format:
help
Example:
Open help window.
help
1. User Input:
help
2. Successful Output:
i. Result box displays:
Opened help window.
ii. Popup window with link to User Guide is generated.

Exiting lesSON : exit
Exits and closes the lesSON application.
Format:
exit
Example:
Closes lesSON.
exit
1. User Input:
exit
2. Successful Output:
i. lesSON closes.
Go to Command Summary
Go to Table of Contents
Additional Features
Markdown Syntax
For user who wish to incorporate styling in lesSON, there are 3 font styles currently supported:
- Bold
- Italic
- Underline
Bold
To bold a line of text, wrap text as follows **text**
Example:
Bolding a phrase in the question
edit 1 q/How many bits can a **Half Adder** add up
1. User Input:
add q/What is the **Stage** where calculations are operated? a/ALU
2. Successful Output:
i. Result box displays:
New Card added: Question: What is the Stage where calculations are operated?; Answer: ALU
ii. The corresponding card with the question, due date, solve count and tags is created and added to the deck.
iii.
Stage
will appear bolded in both instances.
Italic
To italicise a line of text, wrap text as follows *text*
Example:
Italicising a phrase in the question
edit 1 q/How many bits can a *Half Adder* add up
1. User Input:
add q/What is the *Stage* where calculations are operated? a/ALU
2. Successful Output:
i. Result box displays:
New Card added: Question: What is the Stage where calculations are operated?; Answer: ALU
ii. The corresponding card with the question, due date, solve count and tags is created and added to the deck.
iii.
Stage
will appear italicised in both instances.
Underline
To underline a line of text, insert <u>
at the beginning of the text,
and end with </u>
at the end of the underlined text.
Example:
Underlining a phrase in the question
edit 1 q/How many bits can a <u>Half Adder</u> add up
1. User Input:
add q/What is the <u>Stage</u> where calculations are operated? a/ALU
2. Successful Output:
i. Result box displays:
New Card added: Question: What is the Stage where calculations are operated?; Answer: ALU
ii. The corresponding card with the question, due date, solve count and tags is created and added to the deck.
iii.
Stage
will appear underlined in both instances.
1. Do not stack Markdown Syntax, e.g.
edit 1 q/<u>**Example Question**</u>
. This may lead to unexpected behavior of text in the display view.2. Do ensure that the phrase intended for styling is wrapped within an open and close syntax of the same type, i.e.
**text**
for bold *text*
for italics and <u>text</u>
for underline.3. Do ensure that there is no empty input between an open and close syntax.
4. In the case when unexpected Markdown format is observed, edit the flashcard again with the without the Markdown syntax/with appropriate syntax.
Importing and Exporting Decks
The import and export functions are meant to be used before and after revision respectively
They are not to be confused as commands input by user, but rather as a method to transfer and import data easily
Users can share their own Decks with others or download their Decks to their own. Both import and export features reside in the File menu.
Export
Users can share their own Deck by clicking on the Export
button. Their own Deck
will be displayed as a JSON file which can be easily copied either through the Copy Data
button provided or other means.
Import
Users can enjoy the Decks of others by clicking on the Import
button. A text field
is displayed for users to paste in the JSON file containing the decks of others. The
app will close upon clicking the Import Data
button. Users will have to rerun the app
to see their new decks.
It is NOT recommended for users to modify data directly as it can cause the app to malfunction.
If you still wish to proceed with modifying the data directly, lesSON would not be held accountable of the risks of such actions.
Frequently Asked Questions (FAQ)
Check version of Java installed
Q: How do I check my version of Java I have installed on my computer?
A: Open up a command prompt and type java -version
and hit Enter.
Shortcut to open the command prompt:
- For Windows: Press Windows + R and enter
cmd
. - For macOS: Press Command + Space and enter
Terminal
.
App not showing
Q: The application is running fine, but I am unable to see the GUI. What should I do?
A: This is a currently known issue with a temporary hotfix. We are working on a solution.
Known Issues
-
Users can create duplicate tags for the same flashcard. We plan to enforce uniqueness of tags for a flashcard in future enhancements. Until then, please do take caution to avoid adding duplicate tags for the same flashcard.
-
The app may not show for users with multiple displays. If you relocate the app to a secondary display and subsequently cease using the secondary display, the app will continue to run but will no longer be visible on your primary display. Closing the app and re-running it will not solve the issue. We are working on a solution but until then, we recommend relocating the app back to your main display before disconnecting your secondary display.
If you encountered any other bugs or errors, do let us know with the relevant details (e.g. screenshots) via our official channels found here.
Contact Us
For any feedback or relevant queries, do contact us via our official channels.
— End of User Guide —