Release of STACK 3.4

Release of STACK 3.4

by Christopher Sangwin -
Number of replies: 5
Picture of Particularly helpful Moodlers Picture of Plugin developers

Dear all,

It gives me great pleasure to announce that we have tagged a new release of STACK:  STACK 3.4.

STACK is an optional question type for the Moodle quiz.  This question type uses computer algebra to randomly generate mathematical questions and assess algebraic expressions which students type in as their answers.  A demonstration server is available at http://stack.bham.ac.uk/moodle  (Note, this is not running the latest version as I have recently moved to Edinburgh and am in the process of setting up a new demonstration site here.)

The changes in this version are all minor improvements, and bug fixes.  There are no substantial changes to features or behaviour which should significantly affect existing users.  We have tagged this release now to enable people relying on managed Moodle environments to obtain the plugin from the catalogue.

This has been a very busy and exciting year for the STACK project.  Version 3 is rather well tested now and is increasingly widely used in a variety of languages, teaching situations and in places on a very large scale indeed.  

As lead developer my focus this year has been on supporting users and teachers, rather than on implementing a raft of new features.  This includes a number of large projects involving collaborations between many universities.  (STACK has also successfully been ported to another VLE: ILIAS.)  I'd like to encourage representatives of those projects to post in this forum, as these experiences will be valuable to others starting out in online assessment.

That said, and looking to the future, we have some very exciting and significant changes in the pipeline.  For some of these the code exists in prototype, but for others students are already using them and I'm confident these will be released in the next year.

The proposed future changes include the following.

(1) Adding "conditional blocks" to the CAS-text environments.  One of the uses of these blocks is to enable the question to "adapt" to the student's answer.  E.g. if a student does not get the answer correct, then the question can adapt to reveal "parts" which the student can type their working.  This profoundly changes the question interaction model available, moving away from a fixed number of answer boxes at the outset.  Blocks are also useful for random versions and embeded images.

(2) Adding "reasoning by equivalence" checking.  Here a student works line by line, transforming their equation into a "solved form". An example is shown below . On the left is what the student types into to STACK, and on the right is how the system evaluates this argument.

x^2-x=30
x^2-x-30=0
(x-6)*(x+5)=0
x-6=0 or x+5=0
x=6 or x=-5
\[\begin{array}{cc} \ & x^2-x=30 & \mbox{ } \\ \color{green}{\Leftrightarrow} & x^2-x-30=0 \\ \color{green}{\Leftrightarrow} & \left(x-6\right)\cdot \left(x+5\right)=0 \\ \color{green}{\Leftrightarrow} & x-6=0\lor x+5=0 \\ \color{green}{\Leftrightarrow} & x=6\lor x=-5 \end{array}\]

This is very close to traditional working, and we can now automate the assessment of student's working when presented in this form.  Here, there is no limit on the number of steps, or on which steps a student takes.  Provided adjacent expressions remain "equivalent", the system will accept the argument.  The goal is to rewrite the final answer in a traditional way, e.g. \(x=6 \mbox{ or } x=-5\).  Some recent research I undertook suggests about 1/3 of the marks available for current International Baccalaureate questions are awarded for precisely this activity. That is to say, reasoning by equivalence is an essential mathematical activity at the hart of elementary pure mathematics, and it forms the basis from which students develop proofs.  Indeed, many proofs such as mathematical induction and \(\epsilon-\delta\) proofs in analysis make use of reasoning by equivalence as part of a wider logical argument.  

These changes are being developed in parallel and when combined will offer significant benefits to students.  E.g. one use case we envisage is that a student gets an answer wrong, then the blocks will reveal the equivalence input environment where a student can type in their working to help identify any steps with a mistake.  The blocks are being led at Aalto university in Finland, and I am leading the development of reasoning by equivalence.

These developments are not secret and I'd very much welcome comments on the design, development, documentation and testing.  Of course, other ideas are welcome.  If you would like to contribute, please contact me.  Please don't overestimate the level of knowledge needed to contribute.  Proof reading the documentation, and editing this as a new user with "things I wish I'd known" is an immensely valuable contribution to the project!  Please contribute sample questions, experiences and evaluations of use with students.

I'd like to thank Tim Hunt at the OU for his continued support and advice, particularly on the quiz aspects and Matti Harjula at Aalto, Finland, for his ongoing work on developing STACK.

Chris Sangwin



Average of ratings: -
In reply to Christopher Sangwin

Re: Release of STACK 3.4

by Laurent BRIEND -

Dear Chris,


thanks for this new version, but I've got a problem just after upgrade (3.3 to 3.4 )

When I want to preview any Stack Question in my question bank, I've got this message :

qtype_stack_question : CAS error when instantiating the session: CAS failed to return any evaluated expressions. Please check your connection with the CAS.

==========================

In debug mode :

Context used

Platform: unix
Maxima shell command: maxima
Maxima initial command: load("[dataroot]/stack/maximalocal.mac");


Maxima timeout: 5


Maxima command

cab:block([ RANDOM_SEED, OPT_NoFloats, sqrtdispflag, simp, assume_pos, lmxchar, ir, a, b, r, q, ans1, caschat0, caschat1], stack_randseed(86), make_multsgn("none"), make_complexJ("i"), make_arccos("cos-1"), OPT_NoFloats:true, sqrtdispflag:true, simp:false, assume_pos:false, lmxchar:"[", print("[TimeStamp= [ 86 ], Locals= [ ") , print("-1=[ error= ["), cte("__stackmaximaversion",errcatch(__stackmaximaversion:stackmaximaversion)) , print("0=[ error= ["), cte("ir",errcatch(ir:ev(expand((a*x-b)^2),simp))) , print("1=[ error= ["), cte("a",errcatch(a:ev(2+rand(8),simp))) , print("2=[ error= ["), cte("b",errcatch(b:ev(1+rand(9),simp))) , print("3=[ error= ["), cte("r",errcatch(r:ev(expand((a*x-b)^2),simp))) , print("4=[ error= ["), cte("q",errcatch(qsada*x-b)^2)) , print("5=[ error= ["), cte("ans1",errcatch(ans1:ev(expand ((a*x-b)^2),simp))) , print("6=[ error= ["), cte("caschat0",errcatch(caschat0:q)) , print("7=[ error= ["), cte("caschat1",errcatch(caschat1:q)) , print("] ]") , return(true) );

Timings

Start: 1441881970.7671, End: 1441881970.9915, Taken = 0.22445487976074



CAS result

Maxima 5.34.1 http://maxima.sourceforge.net
using Lisp GNU Common Lisp (GCL) GCL 2.6.12 (a.k.a. GCL)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1)
Compiling /usr/share/maxima/5.34.1/share/draw/grcommon.lisp.
End of Pass 1.
End of Pass 2.
loadfile: failed to load /usr/share/maxima/5.34.1/share/draw/draw.lisp
 -- an error. To debug this try: debugmode(true);
(%i1)
[TimeStamp= [ 86 ], Locals= [
-1=[ error= [
0=[ error= [

==================================

The server is a Debian Jessie.

ii  maxima                            5.34.1-2    amd64        Computer algebra system -- base system
ii  maxima-share                      5.34.1-2    all          Computer algebra system -- extra code


Moodle version : 2.9.1


What's wrong ? I don't know. Any idea ?

Thanks for your reply.


Laurent Briend from France




In reply to Laurent BRIEND

Re: Release of STACK 3.4

by Christopher Sangwin -
Picture of Particularly helpful Moodlers Picture of Plugin developers

That is very odd Laurent,

Let's take this discussion off the list until we've fixed the problem.  I'll help.

Chris


In reply to Christopher Sangwin

Re: Release of STACK 3.4

by Laurent BRIEND -

Thanks Chris for your proposition for help.

The problem were with the version of maxima on Debian : Stack doesn't load the draw.lisp file. I don't know why. I tried to do what Adrian Lehrmann made on https://moodle.org/mod/forum/discuss.php?d=313727  (maxima 5.36.1 installed and removed the older + optimisation) and all works fine now.

Laurent


In reply to Christopher Sangwin

Re: Release of STACK 3.4

by Joshua Bragg -

Chris, the evaluation of work looks pretty amazing. 

I seem to remember that there was some discussion of getting proper unit support in STACK at one point.  What's the status and priority on that?

In reply to Joshua Bragg

Re: Release of STACK 3.4

by Christopher Sangwin -
Picture of Particularly helpful Moodlers Picture of Plugin developers

Joshua,

Yes, the colleagues at Aalto already did this.   

See https://github.com/aharjula/moodle-qtype_stack/blob/STACK_4.0_ALPHA/doc/en/Authoring/Units.md

I didn't put a full list of new features online above, but you have have a look at what we have done and what we have left to do at https://github.com/aharjula/moodle-qtype_stack/blob/STACK_4.0_ALPHA/doc/en/Developer/Development_track.md 

If you are able to set up a test server from GIT, then help with the testing and reading the docs is always appreciated.  This isn't ready for student use yet!

This will make it into the main codebase at some point soon.  We can't bring it forward from 4.0, because of some of the very clever things they did with the display.  (Note there are currently problems with significant figure testing will become much more of a problem, and I'll try to get this done before the 4.0 release.)


Chris