Subject: An assessment and feedback package for Maxima
From: Richard Fateman
Date: Mon, 15 Nov 2010 07:44:58 -0800
On 11/15/2010 4:18 AM, Chris Sangwin 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
There is a history of projects to do just this; a fairly effective way
is to evaluate at a few random points and if the result is "close enough"
say they are equivalent.
> * provide feedback of the kind
> "Your expression is not factored, you need to do more work on the
> term ...."
I suppose you could easily determine if a polynomial is a sum (and
hence not factored).
>
> * establish mathematical properties of simple expressions, e.g. this
> is continuous at $x=a$.
If the expressions are simple enough, sure.
>
> 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.
Elementary school children usually have different issues, like typing
accuracy.
>
> 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?
You ordinarily write code in lisp, or in the Maxima language, and no
other language support is needed.
For some implementations of lisp, you can use FFI (foreign function
interface)
and call almost any other language.
>
> 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.
Looks like you could use the Maxima language, and use the same code.
Just use " instead of '.
>
> 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