Subject: An assessment and feedback package for Maxima
From: Chris Sangwin
Date: Mon, 15 Nov 2010 12:18:04 +0000 (GMT)
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