[Aimmath-developers] Multipart questions ... a little trap
Brought to you by:
gustav_delius,
npstrick
From: Greg G. <gr...@ma...> - 2003-09-02 07:14:58
|
Dear all, I was just formulating a multipart question not too dissimilar to Neil's primes example in doc/format.html and it occurred to me: `What happens if, for a question, the answers are all examples of the same type, in such a way that they can be entered in the answer boxes in any order, and we are using the av> tag to ensure the answers are distinct ... *but* the student can only think up one example and so enters that example for the last part, marks it, then enters the same example in the 2nd last answer box, marks it, etc. until all parts are answered?' Answer: the student gets full marks if one does not have an explicit test in each part to check that the previous parts have been answered, though once the student has finished this procedure all but the first part has red feedback saying the answer to that part is not distinct from those of the previous parts. (This is because AIM does not remark a question that has been previously marked correct and so the previous perfect score stands.) In fact, the marking algorithm of the 2nd part of Neil's example as it stood (I've since added some code to prevent it) runs into error if the first part is not answered. However, the question that I had been working would have simply allowed the student to get full marks with one example. Thus one needs to have explicit checks in each part to ensure that previous parts have been answered (if this is the rationale for the question). In Neil's example, the av> tag sets p1 to be the answer of the first part. I have added a check that p1 is of type posint (the type declared for the first part's answer) in the marking algorithm for the second part. name> primes local> lowerbound,ans1,p1,p2 shift> 7645848653 t> Recall that Euclid proved that their are infinitely many primes h> lowerbound := rnd(20..40); note> sprintf("p2>p1>%a",lowerbound) sq> t> Find a prime $p_1$ such that $p_1 > @lowerbound@$ c> posint av> p1 ap> $p_1 =$ s> ... esq> sq> t> Find another prime $p_2$ such that $p_2 > p_1$ c> posint av> p2 ap> $p_2 =$ s> [proc(ans) if not type(p1, posint) then # Make sure the student did in fact answer the first part!! `aim/t`("You haven't answered the first part yet!"); RETURN(0); elif isprime(ans) then ... Initially, I thought that perhaps some extra code should be included to prevent a student from answering later parts if the former parts were not already answered, but I think there are plenty of cases where it makes sense for students to answer the parts in any order ... so the quiz coder just needs to be aware of the potential problem and write questions accordingly. Regards, Greg |