Short answer analysis
In a Lesson, the short answer question type has two methods of anaysis of a student's answer. This kind of analysis in NOT available for Quiz short answer questions. In a short answer question the student is expected to answer with one word or a few words. Short-Answer question type page give more information about this question type. Template:Moodle 1.6
Starting with Moodle 1.6, there are two different student answer analysis systems available for the Short Answer type of question: the simple system is used by default; the Regular Expressions system is used if it has been installed (it is an optional plugin) and the "Use Regular Expressions" option box has been checked on the Edit Question Page screen.
Simple analysis
In the (default) simple system of analysis, the comparisons ignore the case of the text. The asterisk (*) character can be used in answers as a "wild card" character. It stands for any number of characters (including no characters at all). For example, the expected answer "Long*" will match "longer", "longest" and "long". Please note, however, that the expected answer "Long*" will also match "longing", "longer than yours" and so forth. If a "wild card" type of student answer analysis is required, it is strongly recommended to use the regular expressions analysis system explained below. The matching process goes through the expected answers in the order they appear on the Edit screen. Once a match is found the process stops and the corresponding result (and response message, if present) is returned. So, if for example the expected answers are "Longest", "Long*" and "*" (in that order), the student's answer "longer" will match the second expected answer and, in this case, the third expected answer, although a match, is ignored. If one of the expected answers is just "*" (a single *) this expected answer will match anything. This is used as the last "catch-all" expected answer. You will use this "catch-all" asterisk if you want to provide the student with your own "wrong answer" feedback message instead of the default system "That's the Wrong Answer" message (or the equivalent in your own language pack). If an asterisk (*) is actually needed in an expected answer, you'll have to use the Regular Expressions analysis system and enter the asterisk as \*, backslash asterisk.
Regular Expressions analysis
This system gives you access to a more powerful but more complicated system for analysing the student's answers. For a complete introduction to Regular Expressions, see these sites http://www.zend.com/zend/tut/tutorial-delin2.php regular-expressions or http://rezeau.org/eao/developpement/expandRegexpToString.htm.
Correct answer matching a regular expression pattern
It is not possible to give complete examples of the vast possibilities offered by this system, and the following are just some possibilities.
Example 1.
- Suppose your question is "What are the colors of the French flag?".
- In the Answer 1 field you type this regular expression: "it’s blue, white(,| and) red/i". This will match any of those four student answers:
- it’s blue, white, red
- it’s blue, white and red
- It’s blue, white, red
- It’s blue, white and red
Note.- By default a regular expression match is case sensitive; to make the match case insensitive you must add the /i parameter right at the end of your expression.
Example 2.
- Question: "What is blue, or red, or yellow?".
- Answer: "(|it's )a colou?r". This will match:
- a colour
- a color
- it's a colour
- it's a color
Note.- The beginning of this regular expression "(|it's )" will match either nothing or "it's " (i.e. "it's" followed by a space). The ? (question-mark) means: preceding character zero or one time; it is used here to match British English as well as US spelling.
Example 3.
- Question: "Name an animal whose name is made of 3 letters and the middle letter is the vowel a".
- Answer: "[bcr]at". This will match:
- bat
- cat
- rat
Detecting missing required words or character strings
Regular expressions alone cannot detect absent character strings, so you have to add a little code in your Answer field to take care of this. Any expected answer which begins with a double hyphen will analyse the student’s answer to find out whether the following string is present or absent. If present, the analysis continues to the next question; if absent, the analysis stops and the relevant Response message is displayed.
Example 4.
- Question: "What are the colors of the French flag?"
- Answer 2: --.*blue.*/i
- student answer: "it's red and white"
- Response 2: The color of the sky is missing!
- Jump 2: this page
Here, the . (dot character) stands for “any character” and the * (asterisk) means “preceding special character repeated any number of times”. The Answer 2 regular expression above means: check whether the character string “blue”, preceded by anything and followed by anything is absent from the student's answer. Please note that the use of the asterisk is different in the Simple analysis system and in the Regular Expressions system.
Example 5.
- Question: "Name an animal whose name is made of 3 letters and the middle letter is the vowel a".
- Answer: "--[b|c|r]". Response: "Your answer should start with one of these letters: b, c or r"
Detecting unwanted (incorrect) words or character strings
You may want to detect, in the student's answer, the presence of one or several words which should be not be there (because they are wrong) and to single them out with a specific response. To do this, just start the expected answer in the Answer field with a double plus sign (++).
Example 6.
- Answer: ++(yellow|black|orange|green|black|pink)/i
- student answer: "it's blue, orange and white"
- Response: One or more colors are wrong!
- Jump: this page
Note.- If any of these (wrong) color names is detected in the student’s answer, then the negative feedback message (Response) will be displayed and the wrong strings will be colored red (or the color of the .incorrect class will be used if it exists in a CSS stylesheet of your current theme).
Example 7.
- Question: "Name an animal whose name is made of 3 letters and the middle letter is the vowel a".
- Answer: "++hat".
- Response: "You might wear one made of an animal's skin, but a hat can't be considered as an animal."
Escaping special characters
If you need to use characters which are part of the regular expressions set of special characters, you need to "escape" them (i.e. precede them with a backslash). E.g. if you want to accept the answer "My computer cost 1000$", you must write the regular expression as "My computer cost 1000\$".
The special characters which must be escaped are .^$*()[]+?|
Order of the expected answers
Because the program tries to match the student's answer with the teacher's expected answers in the order of the Answer fields, the order of those expected answers is of the greatest importance. The best analysis system will be achieved by a careful combination of regular expressions and order of expected answers. Of course, any question programed with the Regular expressions system will have to be thoroughly tested by the teacher before being released in a Lesson.
NOTE
There is a fundamental problem with this type of question. If you ask a question like "Who wrote Elegy written in a Country Churchyard?" as a Short Answer question it's fine for the students who know the answer. But how about those who do not? To avoid those students getting stuck in a loop the Lesson module has a "Maximum number of Attempts" parameter which sets an upper limit on the number of times a student can attempt a question. The default value is 5 times. (This can be reduced to 1 if you wanted students to have only one attempt at each question.)
There is a slight complication here . The "Maximum number of Attempts" mechanism relies on looking at the record of attempts. That is fine for students as their attempts are all recorded. However, when - as a teacher - you preview a lesson, your attempts are not recorded. (The attempts are used to calculate grades and as teachers aren't interested in their own grades...) So teachers are not subject to the number of answers limit. But they should know the answers, shouldn't they!