[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Eureka! Quizzer Item Types



Eureka!

This is an idea for balancing creativity, simplicity and usefulness in
the area of types of items to process via the various Quizzers currently
being formulated.

I think I have it now.  The insight came from reading about the proposed
XML-based universal method-calling standard called XML-RPC (RPC = Remote
Procedure Call).  

example: (detailed explanation follows)

<?xml version="1.0" ?>
 <EDU>
  <OUTCOME id="bv.it.email">
   <CRITERION-REF> is able to use email tools to solve a variety of problems </CRITERION-REF>
   <ITEMS>
    <ITEM level="1"> 
     <rpc>edu.mc("What is the meaning of<q/>?","bv.it.email.vocab","email","meaning","4")</rpc>
     <rpc>edu.mc("What is the abbreviation for<q/>?","bv.it.email.vocab","meaning","email","4")</rpc>
     </ITEM>
    </ITEMS>
   </OUTCOME>

 <ENCYCLOPEDIA>
  <TOPIC id="bv.it.email.vocab" author="vernier@vc.bc.ca" date="1999/02/05">
   <TABLE>
    <TR><TH>keyword</TH> <TH>expanded</TH> <TH>meaning</TH></TR>
    <TR><TD>BBS</TD>     <TD>Bulletin Board System</TD> <TD>an electronic
     message board to which people may post email messages</TD></TR>
    <TR><TD>header</TD> <TD>address elements in first part of
     e-mail</TD><TD>First part of an email message containing address information
     such as To: CC: Subject and Attachment:</TD></TR>
    </TABLE>
   </TOPIC>
  </ENCYCLOPEDIA>
</EDU>


Each <ITEM> in an EDUML compliant test-bank can now include as many
"functions/routines/procedures/methodCalls/packages" as we want.  This means
we are now in the business of not just standardizing data but standardizing
Method Calls ... in other words, we agree on a standard way of calling up a
program, sub-program, sub-routine, procedure, function ... whatever ... that
will be used to display a particular <ITEM>.  

This is similar to what CORBA is for but done elegantly via XML directly.
Note that in order to make it look nicer, I left the <rpc> stuff </rpc>
directly in methodCall format.  It uses up less space and is easier to
understand for programmers while losing no information.  Furthermore, when
we get fancy and want to implement calls across the internet rather than
just on the local server via a pure HTTP interface such as we are often
force to do when behind firewalls, then tools to convert the
content of <rpc> elements into pure XML already exists to build:
   <rpc>
    <methodCall xmlns="some url">
     <methodName> edu.multichoice </methodName>
      <params>
       <param>
        <value> <text> which of these is the correct answer </text>
        </param>
       </params>
      </methodName>
     </methodCall>
     
As you can see from this partial example above, while it is pure XML and
therefore ideal for true cross-platform cross-language cross-everything     
it is too bulky right now at least for those of us without fancy XML data
input programs yet.  The proposal below can easily be converted to the
format above on the fly by a program or later in an update to EDUML.

Here is the the current list of method Calls.  Please send me all your
creative new method Calls for all to benefit from:

    <ITEMS scale="id"> <!-- list of things to do in order to master this outcome -->
     <ITEM style="learning-style" level="number">
           <rpc> methodCall("arg1","arg2",arg3",etc...)</rpc>
	   <rpc> edu.multchoice("question with <q/> placeholder",
	        "table ref from the encyclopedia elements below",
                "column to replace <q/> in question",
                "column for answer","number of choices") </rpc>
	   <rpc> edu.truefalse("question","0 or 1 for True or False") </rpc>
	   <rpc> edu.shortanswer("question with <ans/> placeholer",
                 "array ref of possible (or regular expressions) answers)"</rpc>
	   <rpc> edu.essay("instructions possibly refering to <editor/>",
	         "marking guide intended for human marker (email based?)",
	         "filters to apply on output file ...
		  ex: spell.check, grammar.check, word.count") </rpc>
	   <rpc> edu.interactive("instructions refering to <program/>",
	         "marking guide intended for human marker",
	         "filters to process on output")</rpc>
	   <rpc> edu.reading("ref to reading material <browser/>","time")</rpc>	 
	   each method will take care of things like	 
	   randomizing as much as possible based on lists;
	   code snippet that displays question, accepts input,
	   checks answer + scale matrix, provides score
	<REF id="encyclopedia reference" > query extract </REF>
	<URL href=""> a link to a resource </URL>
	   can be inserted anywhere within the item element.

           RPC methods can be mult. choice, short ans., matching, t/f,
	   assign, lab, lesson, idea, project, URL, list of composite
	   item-ids, "textbook-like" fragment, HOWTO, sundry documentation,
	   etc...
	   RPC methodCalls can be implemented in any computer language
	   Attribute style is a code for associated learning style(s)
	   Attribute level can be used to order the questions
           Attribute sep can be used to separate arguments to function calls
	   Queries in REF can be XQL, SQL, NSQ etc...
	   Make use of regular HTML for displaying text in here
          <ANSWER> classic answer elements </ANSWER>
	   
     </ITEM> 
    </ITEMS> 
   </OUTCOME>
  </OUTCOMES>

 <ENCYCLOPEDIA>
  <TOPIC id="unique topic id">
   a mini database of hopefully important and timeless truths about the
   particular topic randomly extractable by the test-item scripts, or
   presented in tables for online textbooks etc... using HTML table elements
   </TOPIC>
  </ENCYCLOPEDIA>
  
 <SCRIPTS> <!-- commonly needed scripts for EDUML tasks -->
  <SCRIPT id="edu.truefalse" lang="perl"> 
    perl script to handle the edu.truefalse method goes here
   </SCRIPT>
  <SCRIPT id="edu.truefalse" lang="python"> 
    python script to handle the edu.truefalse method goes here
   </SCRIPT>
  </SCRIPTS>