An assessment and feedback package for Maxima



Chris,

Depending on the level of math you're talking about, you may or may not want
to use Maxima as is.  For example, if a student says that 2 divided by 4 is
2/4, do you want to consider that correct?  Maxima automatically simplifies
that to 1/2.  Or for feedback, you may want to give feedback on the *form*
of the result, not just whether it is correct -- as in your factorization
example.

About the security issue, using the regular Maxima read-eval-print loop
seems problematic and unnecessary.  I'd think you'd want to parse the input
yourself (probably using the usual Maxima parser, maybe with some changes --
notably disabling the '' operator).  Some kinds of analysis you might want
to do on the unsimplified form; you can then pass the expression to the
Maxima simplifier.  I don't see why you'd ever want to use the Maxima
evaluator, which is not only a security issue, but also not what you want
the user to do -- you don't want the user to enter factor(x^2-1) but
(x-1)*(x+1), right?

If you do want to evaluate the expression numerically (per Fateman's
suggestion), again, you should probably just use subst and float, not eval.

           -s

PS Just an FYI -- I had no idea what you mean by "assessment and feedback"
until I read Gerd Kortemeyer's reply.  Assessment of what?   Feedback to
what process?  But now I see you mean assessment of students studying
math....


On Mon, Nov 15, 2010 at 07:18, Chris Sangwin <sangwinc at for.mat.bham.ac.uk>wrote:

>
> Dear all,
>
> Following the experience with developing the STACK computer aided
> assessment package, I've written some Maxima code which I think will be
> useful to other projects which use Maxima.  In particular, I'd like to
> contribute an assessment and feedback package for Maxima.
>
> I envisage this will enable other project to do such things as
>
> * establish two expressions are "equivalent" in various senses
>
> * provide feedback of the kind
>   "Your expression is not factored, you need to do more work on the term
> ...."
>
> * establish mathematical properties of simple expressions, e.g. this is
> continuous at $x=a$.
>
> and so on.
>
> Rather than performing computations, the focus will be on establishing
> mathematical properties of expressions, based on a set of assumptions
> sensible for elementary mathematics education, college algebra students and
> initial university mathematics.
>
> I can imagine hairs on the back of some heads rising here, as many of these
> questions are formally undecidable!  As Fenichel comments in his PhD thesis
> "recursive undecidability can be a remote and unthreatening form of
> hopelessness".  This is certainly our experience of using Maxima for STACK.
>
> In this sense I'd like to take the Maxima code "out of STACK" and enable
> other collaborators to make use of this and contribute to it.
>
> I'm emailing to alert people I'm doing this, and welcome comments,
> suggestions, and offers of collaboration.
>
> I also would like to ask some practical questions about how to code up for
> possible inclusion in Maxima as a contrib package.
>
> (1) How is multi-language support implemented in Maxima?
>
> As a practical example, currently the code I use in STACK returns strings
> of the form
>
> stack_trans('FacForm_UnPick_morework' , $x^2-4$ );
>
> The function "stack_trans" is a PHP function which later translates the
> language independent tag 'FacForm_UnPick_morework' and optional argument
> $x^2-4$ into actual feedback for the student such as
>
>  "Your expression is not factored, you need to do more work on the term
> $x^2-4$."
>
> These tags enable multi-language versions of STACK, without the translators
> needing to hunt around.
>
> In the contributed package, I'd like Maxima to return sensible messages to
> Maxima desktop users, and also preserve the current STACK functionality. Any
> suggestions here about coding style, existing approaches to this etc etc.?
>
> (2) Unit testing
>
> I already have a large number of unit tests for the functions we use, and
> am mostly very happy with the way they work for STACK's purposes.  How
> should I code up unit tests for Maxima?
>
> Many thanks,
> Chris
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>