Language exercises extension programming

From mediawiki.org

this is in state of brainstorming, feel free to work on...

What should it do[edit]

  • import / use something like this: meta:wiki definition syntax for language exercises
  • exercise types
    • based on html:form
      • fill the gap (html:text)
      • select/dropdown (html:select)
      • checkbox (html:checkbox))
      • radiobutton (html:radio)
    • based on whatever (Javascript, DHTML SVG, ...?)
      • sorting blocks of text horizontal (short strings) and vertical (blocks)
      • conneting items by line
      • dragging items to other items
    • behavior
      • one button or link showing right entries
      • one button or link showing defined solutions or hints and what the user typed in
    • optional send data somewhere for tracking via http:post or something like that

mockup examples see meta:Ultimate wiktionary and language exercises

OmegaWiki language learning extension call (by link)[edit]

  • 1. parse exercise sources
    • individual exercise
      • get data from Page with marked text e.g. from Wikibooks (example)
    • link from lemma
      • default "exercise" link on OW page like link "history"
      • other pages that integrate it, perhaps dicologos
    • link from lemma list
      • e.g. basic vocabulary list on wiktionary
      • dicologos childrens dictionary
  • 2. check lexicological resources for making exercises if needed
    • dicologos
    • Ultimate Wiktionary
  • 3. display page to user
    • let user exercise...
    • send user interaction data if user is logged in at some service for tracking
  • 4. save user interaction data (at distributed service ?)
    • values given by user for diagnostic purposes
    • selections by user
      • what to exercise
      • how to exercise
    • determine what to do next
      • exercises with most wrong tries...
    • go to step 1...

what is perhaps needed clientside[edit]

At the moment we have to start with the implementation of the functionality on the client browser. The generation of the exercise contents from some lexicological resources like dicologos.org or wiktionaries and what to do with tracked user data is to be done in a future step. That might be funny, but some of these sources are subject to changes at the moment and even these changes might depend from what could be exercised in which way... . So the things we need to be implemented for the first step are only the clientside actions. Then we can fill them with sample material and test exercise retrieving from content sources like dicologos.org or free teaching materials from our university. The same thing with reporting and processing of user interactions data. For the first step it would be enough if the clientside javascript (?) can write to hidden fields that can be submitted to future / experimental serverside processing. Mimimum would be set something like "score" value from "check" popup window in hotpotatoes. To be set if possible: input values given by user (if fill in the blank exercise that might be the entered string, in general the name of the (html)element as hidden field name and value as ist value).

It would be cool if this could be used too for exercises that are hand made with the hotpotatoes authoring tool (especially crosswords) to be able to integrate them.

So the thing that we'd like you to write for us at the moment is a webpage *skeleton* that could be dynamicaly filled by php for the following exercise types. The information for the filling of that skeleton could be an array like m:Language exercises extension programming#UW language learning extension data to build clientside code . It would be enough if you could provide us working examples of exercises based on that skeleton so that later php control structures could be combined with the content sources like free dictionaries to create instances of the following exercise outputs / types

Details... are not so fixed, If you propose something to implemented different ...

Hope its a little bit clearer now, excuse my english

UW language learning extension data to build clientside code[edit]

<?php

//example data input to html / javascript skeletons
//

/////////////////////////////////
// Example drag-and-drop two collumn exercise
// this could look similar to http://web.uvic.ca/hrd/halfbaked/wintutor6/jmatch2.htm
//

$arr['item1']['exercise_id']        = 'some value given before'; //for hidden field if data is sent 
$arr['item1']['exercise_type']      = 'dnd'; //or drag-n-drop ...
$arr['item1']['text_before']        = ''; //thats probably not to to be used with this type
$arr['item1']['default_value']      = 'http://web.uvic.ca/hrd/halfbaked/wintutor6/beef-vt.gif';
                                                    //the image or text in first container
$arr['item1']['text_after']         = '';
$arr['item1']['hint']               = '';

$arr['item1']['solution1']          = 'beef';
$arr['item1']['solution1_score']    = '1';
//...

//
/////////////////////////////////


/////////////////////////////////
// Example 1 Fill in the blank text exercise
//

$arr['item1']['exercise_type']      = 'text';
$arr['item1']['text_before']        = 'This';
$arr['item1']['default_value']      = '';
$arr['item1']['text_after']         = '(to be) strange';

$arr['item1']['solution1']          = 'is';
$arr['item1']['solution1_score']    = '1';

$arr['item1']['solution2']          = 'bla';
$arr['item1']['solution2_score']    = '0';
    // n more possible solutions ...

$arr['item2']['exercise_type']      = 'text';
$arr['item2']['text_before']        = 'That might';
$arr['item2']['default_value']      = 'b*';
$arr['item2']['text_after']         = 'the scond item';
$arr['item2']['solution1']          = 'be';
$arr['item2']['solution1_score']    = '1';

    // n more possible items ...
//
/////////////////////////////////

/////////////////////////////////
// Example html:form:select exercise
//
//same as text define wrong solutions with score <= 0

/////////////////////////////////
// Example html:form:checkbox exercise
//
$arr['item1']['exercise_type']      = 'checkbox';
$arr['item1']['text_before']        = 'whatever bla thats right ';
$arr['item1']['default_value']      = ''; //not to be used checkbox value can be 1 when checked
$arr['item1']['text_after']         = '(some text possible)';

$arr['item1']['solution1']          = 'is';
$arr['item1']['solution1_score']    = '1';

$arr['item1']['solution2']          = 'bla';
$arr['item1']['solution2_score']    = '0';


$arr['item2']['exercise_type']      = 'text';
$arr['item2']['text_before']        = 'That might';
$arr['item2']['default_value']      = 'b*';
$arr['item2']['text_after']         = 'the scond item';
$arr['item2']['solution1']          = 'be';
$arr['item2']['solution1_score']    = '1';
//
/////////////////////////////////

Related project: wikivocabularytrainer[edit]

Some coding has been done on top of the OmegaWiki database structure: see the repository at Google Code. Drop the project owner a line if you have any ideas.