Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Cetis Talk 27 Jan2009

504 views

Published on

Niall Barr of the University of Glasgow discusses some of his work mapping VLEs to QTI.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Cetis Talk 27 Jan2009

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

×