Please check out the csxxx wiki for basic PrairieLearn mechanics etc.
Each study will create its own courseInstance
in the PL repo, and
one or more assessments
in that course instance to serve as the
study task(s).
In the examples below, substitute a
name/moniker for your course in place of PROJECT
. Look at the
Remember: it's fine to copy boilerplate files from other
directories, but every PL item has a unique UID (uuid) and you
have to change those. You can generate UUIDs with the shell command uuidgen
.
To avoid lots of merge collisions, it's best to do all of the below on a branch and use that branch for local testing. When ready, merge your branch to the master branch. Please test locally first, because broken content in anyone's changes can cause the whole course to fail to load and thereby endanger others' studies.
In it you'll need a minimal infoCourseInstance.json
, which you can
base on an existing one, but don't forget to change the uuid's.
This is where your question(s) will go, both those used in the study and those used to demo your element, etc.
...where * is whatever your element name is. Note that this is at the "top level" of the course, not inside your course instance.
(Replace STUDY
with a descriptive name of your study, such as
2025-sp-pilot-study
or something like that. Please don't just call
it study
as that is not descriptive.)
This .json file specifies and sequences the PL question(s) in your study
task. Take a look at existing ones in other course instances'
assessments
directories for the relatively straightforward
syntax. Be very careful of punctuation and closing your braces, or
the course won't load in PL.
You can setup the assessment as either a "homework" allowing unlimited attempts per question or an "exam" that gives one chance per question. Here's the documentation for configuring an assessment.
At this point, all of your work should be able to go into either a
question subdirectory, the element subdirectory, or your infoAssessment.json
. If you find
yourself editing files other than those,
please ask us before proceeding, to avoid accidentally damaging
others' projects.
Other students/teams are editing this repo as well, so you will often
need to do a git pull
to update your local copy of the repo before
you can successfully push changes. If everyone respects the above
directory structure, no one's changes should cause conflicts with anyone else's.
Any time the main repo changes, those changes have to be synchronized to PrairieLearn. Sign in to us.prairielearn.com using the SSO option with CalNet (do not use the "sign in with Google" option even with berkeley.edu credentials--it won't work). The course instructors will add you as "TAs" to this course, which gives you the ability to click Sync in the top navbar, then click "Pull from remote git repository". Make sure the sync is error-free.
Remember, you have to do this each time the master branch of the course repo receives changes.
Navigate to your course instance on PrairieLearn and you should see a list of assessments. Follow these instructions to generate a link directly to your study's assessment.
This is the link you will give to participants at the start of the study. They will also have to login with CalNet when they follow the link; after CalNet login, they will be automatically "enrolled" in your "course" and taken straight to the assessment, so don't do this until you "start the clock" for that part of the study.