i have been asked to put together a Quiz that will automatically correct/analyse Math mistakes made by students in the evaluation part of an Experiment. The use case is: A Student does an experiment, collects the Data usually in form of one or more tables and calculates whatever the experiment tells him to.
In general this is working alright, the only issue i am facing is, that for every question i create the student needs to re-input all the data, because i am not able to retreive variables from other questions inside the quiz.
My ideas to solve this issue are either:
-Finding a way to pass variables between questions
-Using Maximas save feature, hoping Stack allows for this on the universities servers and name it something random, because i can assure that the random seed stays the same the whole quiz, so i will always be able to get the right name without needing to transfer anything between questions. Not doing this could lead to problems if two students do the test at the same time
-Letting students retype their inputs every time i need them.
-Doing everything in one question. This is not really an option because i had severe performance issues when trying this. Evaluating 8 nodes took more than 5 minutes, which is unacceptable. I am running moodle on my computer locally to test it, so that issue could go away when deploying it to a real server.
-Cutting the problem up, such that data input is minimized and only few values have to be carried over by hand.
I would be happy if any of you could tell me how you would or have done this. Attached you will find two examples of my questions to clarify any questions. The second question should display the value of vNaOH1 instead of a cursive "vNaOH1". If you think another plugin would make it easier or faster to do i would also be fond to hear about it! Sadly i will not be able to do anything more low level than the user interface, which would otherwise also be an acceptable solution.
Thanks in Advance!
My colleague, Matti Harjula, one of the other lead developers of STACK is working on a branch called "stateful". It is very likely that this will provide exactly the kind of functionality you are asking for. I'll ask him to comment. This is a major project, and requires some significant further work.
Indeed Stateful could do pretty much what you are envisioning. However, Stateful is not yet released and is not expected to be released until late this year.
Essentially, Stateful is pretty much just a collection of STACK questions glued together so that a questions PRT may decide that next we display some other other questions and set parameters of that question (or of the set of questions). So basically that first idea "Finding a way to pass variables between questions". There has been some thought about passing parameters between Stateful questions and not just between the questions that a given Stateful question has been made of, but that is still far far away. Stateful, does not suffer the performance penalty you would suffer from having all the questions of that set rendered at once, it only renders/evaluates stuff currently visible.
Stateful is a separate question type from STACK as being able to store variables and pass them between the set of question requires very different question behaviour than what STACK can support, but it still uses most of STACKs logic.
In Stateful terms what you want is to have an entry scene (questions in the set are scenes) that receives the data and validates that the data is of valid form. It would then transition it or condensed values calculated from it to the next scene, maybe selected from multiple possible ones where you would then ask questions based on the data. You could then have multiple such scenes that could follow that one, but they would need to be within the same question until true sharing of values between questions becomes possible, if you have multiple separate questions in there you would then need to also define ways to travel between them, unless you can render them onto a single page/scene.
The problem of inputting data in one question and requiring it in another is problematic in the sense that you cannot even display the latter questions before the data has been given. This requires that the question can react to missing data or that the VLE can conditionally display the latter questions based on the data questions input. In Stateful you can handle that by requiring the data in the first scene and blocking transition to others before the data is good enough.
Saving data in Maxima is not something we want anyone to do, especially as then one would need to have shared storage between clusterised Maxima installations.
Thanks for the quick and througout answer!
Sadly waiting so long is not an option, as the system should be running in the next weeks.
I will have to code this myself in another way then, but i will make sure to have a look at it when it is released!
Thanks for putting in the effort so that other people will not have to take this way. Keep up the good work!