By: CS2103T-T12-4 Since: Aug 2019 Licence: -

1. Introduction

KeyboardFlashCards (KFC) is for those who prefer to use a desktop app to study using flashcards. More importantly, it is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, KFC can help you manage your flashcards much more efficiently than traditional GUI apps.

Interested? You should be! KFC is perfect for NUS Computing students. We even have additional features not available with most flashcard managers that we’re sure you’ll love. Enjoy!

Please also note the following icons, which will indicate points of interest throughout this document.

A point of information that you may wish to note
A tip or suggestion
A cautionary word of advice

2. Quick start

  1. Ensure you have Java 11 or above installed in your Computer.

  2. Download the latest build KeyboardFlashCards.jar here.

  3. Copy the file to the folder you want to use as the home folder for your KFC app.

  4. Double-click the file to start the app. The GUI should appear in a few seconds.

    annotatedUi
    Figure 1. Graphical User Interface of KeyboardFlashCards[

3. Features

This section contains the features and their respective commands.

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in add >QUESTION, QUESTION is a parameter. The command format would thus be as such: add q>1+1.

  • Items in square brackets are optional e.g q>QUESTION [c>CATEGORY] can be used as q>1+1 c>math or as q>1+1.

  • Items with ​ after them can be inserted zero or more times e.g. [c>CATEGORY]…​ can be used as   (i.e. 0 times), c>math, c>math c>school etc.

  • Parameters can be in any order e.g. if the command specifies q>QUESTION a>ANSWER, a>ANSWER q>QUESTION is also acceptable.

  • Currently, our application does not support emoji.

3.1. Add new FlashCard: add q>QUESTION a>ANSWER [c>CATEGORY]…​

This command allows to you to add a new FlashCard with question and answer.
add q>What is CS2103T a>Software engineering

You may also include the category for the FlashCard.
add q>What is CS2103T a>Software engineering c>CS2103T

a>, q> and c> are reserved as prefixes, If you want to include these in your question/answer put them in "" or otherwise to differentiate.

To add:

  1. Type add q>What is the use of checksum ? a>To detect "error" and press Enter.

    AddStep1
  2. The result box will display the message: "New FlashCard added: What is the use of checksum ? Answer: To detect "error""

    AddStep2
  3. And you can check the new FlashCard has been added to bottom of the FlashCard list.

    AddStep3
When multiple questions or answers prefixes in one add command, only input from the last appearance will be taken. For example, add q> 1+1 a> 2 q>Hi a>bye KFC will add a FlashCard with the question as Hi and the answer as bye.

3.2. Edit an existing FlashCard: edit INDEX {fields wanted to edit}…​

This command allows you to edit the FlashCard with index corresponding to the display list with 1 or multiple fields e.g: edit 7 c>CS2105

To edit:

  1. Type edit 7 c>CS2105 and press Enter.

    EditStep1
  2. The result box will display the message: "Edited FlashCard: What is the use of checksum ? Answer: To detect "error" Categories: [CS2105]".

    EditStep2
  3. And you can see that the 7th FlashCard has been edited on the FlashCard list.

    EditStep3

3.3. Delete FlashCard: delete INDEX

This command allows you the delete a particular FlashCard with the index show on the FlashCard list. e.g. delete 7

To delete:

  1. Type delete 7 and press Enter.

    DeleteStep1
  2. The result box will show the message: "Deleted FlashCard: What is the use of checksum ? Answer: To detect "error" Categories: [CS2105]"

    DeleteStep2
  3. And you can check the FlashCard list that the FlashCard has been deleted.

    DeleteStep3

3.4. Clear all the FlashCard: clear

This command allows you to delete all the FlashCard in the storage.

To clear:

  1. Type clear and press Enter.

    ClearStep1
  2. The result box will show the message: -"Flash card has been cleared!"_ And you will see that all lists turn empty.

    ClearStep2

3.5. Search for FlashCards: search

The section will show you 3 methods to search for FlashCards. Keywords are case-insensitive.

Current search function does not support fuzzy search, so remove punctuations when adding the FlashCards or include the punctuations for searching

3.5.1. Either the question or the answer matches the keyword(s): "search KEYWORD(S)"

This command allows you to search for FlashCards with the question or answer matching the keyword(s). Multiple keywords are separated by a single space.

To search:

  1. Type search pointer and press Enter.

    SearchStep1
  2. The result box will show message: "2 flash cards listed!" and the FlashCard list will show the matching FlashCards

    SearchStep2

3.5.2. Question matching the keyword(s) only: searchqn KEYWORD(S)

This command allows you to search for FlashCards with the question matching the keyword(s). Multiple keywords are separated by a single space.

to search question:

  1. Type searchqn C and press Enter.

    SearchqStep1
  2. The result box will show message: "2 flash cards listed!" and the FlashCard list will show the matching FlashCards

    SearchqStep2

3.5.3. Answer matching the keyword(s) only: searchans KEYWORD(S)

This command allows you to search for FlashCards with the answer matching the keyword(s). Multiple keywords are separated by a single space.

to search for answer:

  1. Type searchans name and press Enter.

    SearchaStep1
  2. The result box will show message: "1 flash cards listed!" and the FlashCard list will show the matching FlashCards

    SearchaStep2

3.6. List all FlashCards: listall

This command allows you to lists all the FlashCards in the storage.

To listall:

  1. Type listall and press Enter.

    ListAllStep1
  2. The result box will show message: "Listed all Flash Cards".

    ListAllStep2
  3. And the FlashCard list will show all the FlashCards. You can move your mouse to the FlashCards list and scroll up and down to view the FlashCards.

    ListAllStep3

3.7. List of category : list CATEGORY

This command allows you to list all FlashCards under one or multiple categories. Multiple keywords are separated by a single space.

to list category:

  1. Type list CS2105 and press Enter.

    ListCatStep1
  2. The result box will show message: "1 FlashCard is listed!" .

    ListCatStep2
  3. And the FlashCard list is updated.

    ListcatStep3

3.8. Add general Deadline: deadline t>TASK d>DUEDATE

This command adds a general Deadline into a list. The list will be displayed on the right-side pane. Note: DUEDATE has to be in dd/MM/yyyy format.

You can refer to the example below. deadline t>CS2103 Exam d>10/12/2019

deadline entry

After keying in the command, the result box will show the success message. The new Deadline will now be shown at the right-side pane.

deadline entered
Note that Deadline(s) entered will be sorted in ascending order i.e. earliest Deadline on index 1
Deadline(s) can only be after/on the current date. Leap year dates are also taken into account.

3.9. Remove Deadline from list: remove index

Removes a specific Deadline. The list on the right-side pane will no longer have the Deadline.

remove 2

  • Removes the Deadline at the specified INDEX from the list. The index refers to the index number shown in the displayed Deadline list on the right-side pane. The index must be a positive integer 1, 2, 3, …​

When a Deadline of re-test questions is removed, the list of questions will still be stored in the specific date.

3.10. Show monthly calendar with all Deadline(s): calendar

Shows the calendar filled with all deadlines in the month. The calendar will be shown as a new window pop-up.

calendar

The calendar will pop up, seen below.

calendar
The calendar window does not show the specific Deadline, but an overview of all your Deadline(s) for the month ahead.

3.11. Rate Flashcard as "Bad", with Deadline to re-test: bad index

Rates a specific FlashCard as "Bad". It will then be stored as a Deadline in the list on the right-side pane.

bad 2

  • Sets the FlashCard specified at INDEX as 'Bad'. The index refers to the index number shown in the displayed deadline list on the right-side pane. The index must be a positive integer 1, 2, 3, …​

Key the above mentioned example into the command box.

BadFlashcard

The command will add the 2nd FlashCard on the list, "How to declare a pointer in C?" as a "Bad" FlashCard. After which, the result box will show the success message. A new Deadline will now be shown at the right side-bar, 3 days later from the day it was entered.

BadFlashcardAdded
"Bad" rated FlashCard(s) will be added to as a Deadline which is due 3 days later. This is an approximated value that based on the theory of Spaced Repetition, referring to Ebbinghaus Forgetting Curve by Hermann Ebbinghaus who hypothesised this theory in 1985.

3.12. List all "Bad" FlashCards for a specific date listbad d>DATE

List all the "Bad" rated FlashCard(s) from a specific date. The FlashCard questions will be shown.

listbad d>14/11/2019

listbad
The automated test mode for the "Bad" FlashCard is not functional at this point and will be implemented in KFC v2.0.

3.13. Remove a specific "Bad" FlashCard for a specific date removebad d>DATE i>INDEX

You can remove a specific "Bad" rated FlashCard from the list

removebad d>14/11/2019 i>2

You can refer to the example above.

As seen from before, after listing all the "Bad" rated FlashCard(s) for a specific date using listbad d>14/11/2019, you can observe the full list as seen below.

listbad

Afterwards, you can choose to remove as specific "Bad" rated FlashCard from that list. Using the example removebad d>14/11/2019 i>2, you can observe this.

removebad

Once removed, a success message will be shown!

removebadsuccess
Using the remove command to remove a "ToDo: Bad Questions" Deadline does not remove all the "Bad" FlashCard stored for that date.

3.14. Test mode: start

3.14.1. Start command: start [CATEGORY]

This command starts the FlashCard test mode. If no parameter is supplied, the application will test all available FlashCards.

StartEmptyParam

If tag(s) are entered, this command starts the FlashCard test from any specific category. Only relevant FlashCards from the tag(s) will be tested.

StartWithTagParam

After starting the test, you should see the first question.

StartResults

3.14.2. See FlashCard answer: ans

This command allows you to check the answer of the FlashCard question.

ShowAnswerCommand

After entering the ans command, you will see the answer to that FlashCard.

ShowAnswerResults

3.14.3. Rate FlashCard: rate RATING

After seeing the answer, you can enter this command which rates the FlashCard, depending on how well you answered the question i.e. easy, good, hard.

RateCommand

At the same time, the next question will be displayed if available.

RateResults

3.14.4. Skip question: skip

If you would like to manually filter and skip questions, the skip command helps you to skip FlashCards, saving you extra time.

SkipCommand

Similarly to the rate command, skip command fetches the next question if available.

SkipResults

3.14.5. End test: end

You can stop the test any time simply by typing end.

EndCommand

By exiting the test mode, normal commands such as listall and add are re-enabled. The list of FlashCards in the system will be displayed again.

EndResults

3.15. Export FlashCards to a file: export c>CATEGORY p>FILE_PATH

You can use this command to export all your FlashCards in a particular category, to an external file. This may be useful if you wish to publish your FlashCards somewhere, print them out, or share them with a friend. The file will be located at the file path that you specify, and the format of the file will be inferred from the extension. We currently support exporting to JSON ('.json') and document ('.docx') file formats.
Example: export c>CS2105 p>C:\Documents\cs2105.json

Suppose you have a category named CS2105, and you wanted to export the FlashCards in that category to an external file (so you can share them with your friend). Here’s how you would go about this:

  1. Type the example command given above into the command box (export c>CS2105 p>C:\Documents\cs2105.json), as shown below.

    ExportDemo1
  2. Press Enter to execute the command. The results box will display a success message similar to the one shown in the screenshot below.

    ExportDemo2
  3. Using your file explorer, navigate to the directory that you specified in the command (in this case, it would be C:\Documents). Sure enough, your exported file is there!

    ExportDemo3

Please refer to the table below for a summary of the file formats that we support exporting to:

Format

Document ('.docx')

JSON ('.json')

Intended purpose

For use as a cheat sheet

For sharing

What is copied from each FlashCard

Question and answer only

Question, answer, and the category which you specified in the export command

If you’re on a Unix-based operating system (e.g. Mac OS, Linux), any absolute paths that you specify will have to begin from the root directory /, not the user directory ~. For example, if you were on a Mac and your username was "jason", and you wanted to export to a document file on your desktop, the file path would be /Users/jason/Desktop/document.docx.
Your file paths must be comprised solely of alphanumeric characters, spaces, and the following characters: ~\/-_!:[]()
It must also end in one of the supported file extensions - either .json or .docx.

Do note that some directories may be protected by your operating system (C:\ on Windows, / on Unix). You may not be allowed to save files to these directories.

Please take care not to modify exported JSON files - your friends might have trouble importing them otherwise.

3.16. Import FlashCards from a JSON file: import p>FILE_PATH

You can use this command to import FlashCards from a file that you or someone else had exported to earlier. We currently only support importing from JSON ('.json') files.
Example: import p>C:\Downloads\cs2105.json

Suppose that your friend has kindly exported some of his FlashCards for you to use. You have download the JSON file that he sent you, and it’s currently located at the following path: C:\Downloads\cs2105.json. Your next step is to get those FlashCards into your copy of KFC. Here’s how you’d go about this:

  1. Type the example command given above into the command box (import p>C:\Downloads\cs2105.json), as shown below.

    ImportDemo1
  2. Press Enter to execute the command. The results box will display a success message similar to the one shown in the screenshot below. Furthermore, the category list on the left will now display the category of the newly-imported FlashCards!

    ImportDemo2
Duplicate FlashCards will not be imported. KFC will notify you if it detects duplicate FlashCards in the provided file.

3.17. Get the full list of commands: help

This command allows you to view all the commands available in the application.
help

  1. Type help and press Enter to execute it.

    HelpCommand1
  2. The result box will display the message:

    Opened help window.

    HelpCommandBox1
  3. A help window with all the commands will also be displayed:

    HelpWindow1

3.18. View overall statistics: stats

This command allows you to view three different type of statistics.
stats

To view statistics:

  1. Type stats and press Enter.

    StatsCommand1
  2. The result box will display the message:

    Statistics displayed

    StatsCommandBox1
  3. A window will appear, displaying 3 charts:

    StatsWindow1

    Starting from the top, the first chart displays the total number of FlashCards rated as good, hard and easy. The second chart displays the total number of FlashCards rated as good, hard and easy that are completed during test mode. The last chart displays your performance (in percentage) for all tests completed. Performance is determined by the ratio of FlashCards rated as good and easy to FlashCards rated as hard.

    Note that the second and third chart will be empty if the stats command is executed before running at least one test, since both of these charts are dependent on the test mode. Furthermore, the statistics displayed on these two charts will reset when the application is closed.

3.19. Change color themes: theme THEMENAME

This command allows you to change the theme of the app.

Follow are the current available themes

dark

light

pink

blue

hacker

nus

To change theme:

  1. Type "theme hacker" and press Enter

    ThemeStep1
  2. The result box will show the message: "Theme changed to hackerTheme" and the theme will be changed.

    ThemeStep2

3.20. Saving the data

FlashCard data are saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

3.21. Exit: exit

This command allows you to exit the application.

To exit:

  1. Type exit and press Enter.

  2. The application window will close by itself.

4. FAQ

Q: How will the program know the correct answer to the questions?
A: You have to key in the answer manually when you create the question - it’s similar to a real set of FlashCards.

Q: How does the reminder system work?
A: You select a category and a date, and the program will remind you to revise that category when the date comes.

Q: How will the program know if my answer is good or bad?
A: It doesn’t know - you have to decide for yourself whether you are satisfied with your answer.

Q: Will I be able to resume the test from where I left off after I have stopped?
A: No. The program does not support that.

Q: Can I change the category of a FlashCard?
A: Yes, it will be one of the fields you can change when you edit the FlashCard. Do note that after you change the category, you will have to refer to it using its new category and ID.

Q: Can I use my mouse to interact with the user interface?
A: Yes, but only to a very small extent, like closing the window. This application is targeted primarily at keyboard users.

Q: What if I forget the format of a command’s arguments?
A: Don’t worry! Just try your best. If the format you’ve provided is wrong, you will be prompted with the correct format.

5. Command summary

  • Add new FlashCard - add q>QUESTION a>ANSWER [c>CATEGORY]…​
    e.g. add q>1+1 a>2

  • Show answer during test mode - ans

  • Set a FlashCard as bad - bad INDEX
    e.g. bad 2

  • Show Calendar of all Deadline(s) - calendar

  • Clear all the FlashCard - clear

  • Add a new Deadline - deadline t>TASK d>DUE DATE
    e.g. deadline t>Math Test d>01/10/2020

  • Delete an existing FlashCard - delete INDEX
    e.g. delete 10

  • Edit an existing FlashCard - edit INDEX {fields to edit}…​
    e.g. edit 2 c>CS2103

  • End FlashCard test - end

  • Export all flashcards under a specific category, to a specific filepath - export c>CATEGORY p>FILE_PATH
    e.g. export c>CS2105 p>C:\Users\User\Documents\cheat_sheet.docx

  • Get full list of commands - help

  • Import FlashCard(s) from a JSON file - import p>FILE_PATH
    e.g. import p>C:\Users\User\Documents\flashcards.json

  • List all flashcards under a specific category - list CATEGORY
    e.g. list Math

  • List all FlashCard(s) - listall

  • List all "Bad" FlashCard(s) - listbad

  • Rate FlashCard during test mode - rate RATING e.g. rate easy

  • Remove Deadline from list - remove INDEX
    e.g. remove 2

  • Remove a "Bad" rated FlashCard from list - removebad INDEX
    e.g. removebad 2

  • Search for FlashCard(s) - search

    • search KEYWORD(S) e.g search c

    • searchans KEYWORD(S) e.g searchans name

    • searchqn KEYWORD(S) e.g searchqn pointer

  • Skip FlashCard during test mode - skip

  • Start a certain topic of FlashCard(s) - start CATEGORY
    e.g. start Mathematics

  • View overall statistics - stats

  • Change theme - theme THEMENAME
    e.g. theme dark