An assessment and feedback package for Maxima



Hi,

Wow, that would be a very nice package to have!

At LON-CAPA, we have done a bunch of work on using MAXIMA for assessment, see

http://www.lon-capa.org/cas.html
http://www.lon-capa.org/demo.html

If you follow the links to the code examples, you'll get into our CVS. Clicking on "view: text" shows the XML that is driving these problems.

Regarding unit testing, it would be ideal if the units can be embedded into the expression and converted, e.g., if it would understand that

(0.42 kg*cm/s^2)*t^2/2

is the same as

(0.0021 kg*m/s^2)*t^2

However, these are not really the issues we deal with, we are mostly very happy with how we can handle the algebra. The real issue were are facing with using MAXIMA for assessment is that it was not built as a "kernel" that we can conduct atomic and secure transactions with.

Problems include:

* MAXIMA asking questions. Since we run MAXIMA as a server, we have nobody to answer questions like "is x positive?" As it is somewhat unpredictable when we suddenly get questions, and hard to detect what is a question and what is a result, we get unexpected "results" and hung processes. In cases where the expression cannot be evaluated (and we never know what students might enter), we simply need to get back "wrong." If your package gets MAXIMA out of thinking "interactively" and into working more like a server, it would be more helpful than all of the above.

* Also, we need to be more reliable in detecting dangerous code. As MAXIMA in principle can execute shell commands and do file transactions, it is problematic from a security standpoint. We currently run a "blacklist" of commands, but who knows what we may have forgotten. It would be great is your code could block everything but algebra.

- Gerd.

On Nov 15, 2010, at 7: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
> 
> * 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