StanfordHCI / bang

💥 Helping people meet for the first time, more than once 💥
MIT License
2 stars 1 forks source link

Randomly give pairs of rounds different versions of the same case #456

Closed xehu closed 4 years ago

xehu commented 4 years ago

As described in section 3 of issue #455 (https://github.com/StanfordHCI/bang/issues/455), I would like to have the ability to pair rounds together within an experiment.

This Issue describes special properties held by pairs of rounds.

1. High level description

In each round, participants will be given something to read.

Imagine that we have two different stories (ex, Case 1 and Case 2), but many different versions of the same story (Version 1, Version 2, Version 3, etc.)

Basically, if two rounds have been randomly selected to be paired together, they should present the users different versions of the same story. If two rounds have not been chosen to be paired together, they should have different stories. Which story and which version of said story that the user receives should be totally random.

This Issue requests that there is a way to input the stories (for the purpose of this experiment, the cases) and the different versions in a way that allows the reading material to be randomized.

2. Filesystem and Round logic

This feature would occur when you run the "reading period" of a round.

Imagine that we have 2 cases (Case 1, Case 2) and 2 versions of each case (Version 1, Version 2). Cases come in two distinct documents. Thus, our filesystem might look something like this:

Case 1
- case1-version1-part1.md
- case1-version1-part2.md
- case1-version2-part1.md
- case1-version2-part2.md

Case 2
- case2-version1-part1.md
- case2-version1-part2.md
- case2-version2-part1.md
- case2-version2-part2.md

In each round, the logic would be like this pseudocode:

For each round:
    n = random(1,2) 
   case = nth case 

    for (each round in pair):
        version = random (1,2)
        if version is not seen before: 
            part1 = part 1 of the case and version we chose
            part2 = part 2 of the case and version we chose

        if(we are in reading period 1):
            show part1 to the user

        if(we are in reading period 2):
            show part2 to the user

        add version to set of seen versions

As you can see, since the case is selected randomly outside of the for loop, for each round in the pair, we keep the same case, but will use different versions (we choose the versions randomly, but skip over the ones we have seen before.

3. Requested implementation

I would like to request the ability to:

xehu commented 4 years ago

Deadline that we agreed on in the meeting: Monday, 12/2

dtatarenkov commented 4 years ago

in dev