ForgSpace3 Specs
OVERVIEW
This is a one-session experiment in which subjects learn
(and are later tested on) trivia facts.
The program displays a trivia fact, and they try to learn it. Sometimes they are tested by being asked a
question and typing the answer. In a
study, they see the fact for 8 seconds.
In a test, they see the question and the computer gives them 8 seconds
to type in the answer, with a warning after five seconds that they must finish
up typing. After 8 seconds, it cuts out
whether they are done or not, and goes on to the next event (study or test).
There will be 240 trials in this experiment. It is a mixture of studies and tests, with different items interleaved with each other. At any given point the subject will have studied some items and perhaps been tested on some other items.
Every item (we call a fact-answer pair an item) will be presented either once or twice (we call this Study1 or Study1 AND Study2) and then tested once (Test). The key variable is the number of trials separating Study1 and Study2 for a given item, and separating Study2 and Test for that item. The interval between Study1 and Study2 is called the intertrial interval (ITI) and the time between Study2 and Test is called the retention interval (RI).
Since there are 240 trials and each item is presented three times, the experiment will use about 80 items. However, it isn’t exactly that, because there is no way to use every trial. As you will see, scheduling trials is like doing a jigsaw puzzle where not all the pieces will fit. When you have scheduled all the trials you can schedule, you will fill in the remaining trials with “fillers” (face-name combinations which will appear only once in the study condition, and never be tested).
CONDITIONS
Each item is randomly allocated to one of 12 conditions. This determines the ITI and the RI as follows:
1 2 2
2 2 6
3 3 18
4 6 2
5 6 6
6 6 18
7 18 2
8 18 6
9 18 18
10 0 2
11 0 6
12 0 18
Very rough pseudocode for how program should work:
You will want to schedule all the trials at the beginning of the runtime before you start presenting anything. You can write the code to do the scheduling even now. I would suggest setting up a data structure Trials[1..ntrials] which has things like Trials.cond = condition for that trial, Trials.scheduled = true iff you have scheduled what is to happen on that trial, Trials.Event = either study or test; etc.
First randomize a list of 125 items (face-word pairs). You don’t change the pairing of faces and names – just shuffle the list.
While List_Not_Full do begin {list_not_full is a Boolean that will become false when we have scheduled all the items we can}
Take the vector P = (1, …, 9) and randomize it
For j = 1 to 9
Next_Item_Number = Next_Item_Number + 1
Assign Item (Next_Item_Number) to condition P(j)
Start_Point = pick randomly from (Beginning OR End)
Beginning
at Start_Point (either the beginning of the list, or the end of the list),
search through the Trials looking for where you can insert this item. Suppose condition for that item is 4. Based on the table above, you are looking
for the first x, y and z you encounter such that y-x = 9 and z-y=3 and
Trials[x] is not scheduled yet, Trials[y] is not scheduled yet, and
If you go all the way through the j-loop and cannot assign anything at all, then mark List_Not_Full = false.
When you’re all done with this, you will still have empty slots – places where Trial(n).scheduled = false. Find all of these and assign them to involve study of the next items.