Introduction

Before reading this, you really should first check out the regular Corsi task.

The Corsi task is a test of your working memory. Here we only focus on the differences between the regular Corsi task and the backward test (the regular Corsi task can be called a forward memory span test, in analogy to the forward digit span test).

The term working memory is here used because the participant needs to actually manipulate the contents of the short-term memory during the recall process. For a review see, for example Diamond, 2012

In both tasks, you need to remember the order in which a number of rectangles highlight. In the backward test, you need to click (or touch) the rectangles in reverse order. That is, you need to start with the one you saw highlighted last.

In the digit span test, there is also a forward and a backward version. Similarly, we have the same for the Corsi test.

The backward version of the Corsi test was, to the best of my knowledge, first used in a study in 1989 (Isaacs & Vargha-Khadem, 1989), and in more detail tested by Kessels and colleagues (2008).

This task was originally not designed as a computer task.

The block span or Corsi span is defined as the longest sequence a participant can correctly repeat. Similarly, we have a backward Corsi span, which is the longest sequence in the backward Corsi test.
The normal (average) score is around 6. The highest possible block span in this task is 9. In principle, there might be people who can do better, but that will be quite rare.

About this implementation

  • In this implementation, we start with a sequence of 2 blocks

  • Once the sequence has been shown, you hear the word "go" (if you have your speakers on)

  • You need to click with the mouse the blocks in the reverse order as shown before

  • When you are done, you click the green block "done"

  • You get feedback (smiley face means you did it correct, or frowny face if you made a mistake)

  • If you do it correctly, you go the the next higher number of blocks

  • If you do it wrong, you get once more chance. If you do it then wrong again, you get your score (the backward Corsi block span)

Run the demo

In this example, you will carry out the backward Corsi task. You will see further instructions. You need a mouse and ideally you would have sound speakers (because after the sequence is shown, a voice will say "go"). But even without sound, it is fairly obvious when the sequence ends and when you need to start.

Data output file

You do not need this information, unless you want to understand the output data file. You can ignore this if you just want to find out your own score. This is only necessary if you want to carry out the experiment with multiple participants.
In PsyToolkit, the data output file is simply a textfile. The save line of the PsyToolkit experiment script determines what is being saved in the data output file. Typically, for each experimental trial, you would have exactly one line in your text file, and each number/word on that line gives you the information you need for your data analysis, such as the condition, response speed, and whether an error was made.

Meaning of the columns in the output datafile. You need this information for your data analysis.

Colum Meaning

1

The highest Corsi backward span so far

2

The number of items in the current trial to be remembered (starting with 2)

3

Status of current trial (1=correct, 0=wrong)

4

The table row from the table (this experiment comes with 500 random block arrangements and sequences)

PsyToolkit code

Click to expand the PsyToolkit script code (part of zip file below)
options
  mouse on
  origin topleft
  set &Count 2 # starts with showing two blocks
  
bitmaps
  titlescreen
  revinstructions
  yellow
  purple
  done
  ticked
  correct
  wrong
  ready1
  ready2
  ready3
  
fonts
  arial 30

sounds
  gosignal go.mp3

part delay
  delay 300
  clear -1
  delay 300

table revcorsidata
  include revcorsitable.txt

task revcorsi
  table revcorsidata
  set $counter 0
  set $b1 0
  set $b2 0
  set $b3 0
  set $b4 0
  set $b5 0
  set $b6 0
  set $b7 0
  set $b8 0
  set $b9 0
  # mouse off so that people cannot mouse during sequence presentation
  mouse off 
  # show nine blocks
  draw off
    show bitmap purple @1 @2
    show bitmap purple @3 @4
    show bitmap purple @5 @6
    show bitmap purple @7 @8
    show bitmap purple @9 @10
    show bitmap purple @11 @12
    show bitmap purple @13 @14
    show bitmap purple @15 @16
    show bitmap purple @17 @18
    show bitmap done 750 550
  draw on
  # show sequence 1
  show bitmap yellow @19 @20
  part delay
  show bitmap yellow @21 @22
  part delay
  if &Count > 2
    show bitmap yellow @23 @24
    part delay
  fi
  if &Count > 3
    show bitmap yellow @25 @26
    part delay
  fi
  if &Count > 4
    show bitmap yellow @27 @28
    part delay
  fi
  if &Count > 5
    show bitmap yellow @29 @30
    part delay
  fi
  if &Count > 6
    show bitmap yellow @31 @32
    part delay
  fi
  if &Count > 7
    show bitmap yellow @33 @34
    part delay
  fi
  if &Count > 8
    show bitmap yellow @35 @36
    part delay
  fi
  # go!
  sound gosignal
  mouse show  # now show cursor again
  delay 100   # not really necessary, but gives a bit of time between sound and people's response
  # read in sequence
  while $x != 10
    readmouse l 1 10000 range 1 10
    set $myMouseX MOUSE_X
    set $myMouseY MOUSE_Y
    set $x under $myMouseX $myMouseY up range 1 10
    if $x != 10
      set $counter increase
    fi
    if $counter == 1 && $x != 10
      set $b1 $x
    fi
    if $counter == 2 && $x != 10 
      set $b2 $x
    fi
    if $counter == 3 && $x != 10
      set $b3 $x
    fi
    if $counter == 4 && $x != 10
      set $b4 $x
    fi
    if $counter == 5 && $x != 10
      set $b5 $x
    fi
    if $counter == 6 && $x != 10
      set $b6 $x
    fi
    if $counter == 7 && $x != 10
      set $b7 $x
    fi
    if $counter == 8 && $x != 10
      set $b8 $x 
    fi
    if $counter == 9 && $x != 10
      set $b9 $x
    fi
    show bitmap ticked $myMouseX $myMouseY ## it has to be here, check while-end javascript coding
  while-end
  set $x 0
  # now check if sequence is correct
  set $SeqCorrect 0 # this means wrong
  if $counter == &Count
    if &Count == 2 && $b2 == @37 && $b1 == @38
      set $SeqCorrect 1
    fi
    if &Count == 3 && $b3 == @37 && $b2 == @38 && $b1 == @39
      set $SeqCorrect 1
    fi
    if &Count == 4 && $b4 == @37 && $b3 == @38 && $b2 == @39 && $b1 == @40
      set $SeqCorrect 1
    fi
    if &Count == 5 && $b5 == @37 && $b4 == @38 && $b3 == @39 && $b2 == @40 && $b1 == @41
      set $SeqCorrect 1
    fi
    if &Count == 6 && $b6 == @37 && $b5 == @38 && $b4 == @39 && $b3 == @40 && $b2 == @41 && $b1 == @42
      set $SeqCorrect 1
    fi
    if &Count == 7 && $b7 == @37 && $b6 == @38 && $b5 == @39 && $b4 == @40 && $b3 == @41 && $b2 == @42 && $b1 == @43
      set $SeqCorrect 1
    fi
    if &Count == 8 && $b8 == @37 && $b7 == @38 && $b6 == @39 && $b5 == @40 && $b4 == @41 && $b3 == @42 && $b2 == @43 && $b1 == @44
      set $SeqCorrect 1
    fi
    if &Count == 9 && $b9 == @37 && $b8 == @38 && $b7 == @39 && $b6 == @40 && $b5 == @41 && $b4 == @42 && $b3 == @43 && $b2 == @44 && $b1 == @45
      set $SeqCorrect 1
    fi
  fi 
  ## feedback
  if $SeqCorrect == 1
    show bitmap correct 750 550
  fi
  if $SeqCorrect == 0
    show bitmap wrong 750 550
  fi
  delay 1000
  clear -1
  delay 1000
  ## now goto next seq if correct twice
  set $currentcount &Count
  if $SeqCorrect == 1
    set &corsispan &Count ## the best score so far
    set &Count increase
    set &ErrorCount 0    
  fi
  ## count errors in a row
  if $SeqCorrect == 0
    set &ErrorCount increase
  fi
  ## save data
  save &corsispan $currentcount $SeqCorrect TABLEROW
  ## if two errors in a row or if all are correctly clicked, end of task
  if &ErrorCount == 2 || &Count == 10
    end tasklist
  fi

block test
  message titlescreen
  message revinstructions
  bitmap ready3
  delay 1000
  bitmap ready2
  delay 1000  
  bitmap ready1
  delay 1000  
  tasklist
    revcorsi 100 all_before_repeat
  end
  feedback
    text 0 400 &corsispan ; prefix "Your Corsi backward span is " ; postfix " items."
    text 0 500 "Press space bar to continue"
  end

Download

If you have a PsyToolkit account, you can upload the zipfile directly to your PsyToolkit account. Watch a video on how to do that. If you want to upload the zipfile into your PsyToolkit account, make sure the file is not automatically uncompressed (some browsers, especially Mac Safari, by default uncompress zip files). Read here how to easily deal with this.

Further reading

  • Corsi, P.M. (1972). Human memory and the medial temporal region of the brain. Doctoral Thesis at McGill University (Canada). Download from here. (in the search box, type "Corsi")

  • Isaacs, E. B. and Vargha‐Khadem, F. (1989), Differential course of development of spatial and verbal memory span: A normative study. British Journal of Developmental Psychology, 7: 377-380. Link here

  • Kessels, R. P. C., van den Berg, E., Ruis, C., & Brands, A. M. A. (2008). The Backward Span of the Corsi Block-Tapping Task and Its Association With the WAIS-III Digit Span. Assessment, 15(4), 426–434. Link here