Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 27, 2013
Last Modified: January 28, 2025 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements the Counting Span Test, a measure of working memory by Case et al (1982). The counting and recall procedures implemented in this script collect written/keyboard input.
Case, R., Kurland, M. D., & Goldberg, J. (1982). Operational efficiency and the growth of short-term memory span. Journal of Experimental Child Psychology, 33, 386-404.
10 minutes
Participants are presented cards with green and yellow dots and are asked to count the number of green dots on each card and press the corresponding keyboard key. After a certain amount of cards (starting with a span size of 1 and going up to 9), participants are asked to remember the number of dots they counted for each card, starting with the first card and going in order. The responses are typed into a free recall box.
a) span sizes tested: 1-9
b) repetitions of span size: 3 (in a row)
=> move on to next span size if the sums of at least 1 of the 3 sets of a particular span size were recalled correctly
c) cards and set sizes were presented in a fixed ascending order to each participant
d) ranges of target dots: 3-9 targets (=green dots) on each screen (Cowan et al, 2003),
no repetitions of the same sum in a set (reset on level 8),
3-9 distractors on each screen (=yellow dots); varied independently from targets.
e) Experiment runs 1 practice block followed by span1, span2...span9 (blocks are skipped if participants don't
recall one of 3 sets for a given span correctly)
TRIAL SEQUENCE
- Trial.start_setN: screen announcing a new set for span N
- Trial.setN: first card is presented: only correct response (keyboard numbers) allows participants to move onto the next trial;
errors receive errormessage (incorrect response is noted in datafile) but participant has to correct response before moving on
=> loops until all cards for the current span size and set have been presented
- Openended.recallN: recall screen appears for the current set after a predetermined posttrialpause (editable value)
Participant is asked to enter the target dot counts in sequence
- Trial.evaluationN: determines whether sum recall of the current set was correct.
Evaluation depends on whether a lenient or a conservative strategy should be used (can be set under Editable Values -> parameters.spanEvaluation):
Lenient (Case et al, 1982, p. 397): evaluation checks that the first recalled screen is NOT equal to the last one seen
but otherwise the order of the recalled sum is not important. If all the sums are recalled correctly (regardless of order), then
the set recall is evaluated to be correct.
Conservative: the order of the recalled sums is important and should equal the order of the presented sums. If the order and all the sums
are recalled correctly, the set recall is evaluated to be correct.
PRACTICE
• Researchers can decide whether to run practice trials with a span size of 1 (default) or 2 under EDITABLE CODE -> Editable Values -> parameters.practiceN
• Participants get practice with the chosen span size as often as it takes to obtain correct recall performance once (after using up 4 cards,
the cards get reused)
- practice provides recall performance feedback
- practice provides a reminder to use keyboard keys for sum input
ADDING LEVELS OF N
This script provides instructions about how to add levels of N tested. Look for instructions at the very end of this script.
The cards that are supplied with this script can be easily exchanged under EDITABLE CODE -> Editable Stimuli
Target dots (green) and distractor dots (yellow) were generated independently by a random generator
(neither target sum nor distractor sum were allowed to repeat in a given set). An approximate random arrangement
of targets and distractors on the cards was attempted.
Instructions can be easily edited under section Editable Instructions
File Name: countingSpantest_keyboardinput_summary*.iqdat
| Name | Description |
|---|---|
| inquisit.version | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| computer.touch | 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities |
| computer.hasKeyboard | 0 = no external keyboard detected; 1 = external keyboard detected |
| startDate | Date the session was run |
| startTime | Time the session was run |
| subjectId | Participant ID |
| groupId | Group number |
| sessionId | Session number |
| elapsedTime | Session duration in ms |
| completed | 0 = Test was not completed 1 = Test was completed |
| spanEvaluation | 1 = lenient: as long as the first sum recalled is not the last sum counted, the order of the recalled sums is not important (see Case et al (1982), p.397) 2 = conservative: the order of the recalled sums needs to be in the correct order |
| highestSpan | Finds the highest span level at which participant correctly recalled 2 sets used to determine final counting span in trial.countingSpan |
| countingSpan | Contains the final countingSpan |
| correctCounts | A summary variable that stores the correct counts for all tested levels Example: ["3","3","3","2","2","1","0"] => level1: 3 correct; level2: 3 correct .....=> level7: 0 correct (testing stopped) |
| recallSummary | A summary variable in JSON style that stores the entire recall history |
File Name: countingSpantest_keyboardinput_raw*.iqdat
| Name | Description |
|---|---|
| build | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| computer.touch | 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities |
| computer.hasKeyboard | 0 = no external keyboard detected; 1 = external keyboard detected |
| date | Date the session was run |
| time | Time the session was run |
| subject | Participant ID |
| group | Group number |
| session | Session number |
| spanEvaluation | 1 = lenient: as long as the first sum recalled is not the last sum counted, the order of the recalled sums is not important (see Case et al (1982), p.397) 2 = conservative: the order of the recalled sums needs to be in the correct order |
| blockcode | The name the current block (built-in Inquisit variable) |
| blocknum | The number of the current block (built-in Inquisit variable) |
| trialcode | The name of the currently recorded trial (built-in Inquisit variable) |
| trialnum | The number of the currently recorded trial (built-in Inquisit variable) trialnum is a built-in Inquisit variable; it counts all trials run even those that do not store data to the data file. |
| phase | "practice" vs. "test" |
| span | Contains the span size of the current set |
| image | Contains the currently presented dot image |
| set | Counts the number of sets run for each span size |
| targetSeq | Stores the target sequence |
| cardNumber | Count of cards presented within a set |
| targetCount | Number of target dots on the currently presented card |
| response | The participant's response for the currently recorded trial Span Trials: records the scancode of the response button pressed scancode 2 => '1' was entered scancode 3 => '2' was entered ... scancode 10 => '9' was entered Recall Trials: records the entered number |
| responseText | Scancode translation into actual button pressed |
| correct | The correctness of the response for the currently recorded trial (1=correct; 0 = otherwise) |
| latency | The response latency (in ms) of the currently recorded trial; measured from onset of trial |
| recalledSeq | Stores the recalled sequence |
| correctCounts | A summary variable that stores the correct counts for all tested levels Example: ["3","3","3","2","2","1","0"] => level1: 3 correct; level2: 3 correct .....=> level7: 0 correct (testing stopped) |
| sumCorrectLevel | Tracks the number of correct recall responses for the current level |
| recallSummary | A summary variable in JSON style that stores the entire recall history |
| highestSpan | Finds the highest span level at which participant correctly recalled 2 sets used to determine final counting span in trial.countingSpan |
| countingSpan | Contains the final countingSpan |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Design Parameters |
||
| spanEvaluation | 1 = lenient: as long as the first sum recalled is not the last sum counted, the order of the recalled sums is not important (see Case et al (1982), p.397) - default the lenient evaluation breaks down for spans > 5 (this is due to the fact that the cards don't repeat digits until all digits from 3-9 have been used once) 2 = conservative: the order of the recalled sums needs to be in the correct order | 2 |
| practiceN | Can be set to 1: practice is done with span 1; or 2: practice is done with span 2 | 1 |
| maxNumberOfRoundsPerLevel | This stores the maximum number of rounds run per level the selection of actual spans to be tested is controlled by list.nextSpan Notes - this number should not be larger than 3 - check list.nextSpan/list.setsPerSpan to ensure that each level is represented the adequate number of times | 3 |
Sizing Parameters |
||
| cardWidth | Sizes in proportion of canvas size | 50% |
| cardHeight | 100% | |
Timing Parameters |
||
| posttrialPause | Sets the pause after each card presentation in ms | 500 |