molpopgen / md2Canvas

Examples of canvas questions written in Markdown
5 stars 1 forks source link

Explanation of coupled questions #9

Closed tdstoff closed 1 week ago

tdstoff commented 2 weeks ago

Hi @molpopgen, this repo was what it took for me to understand the workflow of using text2qti with Canvas, particularly for numeric questions. So, thank you!

I'm still trying to grasp how the workflow looks when you couple questions with randomly generated inputs as described at the end of the README. In my case, I'd have absolutely everything I want if I could generate coupled numeric-answer problems with random inputs. I'm able to successfully run the makefile you include, i.e.

cd quizzes
make -f Makefile.quiztemplate

and as a result I get the three files, quiztemplate1.zip, quiztemplate2.zip, and quiztemplate3.zip. After you've generated these three .zip files, what is your next step? Can these somehow be used to form a single uploaded quiz on Canvas?

molpopgen commented 2 weeks ago

Hi @tdstoff ,

From the text2qti docs, each markdown file, and hence each zip, is its own quiz. My next step is to upload them to my course and configure their settings (numbers of retries allowed, etc.) using our institutional interface.

In the examples found in this repo, some/all of the markdown files contain multiple questions. To have a quiz with multiple options for a question, you use the GROUP syntax.

To my knowledge, you cannot merge the .zip files -- asking about that would be a good question for text2qti.

When I want to work with 1 markdown file == 1 question, I use R exams, where this setup is assumed. But that tool has its own quirks....

The pairing at the end of the README is a hack -- the Python code for the first group simply generates the common data as global variables for reuse and then defines 2 questions while also re-calculating the answers from the common variables. I should double check that these still work...

molpopgen commented 2 weeks ago

To follow up:

molpopgen commented 2 weeks ago

After looking back at my example, I think what you are getting at is how to assign one randomized quiz simply to a large class? I'm afraid that the method outlined here requires manual intervention, assigning version 1 to 1/3 the class, etc., which causes downstream grade book havoc.

I'd have to think harder about how to have a SINGLE zip output containing different variants of coupled questions. I haven't thought through it because I've avoided doing it so far.

tdstoff commented 2 weeks ago

Yes, that is what I was getting at. If I have 15 students in a class, I see how I could assign the quiz in quiztemplate1.zip to the first five, quiztemplate2.zip to the next five, etc. Then, the data that the first five receive for their questions is at least "random" in the sense that it's different from the other two-thirds of the class.

My goal, though, would be to combine each of these versions into a single zip output and therefore one quiz. Using the GROUP, END_GROUP syntax gets really close. It would be enough if somehow the numeric Python data from one problem could carry over to the next. I haven't got a good enough grasp of the internals of text2qti to know whether that's possible though.

molpopgen commented 2 weeks ago

A major part of the problem here is actually with Canvas. Last I looked, Canvas does not support follow-up questions. (Hence the statement in the README here to that effect.)

Ultimately, text2qti outputs the blob of XML, etc., that makes up the guts of a Canvas evaluation. I suppose that you could try to merge those outputs, but I would worry that you don't end up with a valid evaluation at the end.

Yesterday, I tried to do something where I precalculate a lot of possible answers and output them as numpy array files. My idea was to repeat question 1 twice in the first group, question 2 twice in the second group, etc., and read from these files. Even though the execution is in top-to-bottom order, the association of questions between the two groups is still a sample from a multinomial distribution, thus uncoupling them.

molpopgen commented 1 week ago

I'm going to close this because it is not clear that there is anything that can be done? One possibility that comes to mind is to simply remove the couple questions example from the repo. (It exists largely as a mental placeholder for myself, should I ever decide to revisit the idea.)

@tdstoff -- feel free to weigh in/reopen if necessary.

tdstoff commented 1 week ago

Agreed, I see now how this appears to be an unworkable issue on the Canvas end.