Stack Calculator
The idea of this project is to create a flexible workflow that allows a student with limited vision and limited motor coordination to succeed in school.
To make the problem tractable, we focused on one math problem for this sprint.
This idea is to provide programming-like tools to the student, who can use them to create lists of numbers to use as a scratchpad.
This is intended to be a voice interface, but may include physical buttons as needed. Our feeling is that physical buttons will be most useful for:
- Initiating a voice command
- Rejecting a voice recognition result
- Confirming a recognition result.
Commands used in the dialog below are:
- Start (name): Start a new named list, and make it the output list
- Insert: Add an item to the current output list
- YES: Confirm a voice recognition result
- NO: Reject a voice recognition result
- Read (name): Read the named list, or the current input list if no name specified
- Iterate (name): Read the named list, or the current input list if no name specified. After each item, listen for an item to be added to the current output list.
- Done: Complete the current step, and make the output list(s) input
Other commands that are like needed include:
- Repeat: Repeat last utterance
- Start (name): Go to the start of the input list and read the first item (this collides with start above - need to rename one of them)
- Next: Go to the next item of the current input list
We also need some affordance to look at the overall problem - to see the starting list and the intermediate lists, both for a teacher to "check the work" and for the student to review if they get distracted and lose track of where they are.
Example dialog
The dialog below is an example of adding three two-digit numbers. The user's input is right-aligned, and the system's responses are left-aligned.
Input list called ‘start’
52, 49, 32
Start tens
Inserting to new list ‘tens’
Iterate
52
50
Inserted 50
YES
49
40
Inserted 60
NO
Trying again. 49
40
Inserted 40
YES
32
30
Inserted 30
YES
BING - End of list
Start ones
Inserting to new list ones
Iterate
52
2
Inserted 2
YES
49
9
Inserted 9
YES
32
2
Inserted 2
YES
BING
Done
Two lists of numbers
Input list ‘tens’ with 50, 40, 30
Input list ‘ones’ with 2, 9, 2
Read tens
List with tens is: 50, 40, 30
Insert 120
Inserted 120
Read ones
List with ones is: 2, 9, 2
Insert 13
Inserted 13
Done
List of numbers 120, 13
Insert 133
Inserted 133
Done
List of numbers 133
Done