MrWarper's self-checking exercise generator

General discussion about learning languages
User avatar
mrwarper
Orange Belt
Posts: 106
Joined: Sat Jul 18, 2015 4:06 pm
Languages: A bunch, in various stages
Language Log: http://how-to-learn-any-language.com/fo ... ?TID=39905
x 149
Contact:

MrWarper's self-checking exercise generator

Postby mrwarper » Sun May 01, 2022 10:52 am

This is the first of my projects, and the one that still needs more work and feedback. We'll move on to the next one if/when this gets somewhere.

This project's specific goal:
To ease generation of typical exercises for language learning, for example as found in most classroom textbooks (multiple choice, fill the gaps, etc.), that can be checked for answers in automated fashion by final users.

Rationale / motivation:
Whether it is because of the 'driving license exam' approach to learning or otherwise, I get many students that want to do a lot of mock language exams / exercises in class.

Useful as such language exercises are, for me having students devote class time to stuff for which no teacher is needed is, you guessed it, a no-go. I find it much more productive to hand out exercise sheets, and answer keys, and have students do that as homework. This way we can use class time --always scarce-- for something useful, f.e. instead of checking what the answers are, discussing any problems found when checking them at home: constructs that seemingly contradict previous explanations, or whatever.

However, in the 21st century we can up our game a bit, and provide an electronic version of the same materials instead of / in addition to the old-school paper handouts. These should put checking exercise answers a mere, single mouse click (or smartphone screen tap) away, thereby speeding up the whole process and letting students focus on what is useful.

Output demonstration
As you may know, I started rewriting the Princeton Russian Course for the web some 10 years ago, so I can already give you a close example of what such electronic exercises look like live. Please check:
sample_exercises.zip

[Edit: please ignore links to missing audio. This sample is taken straight out of real materials, and I didn't want to spend much time editing it. In real life, audios would give the course takers answers to the gaps, a reason to choose an option within each multiple choice, and the like, which you don't need to see how each element works. All the 'magic' in here knows is what the right answer is (which must be embedded in the HTML code), it doesn't know a thing about the audio, not even that it exists.]

These can be used nearly universally -- upload them to a website, send them via instant messaging applications like WhatsApp / Telegram and open on your smartphone, etc., or simply print and hand them out for the old-schoolers like me.

The challenge
Now, that is all well and good, but assuming you liked the idea as much as I do, and you were willing to create such exercises, ask yourself: how much work would that imply? What skills would you need to acquire first? HTML and javascript, anyone? I understand that all (or any!) of that might put quite some people off, so that's exactly where this project should come in handy: nearly no special skills needed for that with it.

The goal, in more detail
If everything goes as planned, to re-create the first exercise you will find above using this tool, all you will need to do is visit some webpage with your browser, and type something similar to the following (but not necessarily the same, as many things are still being defined):

{choice: Фо́лнея | Го́лнер | Фу́лкнер | *Фо́лкнер }
{choice: сензу́ра | *цензу́ра | вензу́ра | цензу́ру }
{choice: сна́йка | *ча́йка | ча́ка | ча́йник
{choice: *шанс | снанс | шенс | шанц
{choice: ги́рка | де́рка | *ды́рка | ду́рку
{choice: *каранда́ш | каренди́м | харанда́щ | карандо́ш
{choice: ри́дом | *ря́дом | рю́дом | пя́дом
{choice: Ми́ксон | Не́ксон | Кли́ксон | *Ни́ксон }
{choice: бюдзе́т | быдзе́т | *бюдже́т | бюджа́т }
{choice: *футбо́л | фоотбо́л | фу́тбол | футба́л }
{choice: Ру́тин | *Пу́тин | Пути́н | Рути́н }
{choice: чи́мия | хе́мия | си́мия | *хи́мия }
{choice: Ами́рака | Оме́рика | *Аме́рика | Росси́я }
{choice: *щу́ка | су́ка | що́ка | щека́ }
{choice: здра́ствойте | здра́ствайте | сдру́ствуйте | *здра́вствуйте }

(which is really exactly the text as displayed plus one extra word and a few extra characters) and hit a button. In other words, if you can think it up and type it, that's all you really need to do -- all special formatting and 'magic' will be added afterwards by the FX team ;)

OK, actually: we'll be simply exchanging the 'complicated' stuff (HTML+js) for the few special characters, constructs and keywords that you must type (see the example above, and think something very similar to how you write posts on the forum). These will be both simple and stuff that you wouldn't type except on purpose.

[Edit: again, the "code" above is just an example of what you will need to type might end up looking like. The exact syntax and "funny" stuff will very likely vary, and I'll possibly add the option to define your own so you don't have to memorize anything strange.]

If this sets the bar low enough for you to keep an interest in creating exercises, please be sure to join the discussion here, a few posts down! :)

If you would like to help, but still have no idea how, please go on reading "the plan" (right below), or jump here. Thank you in advance!
You do not have the required permissions to view the files attached to this post.
Last edited by mrwarper on Thu May 05, 2022 10:32 am, edited 4 times in total.
3 x
MrWarper while HTLAL is offline.

User avatar
mrwarper
Orange Belt
Posts: 106
Joined: Sat Jul 18, 2015 4:06 pm
Languages: A bunch, in various stages
Language Log: http://how-to-learn-any-language.com/fo ... ?TID=39905
x 149
Contact:

The plan

Postby mrwarper » Sun May 01, 2022 10:53 am

As you can imagine, I only have come back here after some thought and work on the project, and a little help from my friends -- so we have a plan, and some things are halfway there already. The plan is

1. Find all possible kinds of simple and useful language exercises (those linked above are typical, good examples, but there should be more), and distill a set of 'exercise primitives' from them.

2. Find all HTML stuff that students might need to interact with to have answers checked on the spot, and will be used to implement exercises in 1.

3. Match the two sets above, and define all dynamic elements that can be used in exercises and their foreseen uses. This should determine all the exercises that can be possibly created.

4. Formulate what exactly you will need to type to create your own exercises in a simple way (think the BB 'language' used for posting on the forum).

I will detail more all of the points above over the next few posts (which will include some placeholders to be filled later with unforeseen stuff that may be good to have laid out contiguously). Those will be expanded into more full descriptions as necessary. Please be patient.
Last edited by mrwarper on Fri May 06, 2022 9:27 am, edited 5 times in total.
0 x
MrWarper while HTLAL is offline.

User avatar
mrwarper
Orange Belt
Posts: 106
Joined: Sat Jul 18, 2015 4:06 pm
Languages: A bunch, in various stages
Language Log: http://how-to-learn-any-language.com/fo ... ?TID=39905
x 149
Contact:

1a. Useful language exercise types

Postby mrwarper » Sun May 01, 2022 10:54 am

This is a list of useful language exercise types as found in traditional courses and materials, or as devised by users here, that the generator system should be able to create when complete. If an exercise type is not listed here, please drop me a note or post in this thread describing it, and/or providing an example.

The criteria that new exercise types should match to be added is that they must be:
-useful for language learning
-not depend on images or other non-textual elements, which are currently outside the intended scope of the generator

Exercise types found so far:
-Fill the gaps / fill the gaps using the hints provided / fill each gap with one of the options provided.
-Decide if true or false.
-Fill all of the gaps below using one of the following items.
-Mark the correct answer for each question.
-Match items of two different sets (e.g. columns).

To be further expanded as needed.
Last edited by mrwarper on Thu May 05, 2022 3:08 pm, edited 6 times in total.
1 x
MrWarper while HTLAL is offline.

User avatar
mrwarper
Orange Belt
Posts: 106
Joined: Sat Jul 18, 2015 4:06 pm
Languages: A bunch, in various stages
Language Log: http://how-to-learn-any-language.com/fo ... ?TID=39905
x 149
Contact:

1b. Exercise primitives identified so far

Postby mrwarper » Sun May 01, 2022 10:55 am

From the exercise types above, these are the minimal functional bits (or "primitives") that the exercises can be built from, to be checked automatically against known answers embedded invisibly in the text:

-Fill-in gap (optional: hint within the gap).
This is the simplest yet most useful exercise primitive I have identified so far, because it lets the student type anything without restrictions other than length.

-Check boxes: small text boxes that the student must check or leave unchecked, according to some initial global information, and some description for each box.

-Multiple choice: a set of ready-made options that the student can select as possible answers, only one of which is "right". This can be visually represented in several different ways: f.e. the options can be all visible from the start, and distributed either vertically (one per line) or horizontally (all on the same line), or they can appear as a drop-down list. As a 'primitive', though, they are all one and the same: a question with several possible answers, and only one to be chosen.

-Pooled choice: a set of several multiple choice questions, as defined above, that are connected by their drawing their answers from a shared list, in mutually exclusive fashion: i.e. an answer given to a multiple choice can't be used for the rest. Example: match pairs of things.

To be further expanded as needed.
Last edited by mrwarper on Sat May 21, 2022 11:00 am, edited 7 times in total.
0 x
MrWarper while HTLAL is offline.

User avatar
mrwarper
Orange Belt
Posts: 106
Joined: Sat Jul 18, 2015 4:06 pm
Languages: A bunch, in various stages
Language Log: http://how-to-learn-any-language.com/fo ... ?TID=39905
x 149
Contact:

2. HTML to be used in output (final, live form of exercises)

Postby mrwarper » Sun May 01, 2022 11:00 am

HTML UI elements that will be integrated in the exercise text. These will be used by students to provide their answers, which will be checked against the ones embedded invisibly within the text.
(Note: the word "element" is not necessarily used here as defined in HTML DOM technical documentation.)

-Entryfields (<input type="text" [...]): allow the user to type.
-Checkboxes (<input type="checkbox" [...]): these show a box the user can check.
-Radio buttons (<input type="radio" [...]): grouped in sets by sharing the same "name" attribute, they let the user select one option at a time within each set.

The elements above should be generally accompanied by some descriptive text. If in form of a <label> element with an appropriate CSS, this will offer the user an additional clickable area, and also change the cursor pointer when hovering the text to hint so.

-Dropdown lists (<select><option[...]</option></select>): these show one between all possible options at a time, except when the accompanying pushbutton is clicked, which shows them all temporarily.

-'Check answers' buttons (<input type="button|submit" [...]).

-Hidden variables (<input type="hidden" [...]): this is the natural place to embed the answers, for it is one HTML element intended to hold information that is never displayed from the start. Answers will be extracted from dynamic element definitions, an inserted back into the generated HTML code as hidden variables, effectively keeping answers separate from questions while making them directly available to the answer checking functions.

To be further expanded as needed.
Last edited by mrwarper on Fri May 06, 2022 9:24 am, edited 8 times in total.
0 x
MrWarper while HTLAL is offline.

User avatar
mrwarper
Orange Belt
Posts: 106
Joined: Sat Jul 18, 2015 4:06 pm
Languages: A bunch, in various stages
Language Log: http://how-to-learn-any-language.com/fo ... ?TID=39905
x 149
Contact:

More on HTML elements

Postby mrwarper » Sun May 01, 2022 11:01 am

TBD
0 x
MrWarper while HTLAL is offline.

User avatar
mrwarper
Orange Belt
Posts: 106
Joined: Sat Jul 18, 2015 4:06 pm
Languages: A bunch, in various stages
Language Log: http://how-to-learn-any-language.com/fo ... ?TID=39905
x 149
Contact:

3. Implementation: dynamic elements to be defined in exercises

Postby mrwarper » Sun May 01, 2022 11:02 am

Within each exercise you want to create, you will need to define one 'dynamic element' per student answer to be checked, as dictated by the exercise internal logic, or where student action is required (push a button to have answers checked). Each 'answer' dynamic element corresponds to one exercise primitive (f.e. multiple choice), but can be translated into somewhat different HTML UI bits depending on style preference within the same basic functional logic, for example:

-gaps to be filled are just that, but each one can be optionally pre-filled with something to give the student a hint, and they all work the same, i.e. the answers provided are checked against the right one.
-all possible answers to a multiple choice question can be visible from the start, or conveniently hidden away if not needed.

This post lays out the correspondence between each such dynamic (logical) element, and the HTML UI it will be translated into so students can provide their answers. (When ready, the generator will replace each dynamic element with all the appropriate HTML bits that are tedious and difficult to type by hand, and that are hard to use for exercises when created from an HTML editor.)

-Entryfields are the obvious choice for "fill the gaps", with the "value" attribute being perfect to place hints.
-Ditto for check boxes and UI checkboxes.
-Each multiple choice can be implemented either with a set of radio buttons (static, always visible), or with a dropdown list. Possible vertical layout of radio buttons (instead of horizontal) should be addressed considering possible interference with other processing systems.
-Pooled choices are probably best implemented with a dropdown list per choice. The answer pool should need to be written just once, and be optionally shown where defined, depending on the exact type of exercise.
-Check buttons. One per exercise, but one for the whole 'questionnaire' should be possible. One should be created at the end anyway if none are defined.

To be further expanded as needed.
Last edited by mrwarper on Fri May 06, 2022 8:50 am, edited 4 times in total.
0 x
MrWarper while HTLAL is offline.

User avatar
mrwarper
Orange Belt
Posts: 106
Joined: Sat Jul 18, 2015 4:06 pm
Languages: A bunch, in various stages
Language Log: http://how-to-learn-any-language.com/fo ... ?TID=39905
x 149
Contact:

More on implementation

Postby mrwarper » Sun May 01, 2022 11:03 am

TBD
0 x
MrWarper while HTLAL is offline.

User avatar
mrwarper
Orange Belt
Posts: 106
Joined: Sat Jul 18, 2015 4:06 pm
Languages: A bunch, in various stages
Language Log: http://how-to-learn-any-language.com/fo ... ?TID=39905
x 149
Contact:

4. Textual definition of dynamic elements

Postby mrwarper » Sun May 01, 2022 11:20 am

This is what you will need to type exactly, once everything else in the system generator is reasonably finished, to define each dynamic element within your exercises. Once done, the text for all dynamic elements will be automatically replaced at once by all of the necessary HTML UI elements and bits of javascript code.

-entryfield: TBD
-checkbox: TBD
-multiple choice: TBD
-pooled choice: TBD
-check button: TBD

To be expanded as necessary.
Last edited by mrwarper on Thu May 05, 2022 10:34 am, edited 2 times in total.
0 x
MrWarper while HTLAL is offline.

User avatar
mrwarper
Orange Belt
Posts: 106
Joined: Sat Jul 18, 2015 4:06 pm
Languages: A bunch, in various stages
Language Log: http://how-to-learn-any-language.com/fo ... ?TID=39905
x 149
Contact:

More on language definition of dynamic elements

Postby mrwarper » Sun May 01, 2022 11:20 am

TBD
0 x
MrWarper while HTLAL is offline.


Return to “General Language Discussion”

Who is online

Users browsing this forum: tastyonions and 2 guests