280 likes | 393 Views
MCQFM. Multiple Choice Five Methods. Origins. TML (Tutorial Markup Language) project led by the University of Bristol (1997/8) http://www.ilrt.bris.ac.uk/netquest/about/lang/ Had an idea for a language which would describe tutorials – mixtures of content and questions essentially
E N D
MCQFM Multiple Choice Five Methods
Origins • TML (Tutorial Markup Language) project led by the University of Bristol (1997/8) http://www.ilrt.bris.ac.uk/netquest/about/lang/ • Had an idea for a language which would describe tutorials – mixtures of content and questions essentially • Neat Javascript engine for questions: • http://web.archive.org/web/19980611031649/http://www.ilrt.bris.ac.uk/~ethm/jscripts/js-intro.htm
Missou’s Javascript • Superb documentation but very much a technical understanding required.
Multiple Choice Question • 1. Multiple Choice Question • You need the following parameters for this question type: • a question • a list of possible choices and the state of each of them • the feedback to display when the “Mark Answer” button is clicked • a link which has to be a valid URL • score1 which is the maximum score • score2 which is the score if the answer is correct after a second attempt • idx which is the question index (starts at 1 and then has to be incremented by 1 when adding a new question on the same web page)
HTML • <FORM NAME="question_1"> • <DL><DD><B>1. What is Tintin's dog name in the English albums?</B></DD> • <DD><BR><DL> • <DD><INPUT type="radio" name="mcq" value="0">Milou</DD> • <DD><INPUT type="radio" name="mcq" value="1">Snowy</DD> • <DD><INPUT type="radio" name="mcq" value="0">Struppi</DD> • <DD><INPUT type="radio" name="mcq" value="0">Spokie</DD> • <DD><INPUT type="radio" name="mcq" value="0">Melok</DD> • </DL></DD> • <DD><BR> • <INPUT type="hidden" name="vscore1" value="2"> • <INPUT type="hidden" name="vscore2" value="1"> • <INPUT type="hidden" name="endScore" value="0"> • <INPUT type="hidden" name="attempt" value="0"> • <INPUT type="hidden" name="endAttempt" value="0"> • <INPUT type="hidden" name="feedback" value="Tintin's dog is called <I>Snowy</I> in the english and american versions. He is called <I>Milou</I> in French, <I>Struppi</I> in German, <I>Spokie</I> in Afrikaans and <I>Melok</I> in Russian."> • <INPUT type="hidden" name="link" value="http://www.tintin.be/Personnages/tableau_2.htm"> • <INPUT type="hidden" name="work" value="false"> • <INPUT type="button" name="exercise" value=" Mark Answer " onclick="mccheck(this.form)"> • <INPUT type="button" name="solution" value="Show Solution" onclick="lmccheck(this.form)"> • </DD></DL> • <DL><DD><I>Your score for this question is:</I> <INPUT type="text" name="score" size="3" value="" onChange="checkScore(this.form)">. <I>You needed </I><INPUT type="text" name="vattempt" size="3" value="" onChange="checkScore(this.form)"> <I>attempt(s)</I></DD></DL> • </FORM>
Euromet Project • Very old EU FP5 project to teach meteorology over the internet • Used a system of macros to enforce stylistic commonality across teaching modules • In addition to the above general design requirements, EuroMET developed page-formatting macros to ensure that each module conformed to a common style. For example, the macros insert headers and footers, standard graphic icons, etc. The software used to effect the replacements is a PERL 5 script called esr2htm derived by EuroMET from a similar tool freely available from WebTechs Corporation. This script automatically replaces any macro names it finds within the source files with a corresponding block of HTML • (http://www.ascilite.org.au/conferences/wollongong98/asc98-pdf/wrightwrightbell0027.pdf)
Using Macros for Formatting • See http://page.mi.fu-berlin.de/~lernmat/oldbin/toolkit/fdt-full.html
Question Generator • Would generate a javascript based multiple choice page, from a simple text representation of the question, which would be preprocessed to have macros added, and these in turn would be expanded to have the javascript • http://homepages.feis.herts.ac.uk/~comqsjb/quiz.htm
The Value of Simple Text input • Grabbing a quiz or some questions from somewhere else • Easily obtain questions sourced from colleagues
The limitations of simple text input • Sophisticated options such as negative marking of particular distractors, branching within questions are almost impossible to represent without losing the immediate meaningfulness of the question • Similar example in Wikimedia – a very expressive pseudo-tagging notation
Existing Code • cgi_quiz_cruncher.pl • Perl script which reads input sent by a form over the web • Two parameters – the text to be converted, and the output format – currently either html or qml • quizCruncher.pm • Perl module which surrounds the submitted text with Macros in order to be sent to the macro preprocessor • macroCruncher.pm • Perl module which just expands macros within a body of text
Example ---MCQ--- What is the capital of the United States?|Its Washington|2 New York Los Angeles @Washington ---ORDER--- Put the players together with their nationality Venus Williams@American Martina Hingis@Swiss Anna Kournikova@Russian ---CLOZE--- Fill in the blanks here: The quick brown @fox@ jumped over the @lazy@ dog.
Q1 Becomes _JSMCQ _MCQB(1,What is the capital of the United States?) _MCQA(New York,0,0) _MCQA(Los Angeles,0,1) _MCQA(Washington,1,2) _MCQE(1,Its Washington,2) _QMMCQOUTCOME_(0,Answer 0,0) _QMMCQOUTCOME_(1,Answer 1,0) _QMMCQOUTCOME_(2,Answer 2,1)
Q2 Becomes • _ORDERB(Put the players together with their nationality) • _ORDERA("American" "Russian" "Swiss",Venus Williams,0) • _ORDERA("American" "Russian" "Swiss",Martina Hingis,1) • _ORDERA("American" "Russian" "Swiss",Anna Kournikova,2) • _ORDEROUTCOME("0" MATCHES "American",0) • _ORDEROUTCOME("0" MATCHES "Swiss",0) • _ORDEROUTCOME("0" MATCHES "Russian",0)
Q3 Becomes _CLOZEB(Fill in the blanks here:) _CTB_ The quick brown _CTE_ _CTFIELD_(0,5)_CTB_ jumped over the _CTE_ _CTFIELD_(1,6) _CTB_ dog.;_CTE_ _CTOUTCOME_("0" MATCHES NOCASE "fox" AND "1" MATCHES NOCASE lazy" right,1) _CTOUTCOME_(OTHER,wrong,0) _CLOZEE
HTML (Q1) <FORM NAME="question_1"> <div align="left"> <table border="1" width="96%"> <tr> <td width="80%"> <p><b>1. What is the capital of the United States?</B></P> <DL> <DD><INPUT type="radio" name="mcq" value="0">New York</DD> <DD><INPUT type="radio" name="mcq" value="0">Los Angeles</DD> <DD><INPUT type="radio" name="mcq" value="1">Washington</DD> </dl></td> <td width="20%" align="center"> <INPUT TYPE="button" VALUE="Mark!" onClick="mccheck(document.question_1)"><BR><BR> <INPUT TYPE="button" VALUE="Solve!" onClick="lmccheck(document.question_1)"></td> </tr> <tr> <td colspan="2"><div align="center"><center><p><i>Your score for this question is:</i> <input type="text" name="score" size="3" value onChange="checkScore(this.form)">. <i>You needed</i> <input type="text" name="vattempt" size="3" value onChange="checkScore(this.form)"> <i>attempt(s)</i></td> </tr> </table> </div> <input type="hidden" name="vscore1" value="2"> <input type="hidden" name="vscore2" value="0"> <input type="hidden" name="endScore" value="0"> <input type="hidden" name="attempt" value="0"> <input type="hidden" name="endAttempt" value="0"> <input type="hidden" name="feedback" value="Its Washington"> <input type="hidden" name="link" value> <input type="hidden" name="work" value="false"> </form>
QML • Questionmark’s proprietary language • Simpler than QTI – does not intend a question as being anything more than one interaction
QML (Q1) <QUESTION DESCRIPTION="1_What_is_the_capital_of_the_United_Stat" TYPE="text/html"> <CONTENT TYPE="text/html" > 1 What is the capital of the United States?</CONTENT> <ANSWER QTYPE="MC" SHUFFLE="N"> <CHOICE ID="0" TYPE="text/plain" >New York</CHOICE> <CHOICE ID="1" TYPE="text/plain" >Los Angeles</CHOICE> <CHOICE ID="2" TYPE="text/plain" >Washington</CHOICE> </ANSWER> <OUTCOME CONDITION=["0"] ID="Answer 0" SCORE="0" TYPE="text/plain"> </OUTCOME> <OUTCOME CONDITION=["1"] ID="Answer 1" SCORE="0" TYPE="text/plain"> </OUTCOME> <OUTCOME CONDITION=["2"] ID="Answer 2" SCORE="1" TYPE="text/plain"> </OUTCOME> </QUESTION>
Bringing the Question Generator Up to Date • Currently textmacros HTML/QML • Proposed • TEXTBQLHTML/QTI/QML • And also • QTI BQL TEXT • QMLBQL TEXT
BQL • Basic Question Language • A very reduced subset of QTI type functionality with still an emphasis on expressivity of notation
E.G – as BQL <question type=“mcq”> <prompt>What is the capital of the USA</prompt> <alternative score=“0”> <text>New York</text> <feedback>No that is the financial capital</feedback> </alternative> <alternative score=“0”> <text>Los Angeles</text> <feedback>No that is the entertainment capital</feedback> </alternative> <alternative score=“1”> <text>Washington DC</text> <feedback>Yes, this is the political capital</feedback> </alternative> </question>
XSLT • Then run transformations over the BQL to generate • XHTML • QML • QTI • And other transformations to turn back • QTI • QML • To QTEXT
Current Progress • Establishing a schema for BQL • Had some problems in getting R2Q2 to actually display user generated content rather than the content already packaged with the system
At first we didn’t understand Xml file inside the content package Physical location of the content package on the hard disk
Now We Do! Help we might like: 1) How to produce a simple consuming application for R2Q2 – such that our generated qti gets immediately passed to R2Q2 and returns the requisite html that may be marked! 2) How to get such a web service working inside another web application such that interrogation functionality can be built in
Smirkboard http://smirkboard.herts.ac.uk:8080/smirkboard2 to work a bit like http://smirkboard.herts.ac.uk/multimedia