Cetis Talk 27 Jan2009

18
Thoughts on Converting VLE items to QTI 2.* and diverse related musings Niall S F Barr [email protected]

description

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

Transcript of Cetis Talk 27 Jan2009

Page 1: Cetis Talk 27 Jan2009

Thoughts on Converting VLE items to QTI 2.* and diverse related musingsNiall S F Barr

[email protected]

Page 2: Cetis Talk 27 Jan2009

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...

Page 3: Cetis Talk 27 Jan2009

Why hasn't QTI 2 taken off?

Is something else doing the job?

Is there no real world requirement?

Is it a dreadful specification?

Page 4: Cetis Talk 27 Jan2009

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?

Page 5: Cetis Talk 27 Jan2009

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?

Page 6: Cetis Talk 27 Jan2009

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.

Page 7: Cetis Talk 27 Jan2009

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.

Page 8: Cetis Talk 27 Jan2009

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?

Page 9: Cetis Talk 27 Jan2009

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...

Page 10: Cetis Talk 27 Jan2009

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

Page 11: Cetis Talk 27 Jan2009

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>

Page 12: Cetis Talk 27 Jan2009

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.

Page 13: Cetis Talk 27 Jan2009

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

Page 14: Cetis Talk 27 Jan2009

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...

Page 15: Cetis Talk 27 Jan2009

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

Page 16: Cetis Talk 27 Jan2009

Does it have to be QTI 2?

Page 17: Cetis Talk 27 Jan2009

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

Page 18: Cetis Talk 27 Jan2009

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?