Cetis Talk 27 Jan2009
-
Upload
university-of-strathclyde -
Category
Education
-
view
383 -
download
2
description
Transcript of Cetis Talk 27 Jan2009
Thoughts on Converting VLE items to QTI 2.* and diverse related musingsNiall S F Barr
Introduction
Three fairly recent areas of activity:
Implementing a Common Cartridge reader, (and then thinking that more it probably does than is needed or wanted.)
Fixing the implementation of QTI 2.* export from Moodle
Seeing e-assessment from the other side...
Why hasn't QTI 2 taken off?
Is something else doing the job?
Is there no real world requirement?
Is it a dreadful specification?
Why hasn't QTI 2 taken off?
Is something else doing the job?
That depends what the job is:The Common Cartridge is (finally) bringing a level of interoperability for Item bank
vendors.
It is very much a lowest common denominator, with item types more or less restricted to the most basic version that all VLEs support
Is there no real world requirement?
Is it a dreadful specification?
Why hasn't QTI 2 taken off?
Is something else doing the job?
Is there no real world requirement?
People do use the 'extra' features of VLE item types. (e.g. better feedback and 'penalty' scoring in Moodle;)
There's lots of demand for item banks
Is it a dreadful specification?
Why hasn't QTI 2 taken off?
Is something else doing the job?
Is there no real world requirement?
Is it a dreadful specification?
There are independent, interoperable implementations of 2.0 already, so it does work.
The specification is readable (and anyone who's ever looked at other complex interoperability specifications will know the documentation is clear and concise.)
It's more flexible than any VLE assessment system.
A slight digression...
Interoperability isn't easy
Extreme attention to detail is needed
Mapping complex data structures to a file format, and then (possibly) to different complex data structures.
It's also not really done by a lot of people
Remember recent cross platform buffer overflow bugsJPEG / JFIF
TCP/IP
The reason these bugs affected different systems was that they're in open-open code that everyone uses.
Why hasn't QTI 2 taken off?
Is something else doing the job?
Is there no real world requirement?
Is it a dreadful specification?
Is everyone waiting for QTI 2 item banks?
So, getting to the point...
Mapping Moodle item types onto QTI.
I started looking at mapping the full functionality of Moodle items onto QTI 2.0
Hand crafted QTI XML
Initially tried them out with APIS. (Items quickly went beyond APIS's current scope.)
Now using R2Q2 as the main test platform. (Does what's needed, but crashes horribly with unhelpful Java exceptions rather than giving helpful error messages.)
Moodle export uses 'Smarty' for exporting – really an HTML template fill, but obviously that works for XML too.
A few item types now (almost) export to QTI 2 from Moodle.
Now starting to take a different, more general approach...
Moodle 'choice' item
'Serialized' as XML but basically a very simple structure
•Barely object orientated•Processing rules are hardwired•Very little code shared between item types•More or less maps 1:1 with item creation form
XML is almost overkill
Moodle 'choice' item 2
Mapping this to QTI 1.2 does result in a lot of code {if $courselevelexport}<?xml version="1.0" encoding="utf-8"?>{/if}<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p1 imsqti_v2p1.xsd"identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false">
<responseDeclaration identifier="{$questionid}" cardinality="single" baseType="identifier"><correctResponse>
<value>{$correctresponse.id}</value></correctResponse>
</responseDeclaration><outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float">
<defaultValue><value>0</value>
</defaultValue></outcomeDeclaration><outcomeDeclaration identifier="FEEDBACK" cardinality="single" baseType="identifier" /><itemBody>
<p>{$questionText}</p>{if $question_has_image == 1}
<div class="media"> {if $hassize == 1}
<object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" />{else}
<object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> {/if}
</div>{/if}
<div class="intreactive.choiceSimple"><choiceInteraction responseIdentifier="{$questionid}" shuffle="false" maxChoices="1">
{section name=answer loop=$answers}<simpleChoice identifier="{$answers[answer].id}">{$answers[answer].answer}</simpleChoice>
{/section}</choiceInteraction>
{section name=answer loop=$answers}{if $answers[answer].feedback != ''}{if $answers[answer].answer != $correctresponse.answer}
<feedbackInline identifier="{$answers[answer].id}" outcomeIdentifier="FEEDBACK" showHide="hide">{$answers[answer].feedback}</feedbackInline> {/if} {/if} {/section}
</div></itemBody><responseProcessing>
<responseCondition><responseIf>
<match><variable identifier="{$questionid}"/><correct identifier="{$questionid}"/>
</match><setOutcomeValue identifier="SCORE">
<baseValue baseType="float">1</baseValue></setOutcomeValue>
</responseIf>
<responseElse><setOutcomeValue identifier="SCORE">
<baseValue baseType="float">0</baseValue></setOutcomeValue>
</responseElse></responseCondition>
<setOutcomeValue identifier="FEEDBACK"> <variable identifier="{$questionid}"/> </setOutcomeValue>
</responseProcessing>{section name=answer loop=$answers}
{if $answers[answer].feedback != ''}<modalFeedback outcomeIdentifier="FEEDBACK" identifier="{$answers[answer].id}" showHide="hide">{$answers[answer].feedback}</modalFeedback>
{/if}{/section}
</assessmentItem>
Moodle 'choice' item 3
However interoperability has been achieved!
The QTI generated from this template plays in: APIS (as long as penalty is not included) R2Q2 JAssess playr
Output from these closely matches Moodle output, so learning experience is maintained
This item type would require significant 'feature scrubbing' to fit QTI CC or any other VLE.
Other item types
So far in Moodle Choice (single and multiple) True/False Matching
It looks likely that all Moodle item types will be able to be fully converted to QTI 2.* items, however... Moodle export filters are a pain to write
A more generic approach
A tool that takes Moodle XML, converts it to simple data structures and then to QTI 2.*
Avoids complexity of writing Moodle filters Moodle specific part is a 'plugin' so able to support other VLEs as
well. Could (possibly should) be largely implemented in XSLT (however
just 85 lines of PHP does generic XML input filtering...) Currently just proof of concept...
Where is this going?
A simple online tool that con convert various VLE assessment formats into packages containing QTI 2.* item banks
A rapid way of overcoming the “there are no QTI 2.* items” issue Items that maintain all the features of the original VLE items rather
than being made into lowest common denominator variants
Does it have to be QTI 2?
Can we make QTI 2.* simpler?
Not really, but there already are several implementations, so do we need to?
QTI 2 response processing is a set of simple rules and actions– A basic parse tree– More or less a pre-parsed interpretive programming language – i.e. a standard L2 CompSci assignment (except a bit bigger...)
QTI 2 item rendering is just HTML with a handful of widgets
Are there features missing?
Back to 'assessment from the other side' Open University systems support rather neat input
– Superscripts and (automatic) subscripts without a full HTML editor– Useful for all science, necessary for chemistry (and hence much of life science)– Far more basic than the Maths requirements, and brings in a lot more potential
users.
Can we do the same in QTI 2?