<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jeffjeff</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jeffjeff"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Jeffjeff"/>
	<updated>2026-04-10T09:45:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jeff_Forssell&amp;diff=64063</id>
		<title>User:Jeff Forssell</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jeff_Forssell&amp;diff=64063"/>
		<updated>2024-01-25T13:46:03Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I was Born In Buffalo NY USA 1945. I have lived in Sweden since 1964.&lt;br /&gt;
&lt;br /&gt;
I have a Swedish Fil. Lic. (about Masters degree) in physics and have been a Math Physics teacher for many years. I worked with adult distant education at the [[http://web.archive.org/web/20041009224241/http://www.cfl.se/?sid=60 Swedish Agency for Flexible Learning]], in Härnösand from 1996-2008. After that I&#039;ve taken Moodle certification 100, 101 and 200 and am starting to learn PHP. Any interesting jobs, especially in English-speaking countries, especially involving Moodle, would be interesting to hear about!). I have given distance consulting to several Moodle sites and have registered a firm, Tupo Media.&lt;br /&gt;
&lt;br /&gt;
I have also worked 2*2 years in Tanzania. (see: https://tupomedia.se/?s=tanzania .) I speak (Am.) English, Swedish and Swahili (and rusty German in an emergency and Duolingo Spanish in a pinch)&lt;br /&gt;
&lt;br /&gt;
I have a site at [http://www.tupo.biz http://www.TupoMedia.se]&lt;br /&gt;
&lt;br /&gt;
Main special interest are the quiz questions that are flexible, give teaching feedback, able to interpret mathematical answers including units, that collect feedback from users. &lt;br /&gt;
&lt;br /&gt;
I have written a page about feedback &amp;quot;for all elements&amp;quot;, not just quiz questions here: &amp;lt;nowiki&amp;gt;https://docs.moodle.org/dev/Feedback_link_for_all_elements&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I would still like that to be created, and I still don&#039;t think it has been created. Developer Hunt said it should be &amp;quot;easy&amp;quot; when Moodle went over to the &amp;quot;new 2.0.   If that&#039;s true I could even imagine that I could privately pay someone to do that, or help me get started at least. I have almost no PHP experience.&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Feedback_link_for_all_elements&amp;diff=55294</id>
		<title>Feedback link for all elements</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Feedback_link_for_all_elements&amp;diff=55294"/>
		<updated>2018-12-21T13:05:03Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a work in progress when I find the time. Sometimes there is obvious repetition that I haven&#039;t cleaned up yet.  &lt;br /&gt;
&lt;br /&gt;
The web is more and more social in that the users/readers of content are more and more invited to influence the content. This is especially true for support pages that are for helping ie. (these links may need updating) [http://documents.google.com/support/spreadsheets/bin/answer.py?answer=87589 Google &amp;quot;was this helpful?&amp;quot;];  [http://office.microsoft.com/en-us/powerpoint/HP030713791033.aspx?pid=CH063500491033 Microsofts ditto].&lt;br /&gt;
&lt;br /&gt;
Therefore it seems very important that this feature is lacking in Moodle, especially considering its social constructivistic underpinnings. It seems natural that this should be implemented, indeed almost a glaring miss.&lt;br /&gt;
&lt;br /&gt;
There is a form for collecting feedback ([https://docs.moodle.org/en/Development:Feedback  documentation] [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=95 download]) in Moodle which can be used for making course evaluations etc. The problem is that it is difficult to get people to spontaneously report suggestions, criticisms etc at all. If they have to find and go to another page, formulate a description of where they came from and what they want, felt etc, there are few that will do it, and the quality of the feedback will often lack crucial details so it may be useless. &lt;br /&gt;
&lt;br /&gt;
Collecting feedback in a general form at the end of a course has many lacks. The students are poorly motivated (they won&#039;t be getting any use of changes that are made). Many annoyances, suggestions will have been forgotten. Those that are remembered will be difficult to describe accurately.&lt;br /&gt;
&lt;br /&gt;
One way of nicely collecting feedback for an HTML page is to use a forum page as if it were an ordinary webpage. Then, after the content you put into the top, there is a forum at the bottom which can receive feedback and can have some soc. const. advantages over my proposal. But this wouldn&#039;t work for other kinds of pages/elements.&lt;br /&gt;
&lt;br /&gt;
Having some kind of general course feedback early in a course is a good idea and can, of course, meet the first problem (that the pupil&#039;s feedback usually doesn&#039;t effect the on-going course).&lt;br /&gt;
&lt;br /&gt;
=Which Elements?=&lt;br /&gt;
==Page==&lt;br /&gt;
The properties that would be good to include:&lt;br /&gt;
*No response&lt;br /&gt;
*General rating&lt;br /&gt;
*Lacking: &lt;br /&gt;
**Linkage&lt;br /&gt;
**Content&lt;br /&gt;
**Language&lt;br /&gt;
***grammar&lt;br /&gt;
***spelling&lt;br /&gt;
*Suggestions&lt;br /&gt;
* Automatically (javascript) generated info about the browser, operating system, screen and window size, plugin availability. Often the user wouldn&#039;t even know these things, and they could be critically helpful for the page editor.&lt;br /&gt;
&lt;br /&gt;
Here is an example of [http://tupo.biz/kurser/gemensam/kommunikation/PageFeedbackFormExpand.htm a page feedback form]. The form has many of the things that I&#039;d like to include. I would be like to have a small page with expandable fields connected to checked types. Only the first two checks are implemented in this. It does have a JavaScript that in the background includes auto-generated information in the form submission.&lt;br /&gt;
&lt;br /&gt;
This microSoft page had some interesting questions:&lt;br /&gt;
&lt;br /&gt;
 Provide feedback on this information&lt;br /&gt;
 Did this information solve your problem?&lt;br /&gt;
  Yes &lt;br /&gt;
  No &lt;br /&gt;
  I don&#039;t know &lt;br /&gt;
&lt;br /&gt;
 Was this information relevant?&lt;br /&gt;
  Yes &lt;br /&gt;
  No &lt;br /&gt;
&lt;br /&gt;
 How much effort did you personally put forth to use this article?&lt;br /&gt;
  Very low &lt;br /&gt;
  Low &lt;br /&gt;
  Moderate &lt;br /&gt;
  High &lt;br /&gt;
  Very high &lt;br /&gt;
 &lt;br /&gt;
 What can we do to improve this information?&lt;br /&gt;
&lt;br /&gt;
==Quiz questions (even lesson and feedback and questionnaire?)==&lt;br /&gt;
This is very important. If I had to chose between Page  and Question, I&#039;d chose question feedback.&lt;br /&gt;
&lt;br /&gt;
Since evaluation questions are very important to the learners, they are very motivated to see that they are clear.&lt;br /&gt;
&lt;br /&gt;
This can also be a way to make students an active part of the quiz creation/improvement process. Dennis Daniels has been trying to [http://video.google.com/videoplay?docid=5678154150724088700&amp;amp;q=dennis+daniels+moodle+quiz&amp;amp;total=35&amp;amp;start=0&amp;amp;num=10&amp;amp;so=0&amp;amp;type=search&amp;amp;plindex=7 push for this possibility]. He calls it &amp;quot;question challenge&amp;quot;. A possible use scenario: The teacher quickly prepares a quiz with minimal answer alternatives and makes it available to the fastest students. These are encouraged to add more answer alternatives with motivations, and react to the existing formulation, grading and feedback. The teacher reviews their feedback and easily incorporates the useful suggestions into the test before the main body of students try the quiz. &lt;br /&gt;
&lt;br /&gt;
There are many possible parts that can be specific to the feedback for questions.&lt;br /&gt;
&lt;br /&gt;
Is the question itself clear? This might be able to be covered by the same fields that are of interest for general feedback for pages.&lt;br /&gt;
&lt;br /&gt;
This CBM possibility has since been implemented in newer Moodles: Is my answer considered wrong though I feel it is right? It would be good to include a &amp;quot;certainty&amp;quot; rating. Certainty Based Marking, CBM, is a very valuable form of quiz feedback. It would be good to think about it at the same time as other quiz feedback. It is often a 3-step scale.: C1 C2 C3 where 1 is quite uncertain and 3 is very certain. Many teachers would appreciate the ability to connect the certainty to the grading of the question. But even while the grading implementation has not been successfully made yet, it would be valuable feedback for the teacher. &amp;quot;Hmm a lot of students have this right, but almost all of them are very uncertain about it.&amp;quot; or &amp;quot;Hmm, this student was very certain about this incorrect answer.&lt;br /&gt;
&lt;br /&gt;
Is the feedback I get for my answer: unclear, incorrect, possible to improve?&lt;br /&gt;
&lt;br /&gt;
Does the user have other answers that (s)he was tempted to try? Usually people make similar mistakes and this could be a valuable resource for giving better feedback to common mistakes and for creating good &amp;quot;distractors&amp;quot; for multiple choice questions.&lt;br /&gt;
&lt;br /&gt;
When a quiz editor receives feedback on a question it should be easy to use it to develop the question. Prepared fields may depend on the question type. &amp;quot;the answer I would have used&amp;quot;, &amp;quot;an answer I might have used&amp;quot;, &amp;quot;my motivation&amp;quot;. The first 2 could be used to make new answer alternatives. The last as foundation for feedback for that answer. There should be a field for explaining how the learner got the answer. This could be the basis for the feedback field for that answer, if the teacher should chose to include that answer.There should be a field for explaining how the learner got the answer. This could be the basis for the feedback field for that answer, if the teacher should chose to include that answer.&lt;br /&gt;
&lt;br /&gt;
===Question feedback form fields===&lt;br /&gt;
&lt;br /&gt;
  There are prepared fields below to help you formulate your&lt;br /&gt;
  feedback, but in case you feel like&lt;br /&gt;
  &amp;quot;&#039;&#039;I would rather just explain in my own words&#039;&#039;&amp;quot;: ...............&lt;br /&gt;
  ............................................................&lt;br /&gt;
  ............................................................&lt;br /&gt;
&lt;br /&gt;
  [_]question/[X]word in this question unclear&lt;br /&gt;
     (check on word-&amp;gt; expand to: which word: ____________  ) &lt;br /&gt;
   a)possible interpretation 1 __________________________&lt;br /&gt;
   b)possible interpretation(s) 2, ... _____________________________&lt;br /&gt;
&lt;br /&gt;
  [_]grade questionable, motivation: ______________________________  &lt;br /&gt;
    (this perspective maybe the teacher should be able to choose not to ask about)&lt;br /&gt;
&lt;br /&gt;
  answer feedback [_]wrong/[_]unclear (this would be for the answer that was active&lt;br /&gt;
     when the feedback button was pushed, and automatically included)&lt;br /&gt;
     What was wrong/unclear: ________________________________&lt;br /&gt;
     Suggested improvement: _________________________________&lt;br /&gt;
&lt;br /&gt;
  Other possible answers:&lt;br /&gt;
  [_]Best possible, [_]acceptable, [_]should get partial credit, [_]Not right but probable&lt;br /&gt;
   (if last two are checked expand to: Suggested credit [____]% )&lt;br /&gt;
   answer: ________________________________________________&lt;br /&gt;
   motivation: ____________________________________________&lt;br /&gt;
   (how one would get this answer.) &lt;br /&gt;
&lt;br /&gt;
  [_]More possible answers? (gives more fields like above)&lt;br /&gt;
    &lt;br /&gt;
Social bookmarking is important since what&#039;s good for the goose isn&#039;t always good for the gander! The grade goal of students varies and this can mean that a highly rated resource for one person could be useless for another. Therefore a rating should be able to be connected to information about the user. Anonymous (though visible for admin if breaking netiquette) ratings are better than none, though the value would be increased if complemented by some info like grade goal, special branch, language proficiency, disabilities, etc.&lt;br /&gt;
&lt;br /&gt;
=Who would the feedback go to?=&lt;br /&gt;
&lt;br /&gt;
There could be some parts of a Moodle distribution that are default set to collect feedback. The pages that are for administrators, teacher editors should be of interest to Moodle developers. Help pages should collect to the documenters. It should be possible to turn off these default settings if a site doesn&#039;t want to participate.&lt;br /&gt;
&lt;br /&gt;
The other parts could choose at different levels, admin, course developer, teacher, to invite feedback for specific courses, pages, questions and which recipients would get it.&lt;br /&gt;
&lt;br /&gt;
Another consideration is making feedback easier/possible for people using Moodle off line. There are many situations, especially in many places in developing countries, where Internet access is poor, slow or nonexistent. Moodle is still usable on LAN or even a single computer or on a USB memory stick that can be used on different computers, some on line some off line. It would be good if there were preparations made for saving up feedback for when coming on line or for exporting to a file that could be sent on a floppy, through a mobile phone etc to someone on line.&lt;br /&gt;
&lt;br /&gt;
==Some Examples==&lt;br /&gt;
&lt;br /&gt;
Developers have made a new version of some component in Moodle and are  really not sure about if it will be easily understood and function well. They can than choose to set a VERY Inviting feedback link. &amp;quot;This page is new and we would really like suggestions about how to make it better&amp;quot;&lt;br /&gt;
The feedback choice will be default in Moodle packages and the developers will get the feedback from any site that doesn&#039;t turn it off (and has a user giving feedback). The form should contain all the fields, as many as possible automatically, that would be needed to interface with the Tracker: first for search, then for entering a new bug/feature. &lt;br /&gt;
&lt;br /&gt;
A school administrator would like to collect any views that anyone using the site has about pages and turns on a more general feedback invitation: &amp;quot;If this page doesn&#039;t meet your needs, please tell us!&amp;quot; (S)he choses to have the feedback go to (her)him and to the course teacher in charge of the course containing the page. Some administrators have wished for a channel for getting info, questions, suggestions even from non-registered visitors (usually on the front page but perhaps even in other guest open courses). Feedback from non-registered visitors should probably include a reCaptcha antispam protection. &lt;br /&gt;
&lt;br /&gt;
A teacher could want to have students rate pages to be able to give other students a Social bookmarking guide especially if there is a lot of varied material that everybody isn&#039;t expected to go through. Or compare the webpages with the textbook. [the book was better][Both were needed][the webpage better][Neither helped much]. This particular type of feedback would be good to be able to display for the students, perhaps tagged according to grade goals, previous experience, math love/hate, etc.&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/browse/MDL-18067 The Moodle tracker issue for this suggestion.]&lt;br /&gt;
&lt;br /&gt;
[http://blog.pbwiki.com/2008/03/28/the-foolproof-5-step-way-to-answer-tough-questions/ A blog post about answering tough questions] includes &amp;quot;Check afterwards to see if the questioner feels satisfied.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Feedback_link_for_all_elements&amp;diff=46895</id>
		<title>Feedback link for all elements</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Feedback_link_for_all_elements&amp;diff=46895"/>
		<updated>2014-11-23T11:57:05Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Quiz questions (even lesson and feedback and questionnaire?) */ CBM has been implemented in Moodle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a work in progress when I find the time. Sometimes there is obvious repetition that I haven&#039;t cleaned up yet.  &lt;br /&gt;
&lt;br /&gt;
The web is more and more social in that the users/readers of content are more and more invited to influence the content. This is especially true for support pages that are for helping ie. [http://documents.google.com/support/spreadsheets/bin/answer.py?answer=87589 Google &amp;quot;was this helpful?&amp;quot;];  [http://office.microsoft.com/en-us/powerpoint/HP030713791033.aspx?pid=CH063500491033 Microsofts ditto].&lt;br /&gt;
&lt;br /&gt;
Therefore it seems very important that this feature is lacking in Moodle, especially considering its social constructivistic underpinnings. It seems natural that this should be implemented, indeed almost a glaring miss.&lt;br /&gt;
&lt;br /&gt;
There is a form for collecting feedback ([https://docs.moodle.org/en/Development:Feedback  documentation] [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=95 download]) in Moodle which can be used for making course evaluations etc. The problem is that it is difficult to get people to spontaneously report suggestions, criticisms etc at all. If they have to find and go to another page, formulate a description of where they came from and what they want, felt etc, there are few that will do it, and the quality of the feedback will often lack crucial details so it may be useless. &lt;br /&gt;
&lt;br /&gt;
Collecting feedback in a general form at the end of a course has many lacks. The students are poorly motivated (they won&#039;t be getting any use of changes that are made). Many annoyances, suggestions will have been forgotten. Those that are remembered will be difficult to describe accurately.&lt;br /&gt;
&lt;br /&gt;
One way of nicely collecting feedback for an HTML page is to use a forum page as if it were an ordinary webpage. Then, after the content you put into the top, there is a forum at the bottom which can receive feedback and can have some soc. const. advantages over my proposal. But this wouldn&#039;t work for other kinds of pages/elements.&lt;br /&gt;
&lt;br /&gt;
Having some kind of general course feedback early in a course is a good idea and can, of course, meet the first problem (that the pupil&#039;s feedback usually doesn&#039;t effect the on-going course).&lt;br /&gt;
&lt;br /&gt;
=Which Elements?=&lt;br /&gt;
==Page==&lt;br /&gt;
The properties that would be good to include:&lt;br /&gt;
*No response&lt;br /&gt;
*General rating&lt;br /&gt;
*Lacking: &lt;br /&gt;
**Linkage&lt;br /&gt;
**Content&lt;br /&gt;
**Language&lt;br /&gt;
***grammar&lt;br /&gt;
***spelling&lt;br /&gt;
*Suggestions&lt;br /&gt;
* Automatically (javascript) generated info about the browser, operating system, screen and window size, plugin availability. Often the user wouldn&#039;t even know these things, and they could be critically helpful for the page editor.&lt;br /&gt;
&lt;br /&gt;
Here is an example of [http://tupo.biz/kurser/gemensam/kommunikation/PageFeedbackFormExpand.htm a page feedback form]. The form has many of the things that I&#039;d like to include. I would be like to have a small page with expandable fields connected to checked types. Only the first two checks are implemented in this. It does have a JavaScript that in the background includes auto-generated information in the form submission.&lt;br /&gt;
&lt;br /&gt;
This microSoft page had some interesting questions:&lt;br /&gt;
&lt;br /&gt;
 Provide feedback on this information&lt;br /&gt;
 Did this information solve your problem?&lt;br /&gt;
  Yes &lt;br /&gt;
  No &lt;br /&gt;
  I don&#039;t know &lt;br /&gt;
&lt;br /&gt;
 Was this information relevant?&lt;br /&gt;
  Yes &lt;br /&gt;
  No &lt;br /&gt;
&lt;br /&gt;
 How much effort did you personally put forth to use this article?&lt;br /&gt;
  Very low &lt;br /&gt;
  Low &lt;br /&gt;
  Moderate &lt;br /&gt;
  High &lt;br /&gt;
  Very high &lt;br /&gt;
 &lt;br /&gt;
 What can we do to improve this information?&lt;br /&gt;
&lt;br /&gt;
==Quiz questions (even lesson and feedback and questionnaire?)==&lt;br /&gt;
This is very important. If I had to chose between Page  and Question, I&#039;d chose question feedback.&lt;br /&gt;
&lt;br /&gt;
Since evaluation questions are very important to the learners, they are very motivated to see that they are clear.&lt;br /&gt;
&lt;br /&gt;
This can also be a way to make students an active part of the quiz creation/improvement process. Dennis Daniels has been trying to [http://video.google.com/videoplay?docid=5678154150724088700&amp;amp;q=dennis+daniels+moodle+quiz&amp;amp;total=35&amp;amp;start=0&amp;amp;num=10&amp;amp;so=0&amp;amp;type=search&amp;amp;plindex=7 push for this possibility]. He calls it &amp;quot;question challenge&amp;quot;. A possible use scenario: The teacher quickly prepares a quiz with minimal answer alternatives and makes it available to the fastest students. These are encouraged to add more answer alternatives with motivations, and react to the existing formulation, grading and feedback. The teacher reviews their feedback and easily incorporates the useful suggestions into the test before the main body of students try the quiz. &lt;br /&gt;
&lt;br /&gt;
There are many possible parts that can be specific to the feedback for questions.&lt;br /&gt;
&lt;br /&gt;
Is the question itself clear? This might be able to be covered by the same fields that are of interest for general feedback for pages.&lt;br /&gt;
&lt;br /&gt;
This CBM possibility has since been implemented in newer Moodles: Is my answer considered wrong though I feel it is right? It would be good to include a &amp;quot;certainty&amp;quot; rating. Certainty Based Marking, CBM, is a very valuable form of quiz feedback. It would be good to think about it at the same time as other quiz feedback. It is often a 3-step scale.: C1 C2 C3 where 1 is quite uncertain and 3 is very certain. Many teachers would appreciate the ability to connect the certainty to the grading of the question. But even while the grading implementation has not been successfully made yet, it would be valuable feedback for the teacher. &amp;quot;Hmm a lot of students have this right, but almost all of them are very uncertain about it.&amp;quot; or &amp;quot;Hmm, this student was very certain about this incorrect answer.&lt;br /&gt;
&lt;br /&gt;
Is the feedback I get for my answer: unclear, incorrect, possible to improve?&lt;br /&gt;
&lt;br /&gt;
Does the user have other answers that (s)he was tempted to try? Usually people make similar mistakes and this could be a valuable resource for giving better feedback to common mistakes and for creating good &amp;quot;distractors&amp;quot; for multiple choice questions.&lt;br /&gt;
&lt;br /&gt;
When a quiz editor receives feedback on a question it should be easy to use it to develop the question. Prepared fields may depend on the question type. &amp;quot;the answer I would have used&amp;quot;, &amp;quot;an answer I might have used&amp;quot;, &amp;quot;my motivation&amp;quot;. The first 2 could be used to make new answer alternatives. The last as foundation for feedback for that answer. There should be a field for explaining how the learner got the answer. This could be the basis for the feedback field for that answer, if the teacher should chose to include that answer.There should be a field for explaining how the learner got the answer. This could be the basis for the feedback field for that answer, if the teacher should chose to include that answer.&lt;br /&gt;
&lt;br /&gt;
===Question feedback form fields===&lt;br /&gt;
&lt;br /&gt;
  There are prepared fields below to help you formulate your&lt;br /&gt;
  feedback, but in case you feel like&lt;br /&gt;
  &amp;quot;&#039;&#039;I would rather just explain in my own words&#039;&#039;&amp;quot;: ...............&lt;br /&gt;
  ............................................................&lt;br /&gt;
  ............................................................&lt;br /&gt;
&lt;br /&gt;
  [_]question/[X]word in this question unclear&lt;br /&gt;
     (check on word-&amp;gt; expand to: which word: ____________  ) &lt;br /&gt;
   a)possible interpretation 1 __________________________&lt;br /&gt;
   b)possible interpretation(s) 2, ... _____________________________&lt;br /&gt;
&lt;br /&gt;
  [_]grade questionable, motivation: ______________________________  &lt;br /&gt;
    (this perspective maybe the teacher should be able to choose not to ask about)&lt;br /&gt;
&lt;br /&gt;
  answer feedback [_]wrong/[_]unclear (this would be for the answer that was active&lt;br /&gt;
     when the feedback button was pushed, and automatically included)&lt;br /&gt;
     What was wrong/unclear: ________________________________&lt;br /&gt;
     Suggested improvement: _________________________________&lt;br /&gt;
&lt;br /&gt;
  Other possible answers:&lt;br /&gt;
  [_]Best possible, [_]acceptable, [_]should get partial credit, [_]Not right but probable&lt;br /&gt;
   (if last two are checked expand to: Suggested credit [____]% )&lt;br /&gt;
   answer: ________________________________________________&lt;br /&gt;
   motivation: ____________________________________________&lt;br /&gt;
   (how one would get this answer.) &lt;br /&gt;
&lt;br /&gt;
  [_]More possible answers? (gives more fields like above)&lt;br /&gt;
    &lt;br /&gt;
Social bookmarking is important since what&#039;s good for the goose isn&#039;t always good for the gander! The grade goal of students varies and this can mean that a highly rated resource for one person could be useless for another. Therefore a rating should be able to be connected to information about the user. Anonymous (though visible for admin if breaking netiquette) ratings are better than none, though the value would be increased if complemented by some info like grade goal, special branch, language proficiency, disabilities, etc.&lt;br /&gt;
&lt;br /&gt;
=Who would the feedback go to?=&lt;br /&gt;
&lt;br /&gt;
There could be some parts of a Moodle distribution that are default set to collect feedback. The pages that are for administrators, teacher editors should be of interest to Moodle developers. Help pages should collect to the documenters. It should be possible to turn off these default settings if a site doesn&#039;t want to participate.&lt;br /&gt;
&lt;br /&gt;
The other parts could choose at different levels, admin, course developer, teacher, to invite feedback for specific courses, pages, questions and which recipients would get it.&lt;br /&gt;
&lt;br /&gt;
Another consideration is making feedback easier/possible for people using Moodle off line. There are many situations, especially in many places in developing countries, where Internet access is poor, slow or nonexistent. Moodle is still usable on LAN or even a single computer or on a USB memory stick that can be used on different computers, some on line some off line. It would be good if there were preparations made for saving up feedback for when coming on line or for exporting to a file that could be sent on a floppy, through a mobile phone etc to someone on line.&lt;br /&gt;
&lt;br /&gt;
==Some Examples==&lt;br /&gt;
&lt;br /&gt;
Developers have made a new version of some component in Moodle and are  really not sure about if it will be easily understood and function well. They can than choose to set a VERY Inviting feedback link. &amp;quot;This page is new and we would really like suggestions about how to make it better&amp;quot;&lt;br /&gt;
The feedback choice will be default in Moodle packages and the developers will get the feedback from any site that doesn&#039;t turn it off (and has a user giving feedback). The form should contain all the fields, as many as possible automatically, that would be needed to interface with the Tracker: first for search, then for entering a new bug/feature. &lt;br /&gt;
&lt;br /&gt;
A school administrator would like to collect any views that anyone using the site has about pages and turns on a more general feedback invitation: &amp;quot;If this page doesn&#039;t meet your needs, please tell us!&amp;quot; (S)he choses to have the feedback go to (her)him and to the course teacher in charge of the course containing the page. Some administrators have wished for a channel for getting info, questions, suggestions even from non-registered visitors (usually on the front page but perhaps even in other guest open courses). Feedback from non-registered visitors should probably include a reCaptcha antispam protection. &lt;br /&gt;
&lt;br /&gt;
A teacher could want to have students rate pages to be able to give other students a Social bookmarking guide especially if there is a lot of varied material that everybody isn&#039;t expected to go through. Or compare the webpages with the textbook. [the book was better][Both were needed][the webpage better][Neither helped much]. This particular type of feedback would be good to be able to display for the students, perhaps tagged according to grade goals, previous experience, math love/hate, etc.&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/browse/MDL-18067 The Moodle tracker issue for this suggestion.]&lt;br /&gt;
&lt;br /&gt;
[http://blog.pbwiki.com/2008/03/28/the-foolproof-5-step-way-to-answer-tough-questions/ A blog post about answering tough questions] includes &amp;quot;Check afterwards to see if the questioner feels satisfied.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jeff_Forssell&amp;diff=19788</id>
		<title>User:Jeff Forssell</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jeff_Forssell&amp;diff=19788"/>
		<updated>2010-11-23T09:52:05Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I was Born In Buffalo NY USA 1945. I have lived in Sweden since 1964.&lt;br /&gt;
&lt;br /&gt;
I have a Swedish Fil. Lic. (about Masters degree) in physics and have been a Math Physics teacher for many years. I worked with adult distant education at the [[http://web.archive.org/web/20041009224241/http://www.cfl.se/?sid=60 Swedish Agency for Flexible Learning]], in Härnösand from 1996-2008. After that I&#039;ve taken Moodle certification 100, 101 and 200 and am starting to learn PHP. Any interesting jobs, especially in English-speaking countries, especially involving Moodle, would be interesting to hear about!). I have given distance consulting to several Moodle sites and have registered a firm, Tupo Media.&lt;br /&gt;
&lt;br /&gt;
I have also worked 2*2 years in Tanzania. (see: http://biphome.spray.se/jeff.forssell/index.html but I&#039;ve learned a lot of html since I made that.) I speak (Am.) English, Swedish and Swahili (and rusty German in an emergency)&lt;br /&gt;
&lt;br /&gt;
I have a site at http://www.tupo.biz&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jeff_Forssell&amp;diff=19787</id>
		<title>User:Jeff Forssell</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jeff_Forssell&amp;diff=19787"/>
		<updated>2010-11-22T12:07:24Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I was Born In Buffalo NY USA 1945. I have lived in Sweden since 1964.&lt;br /&gt;
&lt;br /&gt;
I have a Swedish Fil. Lic. (about Masters degree) in physics and have been a Math Physics teacher for many years. I worked with adult distant education at the [[http://web.archive.org/web/20041009224241/http://www.cfl.se/?sid=60 Swedish Agency for Flexible Learning]], in Härnösand from 1996-2008. After that I&#039;ve taken Moodle certification 100, 101 and 200 and am starting to learn PHP. Any interesting jobs, especially in English-speaking countries, especially involving Moodle, would be interesting to hear about!). I have given distance consulting to several Moodle sites and have a firma, Tupo Media.&lt;br /&gt;
&lt;br /&gt;
I have also worked 2*2 years in Tanzania. (see: http://biphome.spray.se/jeff.forssell/index.html but I&#039;ve learned a lot of html since I made that.) I speak (Am.) English, Swedish and Swahili (and rusty German in an emergency)&lt;br /&gt;
&lt;br /&gt;
I have a site at http://www.tupo.biz&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=28000</id>
		<title>Talk:Setting up Netbeans</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=28000"/>
		<updated>2010-08-15T21:04:39Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CVS instructions ==&lt;br /&gt;
&lt;br /&gt;
I copied the instructions from [[User:Gary_Anderson| Gary Anderson]]&#039;s &#039;&#039;NetBeans for Moodle Development course&#039;&#039; (http://moodle2.seattleacademy.org/wiki/index.php/Get_the_Moodle_Software, http://moodle2.seattleacademy.org/course/view.php?id=5). There might be some redundancies which still have to be amended. --[[User:Frank Ralf|Frank Ralf]] 09:43, 20 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I was in the Gary Andersson course and there was a prepared package there with both NetBeans and Moodle. But Right now I can&#039;t get to that course at all. I am setting up on another computer and would like to have the latest NetBeans 6.7, and set up Moodle preferably both 1.9.5+ and HEAD 2.0. &lt;br /&gt;
&lt;br /&gt;
: When I see the instructions here I don&#039;t see anything about getting the xamp server setup. &lt;br /&gt;
&lt;br /&gt;
: I also wonder about if one should maybe use a complete install package first than connect that to NetBeans and after that try doing CVS updating through NetBeans. (I maybe wrong, but I assume that doing a complete install via CVS would take much longer.)  I also assume that I must than create an extra Moodle database in MySQL and of course a separate folder if I want to install 2.0 also.  [[User:Jeff Forssell|Jeff Forssell]] 13:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Hi Jeff, If you want to use CVS you should do a manual installation.&lt;br /&gt;
::* Setting up XAMPP is nothing more than downloading and unpacking it, really painless. The web server&#039;s directory will be \htdocs\.&lt;br /&gt;
::* Then you install NetBeans 6.7 and do separate CVS checkouts for HEAD (2.0) and 1.9.5 into separate directories (e.g. \htdocs\moodle19\ and \htdocs\moodle20\.&lt;br /&gt;
::* Then you can run Moodle 1.9.5 under &amp;quot;localhost/moodle19/&amp;quot; in your browser and Moodle &amp;quot;localhost/moodle20/&amp;quot;. &lt;br /&gt;
:: Further details for manually setting up Moodle you&#039;ll find under [[Windows installation using XAMPP]]. hth --[[User:Frank Ralf|Frank Ralf]] 13:42, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Thanx&lt;br /&gt;
&lt;br /&gt;
:::I&#039;ve done lots of xampp installs of the Moodle complete packages, but never just xampp alone. Should I interpret your answer as I have to install Moodle via CVS if I want to use CVS to keep it updated? And that it won&#039;t be ridiculously long time doing the original checkout? In the GA course we did a CVS update of the original install, but I don&#039;t know if he had done that package by doing a CVS checkout. (It just doesn&#039;t feel like that was what was going on!) &lt;br /&gt;
:::: The first checkout might take some time, but as far as I remember it&#039;s done in about 15 minutes. --[[User:Frank Ralf|Frank Ralf]] 16:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Oh well I suppose it&#039;s time to learn to create MySQL databases for Moodle without complete packages or Fantastico! [[User:Jeff Forssell|Jeff Forssell]] 15:04, 9 July 2009 (UTC)&lt;br /&gt;
:::: XAMPP comes with PHPMyAdmin for MySQL administration. That&#039;s a very useful tool and worth exploring. --[[User:Frank Ralf|Frank Ralf]] 16:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: Just another thing: Moodle 2.0 requires quite recent versions of PHP and MySQL. So for using HEAD I had to install a new version of XAMPP (I have two versions installed on my development machine which is no problem, you only should not run them at the same time). --[[User:Frank Ralf|Frank Ralf]] 16:14, 9 July 2009 (UTC)&lt;br /&gt;
::::: I have now CVSed moodle 1.9 with NetBeans - it took less than 10 mins. Created a new project. Then it started &amp;quot;scanning projects&amp;quot; - I didn&#039;t know what it is doing and it wasn&#039;t finished after more than 10 minutes. I see now that it has stopped. Anyhow now I\ve also done the same with HEAD / moodle20.&lt;br /&gt;
&lt;br /&gt;
:::::I have some hesitation about trying to &amp;quot;run&amp;quot; them. Anything one should do before that other than creating the projects?  [[User:Jeff Forssell|Jeff Forssell]] 08:55, 10 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: I see when trying to RUN that my moodle 2.0 is in http://localhost/moodle20/moodle/install.php while i thought it would be in http://localhost/moodle20/install.php. Maybe that&#039;s good because the NB proj files are in a folder there too. &lt;br /&gt;
&lt;br /&gt;
:::::When I get to the &amp;quot;web address&amp;quot; page that is greyed out. I was hoping to try out setting the computer name so I could access from others on my intranet. How can I change that (from &amp;quot;localhost&amp;quot;)?&lt;br /&gt;
&lt;br /&gt;
:::::: Hi Jeff, I would suggest moving this discussion to the appropriate forum to give more people the chance to join. This here is quite a private place and should preferably only be used for issues directly connected to this Moodle Docs page. Thanks in advance! --[[User:Frank Ralf|Frank Ralf]] 10:29, 10 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::: Which is &amp;quot;the appropriate forum&amp;quot; for this subject? [[User:Jeff Forssell|Jeff Forssell]] 21:04, 15 August 2010 (UTC)&lt;br /&gt;
:::::: &amp;quot;localhost&amp;quot; is always the local PC itself. You can access it from other computers by using the PC&#039;s IP address (use &amp;quot;ipconfig&amp;quot; in a DOS box) or by modifying the &amp;quot;hosts&amp;quot; file on your PC.&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Feedback_link_for_all_elements&amp;diff=7970</id>
		<title>Feedback link for all elements</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Feedback_link_for_all_elements&amp;diff=7970"/>
		<updated>2010-05-05T10:48:56Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Page */ how much effort did YOU put forth to use page?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a work in progress when I find the time. Sometimes there is obvious repetition that I haven&#039;t cleaned up yet.  &lt;br /&gt;
&lt;br /&gt;
The web is more and more social in that the users/readers of content are more and more invited to influence the content. This is especially true for support pages that are for helping ie. [http://documents.google.com/support/spreadsheets/bin/answer.py?answer=87589 Google &amp;quot;was this helpful?&amp;quot;];  [http://office.microsoft.com/en-us/powerpoint/HP030713791033.aspx?pid=CH063500491033 Microsofts ditto].&lt;br /&gt;
&lt;br /&gt;
Therefore it seems very important that this feature is lacking in Moodle, especially considering its social constructivistic underpinnings. It seems natural that this should be implemented, indeed almost a glaring miss.&lt;br /&gt;
&lt;br /&gt;
There is a form for collecting feedback ([https://docs.moodle.org/en/Development:Feedback  documentation] [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=95 download]) in Moodle which can be used for making course evaluations etc. The problem is that it is difficult to get people to spontaneously report suggestions, criticisms etc at all. If they have to find and go to another page, formulate a description of where they came from and what they want, felt etc, there are few that will do it, and the quality of the feedback will often lack crucial details so it may be useless. &lt;br /&gt;
&lt;br /&gt;
Collecting feedback in a general form at the end of a course has many lacks. The students are poorly motivated (they won&#039;t be getting any use of changes that are made). Many annoyances, suggestions will have been forgotten. Those that are remembered will be difficult to describe accurately.&lt;br /&gt;
&lt;br /&gt;
One way of nicely collecting feedback for an HTML page is to use a forum page as if it were an ordinary webpage. Then, after the content you put into the top, there is a forum at the bottom which can receive feedback and can have some soc. const. advantages over my proposal. But this wouldn&#039;t work for other kinds of pages/elements.&lt;br /&gt;
&lt;br /&gt;
Having some kind of general course feedback early in a course is a good idea and can, of course, meet the first problem (that the pupil&#039;s feedback usually doesn&#039;t effect the on-going course).&lt;br /&gt;
&lt;br /&gt;
=Which Elements?=&lt;br /&gt;
==Page==&lt;br /&gt;
The properties that would be good to include:&lt;br /&gt;
*No response&lt;br /&gt;
*General rating&lt;br /&gt;
*Lacking: &lt;br /&gt;
**Linkage&lt;br /&gt;
**Content&lt;br /&gt;
**Language&lt;br /&gt;
***grammar&lt;br /&gt;
***spelling&lt;br /&gt;
*Suggestions&lt;br /&gt;
* Automatically (javascript) generated info about the browser, operating system, screen and window size, plugin availability. Often the user wouldn&#039;t even know these things, and they could be critically helpful for the page editor.&lt;br /&gt;
&lt;br /&gt;
Here is an example of [http://tupo.biz/kurser/gemensam/kommunikation/PageFeedbackFormExpand.htm a page feedback form]. The form has many of the things that I&#039;d like to include. I would be like to have a small page with expandable fields connected to checked types. Only the first two checks are implemented in this. It does have a JavaScript that in the background includes auto-generated information in the form submission.&lt;br /&gt;
&lt;br /&gt;
This microSoft page had some interesting questions:&lt;br /&gt;
&lt;br /&gt;
 Provide feedback on this information&lt;br /&gt;
 Did this information solve your problem?&lt;br /&gt;
  Yes &lt;br /&gt;
  No &lt;br /&gt;
  I don&#039;t know &lt;br /&gt;
&lt;br /&gt;
 Was this information relevant?&lt;br /&gt;
  Yes &lt;br /&gt;
  No &lt;br /&gt;
&lt;br /&gt;
 How much effort did you personally put forth to use this article?&lt;br /&gt;
  Very low &lt;br /&gt;
  Low &lt;br /&gt;
  Moderate &lt;br /&gt;
  High &lt;br /&gt;
  Very high &lt;br /&gt;
 &lt;br /&gt;
 What can we do to improve this information?&lt;br /&gt;
&lt;br /&gt;
==Quiz questions (even lesson and feedback and questionnaire?)==&lt;br /&gt;
This is very important. If I had to chose between Page  and Question, I&#039;d chose question feedback.&lt;br /&gt;
&lt;br /&gt;
Since evaluation questions are very important to the learners, they are very motivated to see that they are clear.&lt;br /&gt;
&lt;br /&gt;
This can also be a way to make students an active part of the quiz creation/improvement process. Dennis Daniels has been trying to [http://video.google.com/videoplay?docid=5678154150724088700&amp;amp;q=dennis+daniels+moodle+quiz&amp;amp;total=35&amp;amp;start=0&amp;amp;num=10&amp;amp;so=0&amp;amp;type=search&amp;amp;plindex=7 push for this possibility]. He calls it &amp;quot;question challenge&amp;quot;. A possible use scenario: The teacher quickly prepares a quiz with minimal answer alternatives and makes it available to the fastest students. These are encouraged to add more answer alternatives with motivations, and react to the existing formulation, grading and feedback. The teacher reviews their feedback and easily incorporates the useful suggestions into the test before the main body of students try the quiz. &lt;br /&gt;
&lt;br /&gt;
There are many possible parts that can be specific to the feedback for questions.&lt;br /&gt;
&lt;br /&gt;
Is the question itself clear? This might be able to be covered by the same fields that are of interest for general feedback for pages.&lt;br /&gt;
&lt;br /&gt;
Is my answer considered wrong though I feel it is right? It would be good to include a &amp;quot;certainty&amp;quot; rating. Certainty Based Marking, CBM, is a very valuable form of quiz feedback. It would be good to think about it at the same time as other quiz feedback. It is often a 3-step scale.: C1 C2 C3 where 1 is quite uncertain and 3 is very certain. Many teachers would appreciate the ability to connect the certainty to the grading of the question. But even while the grading implementation has not been successfully made yet, it would be valuable feedback for the teacher. &amp;quot;Hmm a lot of students have this right, but almost all of them are very uncertain about it.&amp;quot; or &amp;quot;Hmm, this student was very certain about this incorrect answer.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Is the feedback I get for my answer: unclear, incorrect, possible to improve?&lt;br /&gt;
&lt;br /&gt;
Does the user have other answers that (s)he was tempted to try? Usually people make similar mistakes and this could be a valuable resource for giving better feedback to common mistakes and for creating good &amp;quot;distractors&amp;quot; for multiple choice questions.&lt;br /&gt;
&lt;br /&gt;
When a quiz editor receives feedback on a question it should be easy to use it to develop the question. Prepared fields may depend on the question type. &amp;quot;the answer I would have used&amp;quot;, &amp;quot;an answer I might have used&amp;quot;, &amp;quot;my motivation&amp;quot;. The first 2 could be used to make new answer alternatives. The last as foundation for feedback for that answer. There should be a field for explaining how the learner got the answer. This could be the basis for the feedback field for that answer, if the teacher should chose to include that answer.There should be a field for explaining how the learner got the answer. This could be the basis for the feedback field for that answer, if the teacher should chose to include that answer.&lt;br /&gt;
&lt;br /&gt;
===Question feedback form fields===&lt;br /&gt;
&lt;br /&gt;
  There are prepared fields below to help you formulate your&lt;br /&gt;
  feedback, but in case you feel like&lt;br /&gt;
  &amp;quot;&#039;&#039;I would rather just explain in my own words&#039;&#039;&amp;quot;: ...............&lt;br /&gt;
  ............................................................&lt;br /&gt;
  ............................................................&lt;br /&gt;
&lt;br /&gt;
  [_]question/[X]word in this question unclear&lt;br /&gt;
     (check on word-&amp;gt; expand to: which word: ____________  ) &lt;br /&gt;
   a)possible interpretation 1 __________________________&lt;br /&gt;
   b)possible interpretation(s) 2, ... _____________________________&lt;br /&gt;
&lt;br /&gt;
  [_]grade questionable, motivation: ______________________________  &lt;br /&gt;
    (this perspective maybe the teacher should be able to choose not to ask about)&lt;br /&gt;
&lt;br /&gt;
  answer feedback [_]wrong/[_]unclear (this would be for the answer that was active&lt;br /&gt;
     when the feedback button was pushed, and automatically included)&lt;br /&gt;
     What was wrong/unclear: ________________________________&lt;br /&gt;
     Suggested improvement: _________________________________&lt;br /&gt;
&lt;br /&gt;
  Other possible answers:&lt;br /&gt;
  [_]Best possible, [_]acceptable, [_]should get partial credit, [_]Not right but probable&lt;br /&gt;
   (if last two are checked expand to: Suggested credit [____]% )&lt;br /&gt;
   answer: ________________________________________________&lt;br /&gt;
   motivation: ____________________________________________&lt;br /&gt;
   (how one would get this answer.) &lt;br /&gt;
&lt;br /&gt;
  [_]More possible answers? (gives more fields like above)&lt;br /&gt;
    &lt;br /&gt;
Social bookmarking is important since what&#039;s good for the goose isn&#039;t always good for the gander! The grade goal of students varies and this can mean that a highly rated resource for one person could be useless for another. Therefore a rating should be able to be connected to information about the user. Anonymous (though visible for admin if breaking netiquette) ratings are better than none, though the value would be increased if complemented by some info like grade goal, special branch, language proficiency, disabilities, etc.&lt;br /&gt;
&lt;br /&gt;
=Who would the feedback go to?=&lt;br /&gt;
&lt;br /&gt;
There could be some parts of a Moodle distribution that are default set to collect feedback. The pages that are for administrators, teacher editors should be of interest to Moodle developers. Help pages should collect to the documenters. It should be possible to turn off these default settings if a site doesn&#039;t want to participate.&lt;br /&gt;
&lt;br /&gt;
The other parts could choose at different levels, admin, course developer, teacher, to invite feedback for specific courses, pages, questions and which recipients would get it.&lt;br /&gt;
&lt;br /&gt;
Another consideration is making feedback easier/possible for people using Moodle off line. There are many situations, especially in many places in developing countries, where Internet access is poor, slow or nonexistent. Moodle is still usable on LAN or even a single computer or on a USB memory stick that can be used on different computers, some on line some off line. It would be good if there were preparations made for saving up feedback for when coming on line or for exporting to a file that could be sent on a floppy, through a mobile phone etc to someone on line.&lt;br /&gt;
&lt;br /&gt;
==Some Examples==&lt;br /&gt;
&lt;br /&gt;
Developers have made a new version of some component in Moodle and are  really not sure about if it will be easily understood and function well. They can than choose to set a VERY Inviting feedback link. &amp;quot;This page is new and we would really like suggestions about how to make it better&amp;quot;&lt;br /&gt;
The feedback choice will be default in Moodle packages and the developers will get the feedback from any site that doesn&#039;t turn it off (and has a user giving feedback). The form should contain all the fields, as many as possible automatically, that would be needed to interface with the Tracker: first for search, then for entering a new bug/feature. &lt;br /&gt;
&lt;br /&gt;
A school administrator would like to collect any views that anyone using the site has about pages and turns on a more general feedback invitation: &amp;quot;If this page doesn&#039;t meet your needs, please tell us!&amp;quot; (S)he choses to have the feedback go to (her)him and to the course teacher in charge of the course containing the page. Some administrators have wished for a channel for getting info, questions, suggestions even from non-registered visitors (usually on the front page but perhaps even in other guest open courses). Feedback from non-registered visitors should probably include a reCaptcha antispam protection. &lt;br /&gt;
&lt;br /&gt;
A teacher could want to have students rate pages to be able to give other students a Social bookmarking guide especially if there is a lot of varied material that everybody isn&#039;t expected to go through. Or compare the webpages with the textbook. [the book was better][Both were needed][the webpage better][Neither helped much]. This particular type of feedback would be good to be able to display for the students, perhaps tagged according to grade goals, previous experience, math love/hate, etc.&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/browse/MDL-18067 The Moodle tracker issue for this suggestion.]&lt;br /&gt;
&lt;br /&gt;
[http://blog.pbwiki.com/2008/03/28/the-foolproof-5-step-way-to-answer-tough-questions/ A blog post about answering tough questions] includes &amp;quot;Check afterwards to see if the questioner feels satisfied.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Setting_up_Netbeans&amp;diff=8958</id>
		<title>Setting up Netbeans</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Setting_up_Netbeans&amp;diff=8958"/>
		<updated>2009-10-16T07:55:20Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Coding faster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.netbeans.org/features/php/index.html NetBeans] has got a good PHP support. You find a host of information on the website (tutorials, developer blog, screen casts, etc.).&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* CVS integration: see all changes, lines deletion, diff in real time, show annotations, diff history...&lt;br /&gt;
* Ctrl+Click: Go to declaration&lt;br /&gt;
* Export/Import Diff Patch&lt;br /&gt;
* Easy navigation&lt;br /&gt;
* List of functions&lt;br /&gt;
* Code completion&lt;br /&gt;
* Instant rename&lt;br /&gt;
* HTML, CSS, JavaScript support&lt;br /&gt;
* MySQL manager&lt;br /&gt;
* Quick Search&lt;br /&gt;
* Very few bugs&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* I recommend downloading the latest [http://www.netbeans.org/downloads/indexB.html 6.7.1 version with PHP support ]. It&#039;s only a 26 MB download.&lt;br /&gt;
* Install and run it.&lt;br /&gt;
&lt;br /&gt;
== Set up for Moodle development ==&lt;br /&gt;
&lt;br /&gt;
* Checkout your Moodle project with a &#039;&#039;&#039;CVS client&#039;&#039;&#039; - see [[CVS for Administrators]] or [[CVS for developers|CVS for Developers]].&lt;br /&gt;
&lt;br /&gt;
* Open File &amp;gt; New Project &amp;gt; PHP &amp;gt; PHP Application &amp;gt; Next &lt;br /&gt;
: You&#039;re going to set the project now. &#039;&#039;Name&#039;&#039;, &#039;&#039;Location&#039;&#039; and &#039;&#039;Folder&#039;&#039; are used by NetBeans and are not related to the source code. So you can choose whatever you like, except your source folder. &#039;&#039;Sources&#039;&#039; has to be your checked out Moodle branch/head folder. The rest is clear enough. Don&#039;t forget to choose UTF-8 for &#039;&#039;Default Encoding&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
: Example:&lt;br /&gt;
&lt;br /&gt;
 Project Name:        Moodle 1.9 Stable&lt;br /&gt;
 Project Location:    C:\Users\jerome\Documents\NetBeansProjects&lt;br /&gt;
 Project Folder:      C:\Users\jerome\Documents\NetBeansProjects\Moodle 1.9 Stable&lt;br /&gt;
 Project Sources:     C:\Users\jerome\Projects\branch19_STABLE\moodle&lt;br /&gt;
 Project URL:         http://localhost/moodle19/&lt;br /&gt;
 Index File:          index.php&lt;br /&gt;
 Create:              unchecked&lt;br /&gt;
 Default Encoding:    UTF-8&lt;br /&gt;
 Set as Main Project: unchecked&lt;br /&gt;
&lt;br /&gt;
* Click on Finish.&lt;br /&gt;
&lt;br /&gt;
* Start coding!&lt;br /&gt;
&lt;br /&gt;
== CVS with NetBeans ==&lt;br /&gt;
&lt;br /&gt;
NetBeans comes with &#039;&#039;&#039;integrated CVS support&#039;&#039;&#039; which might be the easiest way to check out Moodle.&lt;br /&gt;
&lt;br /&gt;
* In NetBeans, select Window-&amp;gt;Versioning-&amp;gt;CVS-&amp;gt;Checkout&lt;br /&gt;
* Select Team-&amp;gt;CVS-&amp;gt;Checkout&lt;br /&gt;
* Enter into CVS Root: &#039;&#039;:pserver:anonymous@us.cvs.moodle.org:/cvsroot/moodle&#039;&#039;&lt;br /&gt;
: (Non-US-residents might use one of the other [https://docs.moodle.org/en/CVS_for_Administrators#CVS_Servers Moodle CVS servers] nearer to them.)&lt;br /&gt;
* Click &#039;&#039;Next&#039;&#039;&lt;br /&gt;
* Browse or enter into &#039;&#039;Module:&#039;&#039; moodle&lt;br /&gt;
* Browse or enter into &#039;&#039;Branch:&#039;&#039; MOODLE_19_STABLE&lt;br /&gt;
* Browse or enter into &#039;&#039;Local Folder:&#039;&#039; C:\xampp\htdocs&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039; (and wait a few minutes for Moodle to be checked out)&lt;br /&gt;
* When you get the dialog box &amp;quot;Do you want to create an IDE project from the checked-out sources?&amp;quot;, Click &amp;quot;Create Project...&amp;quot;&lt;br /&gt;
* Select PHP Application with Existing Sources, and click Next&lt;br /&gt;
* Browse or enter into &#039;&#039;Sources Folder&#039;&#039; C:\xampp\htdocs\moodle&lt;br /&gt;
* Enter into &#039;&#039;Project Name:&#039;&#039; moodle&lt;br /&gt;
* Keep the other defaults and click next&lt;br /&gt;
* &#039;&#039;Run As:&#039;&#039; should have selected &#039;&#039;Local Web Site (running on local web server)&#039;&#039;&lt;br /&gt;
* Enter into Project URL http://localhost/moodle/&lt;br /&gt;
* Browse or enter into &#039;&#039;Index File:&#039;&#039; index.php&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Few warnings ===&lt;br /&gt;
Some of these warnings could also apply to other IDE:&lt;br /&gt;
* If you want to delete a file from your computer but not from CVS, delete it from Windows Explorer/Nautilus/Finder. Otherwise your next commit could delete the file from CVS. &amp;lt;br/&amp;gt;In case you have already deleted a wrong file from Netbeans:  with Windows Explorer/Nautilus/Finder, delete all the folder content of this deleted file (including the CVS folder) and update the folder.&lt;br /&gt;
* If you rename files and that other people are working on them, Netbeans could end up to mess up your CVS folder (even though that is quite rare). Then Netbeans CVS will refuse to update your code displaying a no explicit error as &#039;&#039;&#039;Update Failed&#039;&#039;&#039;. In this case, delete the content of the damaged folder with Windows Explorer/Nautilus/Finder. Then update this folder.&lt;br /&gt;
* If you create a patch or a new php file with Netbeans on Microsoft Windows, please check that it&#039;s a Unix format file. You may want to use another software to create Unix format patch/php file.&lt;br /&gt;
&lt;br /&gt;
== Optimization ==&lt;br /&gt;
&lt;br /&gt;
1. You may want to run Netbeans with the Sun JDK. Netbeans seems to work a bit better with the Sun JDK. Download it from  [http://java.sun.com/javase/downloads/index.jsp]. You&#039;ll have to edit Netbeans config file. Open netbeans/etc/netbeans.conf. Then uncomment and edit: &lt;br /&gt;
&lt;br /&gt;
 netbeans_jdkhome=&amp;quot;your_JDK_path&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. To change the Netbeans look and feel run netbeans in the command line with this parameter:&lt;br /&gt;
 &amp;quot;netbeans&amp;quot;  --laf javax.swing.plaf.metal.MetalLookAndFeel &lt;br /&gt;
&lt;br /&gt;
3. If Netbeans starts to slow down, give it more memory&lt;br /&gt;
 &amp;quot;netbeans&amp;quot; -J-Xmx600m&lt;br /&gt;
&lt;br /&gt;
== Coding faster ==&lt;br /&gt;
You may want to have a look at the [http://wiki.netbeans.org/KeymapProfileFor60 keyboard shortcuts].&amp;lt;br/&amp;gt;&lt;br /&gt;
You can also follow the [http://blogs.sun.com/netbeansphp/ Netbeans PHP blog].&lt;br /&gt;
&lt;br /&gt;
== See also: ==&lt;br /&gt;
* Moodle forum: [http://moodle.org/mod/forum/discuss.php?d=112972 NetBeans 6.5 for moodle/PHP/debugging is a better experience v.s Eclipse]&lt;br /&gt;
* [http://www.netbeans.org/kb/trails/php.html NetBeans PHP Learning Trail]&lt;br /&gt;
* [http://wiki.netbeans.org/PHP NetBeans PHP Wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NetBeans]]&lt;br /&gt;
[[Category:Developer tools|NetBeans]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Tracking_Moodle_CVS_with_git&amp;diff=27773</id>
		<title>Talk:Tracking Moodle CVS with git</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Tracking_Moodle_CVS_with_git&amp;diff=27773"/>
		<updated>2009-10-14T10:43:26Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Anyone got any experience with NetBeans and GIT? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am currently doing a bit of an overhaul of this page to remove obsolete coigto stuff - dont really see a reason why anyone would use it or want docs for it.--[[User:Dan Poltawski|Dan Poltawski]] 17:04, 1 October 2008 (CDT)&lt;br /&gt;
:Great! Thanks! --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 17:05, 1 October 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Mass merge ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;...If you are applying patches to CVS, you can then use git-cvsexportcommit or plain old patch -p1 filename...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
can anybody please elaborate a bit? Provide and example? TIA --[[User:David Mudrak|David Mudrak]] 15:30, 18 December 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
== Anyone got any experience with NetBeans and GIT? ==&lt;br /&gt;
&lt;br /&gt;
I&#039;ve just started getting into CVS and am using netBeans. I like NetBeans so far and using the usual CVS seems to work OK. &lt;br /&gt;
&lt;br /&gt;
GIT seem to be &amp;quot;quite the rage&amp;quot; now. Now I&#039;m wondering should I try to get into that while I&#039;m still learning CVS? A google search reveals at least one plugin for GIT and NetBeans: NBgit.  [[User:Jeff Forssell|Jeff Forssell]] 10:43, 14 October 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== CVS Export ===&lt;br /&gt;
&lt;br /&gt;
Is that command example even correct - &amp;quot;GIT_DIR=../moodle-19/.git git cvsexportcommit b38cb61&amp;quot; doesn&#039;t look like any correct syntax and is nothing like the example in the manual page..  --[[User:Howard Miller|Howard Miller]] 10:22, 14 October 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
               $ export GIT_DIR=~/project/.git&lt;br /&gt;
               $ cd ~/project_cvs_checkout&lt;br /&gt;
               $ git cvsexportcommit -v &amp;lt;commit-sha1&amp;gt;&lt;br /&gt;
               $ cvs commit -F .msg &amp;lt;files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, this paragraph:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;If the patches merge cleanly, future updates will recognise the already-applied patch. In that sense the merger in git is smarter than the merger in Cogito, consider using git-pull rather than cg-update. Note that if you see conflicts using git-pull you will have to work a bit harder to resolve them. Make sure you are familiar with handling merge conflicts with pure git before trying this.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
...doesn&#039;t mean anything to me at all (what&#039;s Cogito and cg-update?). It needs contextualised in some way. This is probably a very useful feature while Moodle is CVS and could use some more explanation. --[[User:Howard Miller|Howard Miller]] 10:22, 14 October 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Open_protocol_for_accessing_question_engines&amp;diff=5719</id>
		<title>Open protocol for accessing question engines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Open_protocol_for_accessing_question_engines&amp;diff=5719"/>
		<updated>2009-10-14T08:18:16Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* The parts of the system */ tale-&amp;gt;take&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==History==&lt;br /&gt;
&lt;br /&gt;
Previously (2004 to early 2005) there was an attempt (by the Serving Maths Project, Gustav Delius and others) to create something called [http://mantis.york.ac.uk/moodle/course/view.php?id=14 Remote Question Protocol]. This was a web service interface designed to allow question from different question engines (for example [http://web.mat.bham.ac.uk/C.J.Sangwin/aim/ AIM] and [http://stack.bham.ac.uk/ STACK]) to be included in Moodle quizzes. The effort ran out of resources at a time when the code was not in a working state. Several groups have an interest in getting RQP working again, although no one is currently working on it.&lt;br /&gt;
&lt;br /&gt;
During 2005, The Open University (mainly Sam Marshall) developed in-house an online assessment system called [http://www.open.ac.uk/openmarkexamples/ OpenMark]. Its architecture was of separate question engines and a test navigator, communicating via a web service link which we call Opaque (Open Protocol for Accessing QUestion Engines).&lt;br /&gt;
&lt;br /&gt;
Then in May 2006, I (Tim Hunt) took over maintenance of the quiz module from Gustav. At which point I learned about RQP. I was immediately struck by how similar Opaque and RQP were conceptually, although they differed in details.&lt;br /&gt;
&lt;br /&gt;
In autumn 2006, the OU wanted to be able to include OM question in Moodle quizzes. Our choices are to either&lt;br /&gt;
# change OM to use RQP; or&lt;br /&gt;
# change (add to) Moodle to support Opaque.&lt;br /&gt;
We have pretty-much decided to do 2., because it is less work for us, and becuase Opaque currenly works and RQP doesn&#039;t. Therefore, RQP implementing question engines will have to change anyway, and since Opaque is conceptually similar to RQP, changing to Opaque won&#039;t be much more work that changed to whatever the next iteration of RQP would have been.&lt;br /&gt;
&lt;br /&gt;
OpenMark was released under an open source license (hosted at [http://openmark.dev.java.net/ dev.java.net]) in Spring 2007; and STACK 2.0 (http://stack.bham.ac.uk/) was released just before Christmas 2007, so there are now at least two freely available Opaque compatible systems.&lt;br /&gt;
&lt;br /&gt;
==Rationale==&lt;br /&gt;
&lt;br /&gt;
Why are people interested in this sort of protocol? The answer is separation of concerns. The things an online assessment system has to do are:&lt;br /&gt;
# Identify students, test, which students can do which tests at what times, and which questions make up each test.&lt;br /&gt;
# Record the scores and other information that results from students attempting test, and provide reporting fascilities for this information.&lt;br /&gt;
# Display questions to students and process the responses the students make to generate scores, feedback, etc.&lt;br /&gt;
# Allow teachers to create and configure the questions.&lt;br /&gt;
&lt;br /&gt;
Moodle is very good at points 1 and 2, there is a lot of boring book-keeping do be done here, and it is already implemented in Moodle.&lt;br /&gt;
&lt;br /&gt;
For the developers who are interested in Opaque/RQP, the really interesting part of an assessment system is 3. They want to be able to pose really intersting types of questions to students to really make them think, and then use sophisticated algorithms to analyse the student&#039;s response and give targeted feedback when they get things wrong.&lt;br /&gt;
&lt;br /&gt;
Doing this may require specialist tools. For example, STACK and AIM both use Computer algebra systems to set and mark interesting mathematical questions. OpenMark lets question authors write answer marking and feedback generation algorithms in Java code, with a library of helpful classes and functions. It is simply not feasible to rewrite these question engines in PHP and turn them into Moodle question types. Hence the search for another way to get these questions into Moodle.&lt;br /&gt;
&lt;br /&gt;
Of course, each of STACK, AIM, OM, etc. could programme their own solutions to the administration parts 1 and 2. However, this is a needless duplication of effort. It does not allow questions from different question engines to be combined in the same test. And people who are interested in writing advanced question engines are normally not very interested in writing student administration systems.&lt;br /&gt;
&lt;br /&gt;
Finally, there is point 4, question authoring. Authoring advanced question types is a complicated task that will probably need a specialised interface. For example STACK provides its own editing interface. OM questions are authored in a Java IDE, then complied to a JAR file and uploaded to the server. This is all beyond the scope of Opaque. RQP started trying to address authoring at about the point that it was abandoned.&lt;br /&gt;
&lt;br /&gt;
Our approach is that Opaque should be optimised point 3 above - presenting questions to students and processing their responses. This is the point where interoperability is required. Interoperability is hard, so let us keep the scope of the protocol as small as possible. Interoperability of student data and results is a separate problem. Authoring of advanced question types is specialised to the paticular question engine, and interoperability is not possible.&lt;br /&gt;
&lt;br /&gt;
All this is in the context of an online assessment system. Therefore, we are interested in questions that get presented to students in their web browser as HTML, with accompanying CSS, Javascript, Images and other media files. Student responses get sent back as form sumissions, that is HTTP POST requests. Concievably the trendy XMLHttpRequest could be used instead, but it is not really necessary. Opaque only works with form submissions, which is simple and sufficient.&lt;br /&gt;
&lt;br /&gt;
==Overview of Opaque==&lt;br /&gt;
&lt;br /&gt;
Opaque is a web service protocol based on SOAP.&lt;br /&gt;
&lt;br /&gt;
===The parts of the system===&lt;br /&gt;
&lt;br /&gt;
[[Image:OPAQUE_block_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
Opaque is only used at the point when questions are being presented to students, and possibly later when a student&#039;s attempt is being reviewed by a teacher.&lt;br /&gt;
&lt;br /&gt;
It allows the test management system (TMS) to delegate the rendering of questions, the scoring of responses and the generation of feedback to a remote question engine.&lt;br /&gt;
&lt;br /&gt;
There may be a separate question bank where question definitions are stored, or question definitions may be stored within the question engine (e.g. Stack) or the test management system may also take the role of question bank (e.g. OM).&lt;br /&gt;
&lt;br /&gt;
The TMS takes full responsibility for authenticating students and controlling which questions they see. It asks an appropriate question engine to render each question. The question just had to process the questions and responses it is told to process.&lt;br /&gt;
&lt;br /&gt;
Although Opaque is designed to allow interoperability between arbitrary different &#039;&#039;&#039;types&#039;&#039;&#039; of question engines and TMSs, the expectation is that any online assessment system will only use particular instances of each component.&lt;br /&gt;
&lt;br /&gt;
===Identifying questions===&lt;br /&gt;
&lt;br /&gt;
When the TMS asks the question engine to render a particular qustion, it needs to identify that question. This is done using three pieces of information:&lt;br /&gt;
&lt;br /&gt;
;questionbank base URL&lt;br /&gt;
:If the question engine is designed to fetch question definitions from a remote question bank, then this is base URL for fetching questions from. For example &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://example.com/questionbank&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
;question id&lt;br /&gt;
:This is a string conatining only the characters [_a-z0-9.], and also matching the syntactic rules for Java package names. That is, it is one or more &#039;words&#039; separated by &#039;.&#039;s, each word matching the regexp &#039;&#039;&#039;[_a-z][_a-z0-9]*&#039;&#039;&#039;. This identifies the question withing the question bank. For example &#039;&#039;&#039;calculus.diff01a&#039;&#039;&#039; or &#039;&#039;&#039;_12345&#039;&#039;&#039;.&lt;br /&gt;
;question version&lt;br /&gt;
:This is a string of the fomat major.minor, where major and minor are both decimal integers with no leading zero. Version with the same major version number should all behave roughly the same way. minor version changes are things like bug fixes. Therefore, a test definition would probably only specify which major version of the question to use, and the most recent minor version would be picked by the TMS. The full version number is needed for resuming interrupted sessions and reviewing student responsees. See [[#uestion_sessions_and_the_reproducability_guarantee|reproducability guarantee]] below. For example &#039;&#039;&#039;1.1&#039;&#039;&#039;, &#039;&#039;&#039;1.2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the question engine fetches question definitions from a remote question bank, then it will fetch a particular question by requesting the URL &#039;&#039;questionbankBaseURL&#039;&#039;/&#039;&#039;questionId&#039;&#039;.&#039;&#039;questionVersion&#039;&#039; (e.g. &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://example.com/questionbank/calculus.diff01a.1.1&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;). This returns a single block of data (e.g. OM questions are jar files conaining XML, media files and java code). The format of this data is up to the question engine. It is the responsibility of the TMS to only ask question engines to render questions that they can understand. In the question engine supports different question formats, then it may use the mime type of the response from the question bank to decide how to process this question.&lt;br /&gt;
&lt;br /&gt;
If the question engine stores its own questions, then it can ignore the questionbank base URL, and use the question id and question version to uniquely identify the requested question within its datastore.&lt;br /&gt;
&lt;br /&gt;
===Data passed when a question session is started===&lt;br /&gt;
&lt;br /&gt;
When a new question session is stared, certain information is passed from the test navigator to the question engine:&lt;br /&gt;
&lt;br /&gt;
;randomseed: Any randomisation done be the question engine should be seeded with this number. [[#Question_sessions_and_the_reproducability_guarantee|See below for details]].&lt;br /&gt;
;userid: For information only, for example to improve the logging done at the question engine.&lt;br /&gt;
;language: Information about the current user&#039;s preferred language.&lt;br /&gt;
;passkey: This may be used to improve security. The value passed is md5($secret . $userID), where $secret is a shared secret string (8 characters or fewer) specific to this question engine.&lt;br /&gt;
&lt;br /&gt;
The question engine may ignore any of these pieces of data.&lt;br /&gt;
&lt;br /&gt;
===What can be included in rendered questions===&lt;br /&gt;
&lt;br /&gt;
When a question engine is asked to render a question, it returns a response which includes the following parts:&lt;br /&gt;
&lt;br /&gt;
;String XHTML&lt;br /&gt;
:Well-formed XML which, when inserted into the body or div of an HTML page, will result in valid HTML.&lt;br /&gt;
;String CSS&lt;br /&gt;
:any CSS needed to style the content. The TMS will cache this, and include a link to it in the head of the HTML page.&lt;br /&gt;
;Resource[] resources&lt;br /&gt;
:an array of resources which the TMS must cache and make available.&lt;br /&gt;
&lt;br /&gt;
A Resource has the following fields:&lt;br /&gt;
&lt;br /&gt;
;byte[] content&lt;br /&gt;
;String encoding&lt;br /&gt;
;String filename&lt;br /&gt;
;String mimeType&lt;br /&gt;
&lt;br /&gt;
The content is what is served when the resource is requested. It is served with the specified encoding and mimeType. The filename is used in the URL the resource will be made available at. If the  question requires any javascript, this should be returned as a resource.&lt;br /&gt;
&lt;br /&gt;
Both the XHTML and CSS may contain placeholders of the form %%&#039;&#039;identifier&#039;&#039;%%. These are substituted by the TMS. Recognised placeholders include:&lt;br /&gt;
&lt;br /&gt;
;%%RESOURCE%%&lt;br /&gt;
:Path [relative or absolute] at which resources will become available. This should not include the terminating /. Example: If a resource has the name myfile.png, then &amp;lt;img src=&amp;quot;%%RESOURCES%%/myfile.png&amp;quot;/&amp;gt; should work to include that image.&lt;br /&gt;
;%%IDPREFIX%%&lt;br /&gt;
:This should be prepended to any id or class attribute in the XHTML and references to them in the CSS or Javascript. This allows multiple questions to be diplayed on one page, without conflict. [Note, this is not currently implemented since OM only ever displays one question per page. There is a problem here with javascript, since placeholders are not substituted in resources.&lt;br /&gt;
;%%%%&lt;br /&gt;
:Replaced with %%.&lt;br /&gt;
&lt;br /&gt;
For perfomance reasons, whenever the TMS asks the question engine to render a question, it may send a list of resources that it already has cached for that question. The question engine may choose not to resend any of these resources.&lt;br /&gt;
&lt;br /&gt;
===How the student response is represented===&lt;br /&gt;
&lt;br /&gt;
The TMS receives the student&#039;s response as a HTML form submission, that is, as a HTTP POST request.&lt;br /&gt;
&lt;br /&gt;
Because there might be more than one question per page, the post response to the TMS may contain many post variables. The TMS separates out the ones with the appropriate %%IDPREFIX%%, and forwards just those key-&amp;gt;value pairs to the question engine (with idprefix removed from the key name), when it asks it to process that response.&lt;br /&gt;
&lt;br /&gt;
(Another problem with multiple questions per page is that at the moment for form tag is included in the HTML returned by the question engine, whereas multiple questios per page needs a single form for all questions, provided by the TMS.)&lt;br /&gt;
&lt;br /&gt;
===What sort of results can be returned===&lt;br /&gt;
&lt;br /&gt;
Any request to the question engine to process some results will return HTML and resources etc. to be displayed to the student. In addition, it may (if the student has finished answering the question) include some stuctured results data to be stored in the results database. The Results structure includes:&lt;br /&gt;
&lt;br /&gt;
;String actionSummary&lt;br /&gt;
:A log of the actions the student took in getting to their final answer. Intended for reports seen by test administrators.&lt;br /&gt;
;String answerLine&lt;br /&gt;
:A one-line summary of the student&#039;s final answer. For general reporting.&lt;br /&gt;
;int attempts&lt;br /&gt;
:Number of attempts it took the student to get their final answer.&lt;br /&gt;
;String questionLine&lt;br /&gt;
:A one line summary of the question that was asked. For reporting. Most useful when a question has different random variants.&lt;br /&gt;
;Map&amp;lt;String, int&amp;gt; scores&lt;br /&gt;
:The scores for this question. Normally the score will be a single integer, and the corresponding key will by the empty string. However, in some situations (e.g. psychological tests) the question may want to report scores against different &#039;axes&#039;.&lt;br /&gt;
&lt;br /&gt;
To repeat, these are stored in a database by the TMS, and used for reporting and computing overall test scores without needing to contact the question engines. It it is necessary to reconstruct exactly what the student saw on a particular question, and exactly what they entered, then this can be done using the question engine. See the next section.&lt;br /&gt;
&lt;br /&gt;
===Question sessions and the reproducability guarantee===&lt;br /&gt;
&lt;br /&gt;
Opaque is a stateful protocol, but in a weak sense.&lt;br /&gt;
&lt;br /&gt;
In the protocol, a student&#039;s attempt on a question will require a call to the start() method, then one or more calls to the process() method. These calls may be separated by several minutes, but it could be any length of time.&lt;br /&gt;
&lt;br /&gt;
Normally, what will happen is that the the start() call will return a question session id, and then each call to process() will refer to this session. This works most of the time, but on it&#039;s own would not be robust. What if a studnet stopped working on a question one day and expected to come back the next day and resume where they left off? What if the question engine server crashed?&lt;br /&gt;
&lt;br /&gt;
To solve these problems, the question engine must guarantee that given a sequence of calls to start() and process() with exactly the same arguments, it will always return the same responses. The TMS should store all the information needed to recreate the sequence of calls it made on behalf of the student (that is, the question identity, the random seed, and the values submitted by students in each POST request). This means that if a question session is interrupted or lost, it can just be recreated.&lt;br /&gt;
&lt;br /&gt;
Question sessions are designed to improve performance since the question definition only has to be read and processed once per session. They should also make implementing question engines easier, since state does not have to be saved in persistent storage, and most languages designed for writing server-side applications have session handling mechanisms.&lt;br /&gt;
&lt;br /&gt;
If the TMS knows that a studnet has suspended thier attempt on a question (for example by navigating to a different question) it should call the stop() method to inform the question engine that that question session is no longer needed. The question enging may discard any question session that has been inactive for a period of time.&lt;br /&gt;
&lt;br /&gt;
===What happens in a typical attempt on a question===&lt;br /&gt;
&lt;br /&gt;
This diagram indicates a typical sequence of calls that happen when a student attempts a question.&lt;br /&gt;
&lt;br /&gt;
[[Image:OPAQUE_sequence_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
==The Opaque data structures==&lt;br /&gt;
&lt;br /&gt;
These are documented in IDL (which I don&#039;t really understand, but I am familiar with it from other docs (e.g. http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/) and it is nicely language independent.)&lt;br /&gt;
&lt;br /&gt;
===StartReturn===&lt;br /&gt;
&lt;br /&gt;
 interface StartReturn {&lt;br /&gt;
   readonly attribute string questionSession;&lt;br /&gt;
   readonly attribute string XHTML;&lt;br /&gt;
   readonly attribute string CSS;&lt;br /&gt;
   readonly attribute string progressInfo;&lt;br /&gt;
   readonly attribute Resource[] resources;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Resource===&lt;br /&gt;
&lt;br /&gt;
 interface Resource {&lt;br /&gt;
   readonly attribute BLOB content;&lt;br /&gt;
   readonly attribute string encoding;&lt;br /&gt;
   readonly attribute string filename;&lt;br /&gt;
   readonly attribute string mimeType;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===ProcessReturn===&lt;br /&gt;
&lt;br /&gt;
 interface ProcessReturn {&lt;br /&gt;
   readonly attribute string XHTML;&lt;br /&gt;
   readonly attribute string CSS;&lt;br /&gt;
   readonly attribute string progressInfo;&lt;br /&gt;
   readonly attribute boolean questionEnd;&lt;br /&gt;
   readonly attribute Resource[] resources;&lt;br /&gt;
   readonly attribute Results questionLine;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Results===&lt;br /&gt;
&lt;br /&gt;
 interface Results {&lt;br /&gt;
   readonly attribute string questionLine;&lt;br /&gt;
   readonly attribute string answerLine;&lt;br /&gt;
   readonly attribute string actionSummary;&lt;br /&gt;
   readonly attribute integer attempts;&lt;br /&gt;
   readonly attribute Map&amp;lt;string, float&amp;gt; scores;&lt;br /&gt;
   readonly attribute Map&amp;lt;string, string&amp;gt; customResults;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==The Opaque API methods==&lt;br /&gt;
&lt;br /&gt;
At the moment, I am unlikely to find time to document these in details. Sorry.&lt;br /&gt;
&lt;br /&gt;
===String getEngineInfo()===&lt;br /&gt;
&lt;br /&gt;
This returns some XML data as a string (byte array). The format of the response is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;engineinfo&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;[question engine]&amp;lt;/name&amp;gt; &#039;&#039;&amp;lt;!-- Required --&amp;gt;&#039;&#039;&lt;br /&gt;
    &amp;lt;usedmemory&amp;gt;[&#039;123 bytes&#039; or &#039;45 KB&#039; or &#039;67 MB&#039;]&amp;lt;/usedmemory&amp;gt; &#039;&#039;&amp;lt;!-- Optional--&amp;gt;&#039;&#039;&lt;br /&gt;
    &amp;lt;activesessions&amp;gt;[Number of question sessions active]&amp;lt;/activesessions&amp;gt; &#039;&#039;&amp;lt;!-- Optional--&amp;gt;&#039;&#039;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/engineinfo&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This method is only ever used for system monitoring - that is to ask a question engine &amp;quot;are you still there?&amp;quot;. It is not essential to the functioning of the system.&lt;br /&gt;
&lt;br /&gt;
The tags inside the outer &amp;lt;engineinfo&amp;gt; tag may be in any order. Other tags may also be included.&lt;br /&gt;
&lt;br /&gt;
===String getQuestionMetadata(String questionID, String questionVersion, String questionBaseURL)===&lt;br /&gt;
&lt;br /&gt;
This returns a snipped of XML like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;questionmetadata&amp;gt; &lt;br /&gt;
  &amp;lt;scoring&amp;gt; &lt;br /&gt;
    &amp;lt;marks&amp;gt;3&amp;lt;/marks&amp;gt; &lt;br /&gt;
  &amp;lt;/scoring&amp;gt; &lt;br /&gt;
  &amp;lt;plainmode&amp;gt;yes&amp;lt;/plainmode&amp;gt; &lt;br /&gt;
&amp;lt;/questionmetadata&amp;gt; &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scoring section is basically giving the maximum score for the question, but because a question can report scores against different &#039;axes&#039;, this may be more complicated.&lt;br /&gt;
&lt;br /&gt;
plain mode is a feature of the OpenMark system designed to enhance accessibility. Since OpenMark use a lot of JavaScript and CSS which may not be accessible to some people, then every question should provide an alternative rendering using just plain HTML and standard from controls. When a student chooses to take a quiz in plain mode, they see the plain mode version of each question. However, not all questions provide a plain-mode version, in which case they should return ,plainmode&amp;gt;no&amp;lt;/plainmode&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===StartReturn start(String questionID, String questionVersion, String questionBaseURL, Map&amp;lt;String, String&amp;gt; initialParams, String[])===&lt;br /&gt;
&lt;br /&gt;
===ProcessReturn process(String questionSession, Map&amp;lt;String, String&amp;gt; response)===&lt;br /&gt;
&lt;br /&gt;
===stop(String questionSession)===&lt;br /&gt;
&lt;br /&gt;
==Opaque WSDL==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:definitions targetNamespace=&amp;quot;http://om.open.ac.uk/&amp;quot; xmlns:apachesoap=&amp;quot;http://xml.apache.org/xml-soap&amp;quot; xmlns:impl=&amp;quot;http://om.open.ac.uk/&amp;quot; xmlns:intf=&amp;quot;http://om.open.ac.uk/&amp;quot; xmlns:soapenc=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot; xmlns:wsdlsoap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;wsdl:types&amp;gt;&lt;br /&gt;
  &amp;lt;schema targetNamespace=&amp;quot;http://om.open.ac.uk/&amp;quot; xmlns=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;import namespace=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;ArrayOf_soapenc_string&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;complexContent&amp;gt;&lt;br /&gt;
     &amp;lt;restriction base=&amp;quot;soapenc:Array&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;attribute ref=&amp;quot;soapenc:arrayType&amp;quot; wsdl:arrayType=&amp;quot;soapenc:string[]&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/restriction&amp;gt;&lt;br /&gt;
    &amp;lt;/complexContent&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;Resource&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sequence&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;content&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:base64Binary&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;encoding&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;filename&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;mimeType&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sequence&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;ArrayOfResource&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;complexContent&amp;gt;&lt;br /&gt;
     &amp;lt;restriction base=&amp;quot;soapenc:Array&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;attribute ref=&amp;quot;soapenc:arrayType&amp;quot; wsdl:arrayType=&amp;quot;impl:Resource[]&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/restriction&amp;gt;&lt;br /&gt;
    &amp;lt;/complexContent&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;StartReturn&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sequence&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;CSS&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;XHTML&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;progressInfo&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;questionSession&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;resources&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;impl:ArrayOfResource&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sequence&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;OmException&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sequence/&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;CustomResult&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sequence&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;name&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;value&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sequence&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;ArrayOfCustomResult&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;complexContent&amp;gt;&lt;br /&gt;
     &amp;lt;restriction base=&amp;quot;soapenc:Array&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;attribute ref=&amp;quot;soapenc:arrayType&amp;quot; wsdl:arrayType=&amp;quot;impl:CustomResult[]&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/restriction&amp;gt;&lt;br /&gt;
    &amp;lt;/complexContent&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;Score&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sequence&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;axis&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;marks&amp;quot; type=&amp;quot;xsd:int&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sequence&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;ArrayOfScore&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;complexContent&amp;gt;&lt;br /&gt;
     &amp;lt;restriction base=&amp;quot;soapenc:Array&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;attribute ref=&amp;quot;soapenc:arrayType&amp;quot; wsdl:arrayType=&amp;quot;impl:Score[]&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/restriction&amp;gt;&lt;br /&gt;
    &amp;lt;/complexContent&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;Results&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sequence&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;actionSummary&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;answerLine&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;attempts&amp;quot; type=&amp;quot;xsd:int&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;customResults&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;impl:ArrayOfCustomResult&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;questionLine&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;scores&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;impl:ArrayOfScore&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sequence&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;complexType name=&amp;quot;ProcessReturn&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sequence&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;CSS&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;XHTML&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;progressInfo&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;questionEnd&amp;quot; type=&amp;quot;xsd:boolean&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;resources&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;impl:ArrayOfResource&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;element name=&amp;quot;results&amp;quot; nillable=&amp;quot;true&amp;quot; type=&amp;quot;impl:Results&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sequence&amp;gt;&lt;br /&gt;
   &amp;lt;/complexType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/schema&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;getEngineInfoResponse&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;getEngineInfoReturn&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;processRequest&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;questionSession&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;names&amp;quot; type=&amp;quot;impl:ArrayOf_soapenc_string&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;values&amp;quot; type=&amp;quot;impl:ArrayOf_soapenc_string&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;getEngineInfoRequest&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;getQuestionMetadataResponse&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;getQuestionMetadataReturn&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;processResponse&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;processReturn&amp;quot; type=&amp;quot;impl:ProcessReturn&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;stopResponse&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;OmException&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;fault&amp;quot; type=&amp;quot;impl:OmException&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;startResponse&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;startReturn&amp;quot; type=&amp;quot;impl:StartReturn&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;stopRequest&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;questionSession&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;getQuestionMetadataRequest&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;questionID&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;questionVersion&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;questionBaseURL&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:message name=&amp;quot;startRequest&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;questionID&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;questionVersion&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;questionBaseURL&amp;quot; type=&amp;quot;soapenc:string&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;initialParamNames&amp;quot; type=&amp;quot;impl:ArrayOf_soapenc_string&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;initialParamValues&amp;quot; type=&amp;quot;impl:ArrayOf_soapenc_string&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:part name=&amp;quot;cachedResources&amp;quot; type=&amp;quot;impl:ArrayOf_soapenc_string&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:portType name=&amp;quot;OmService&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;wsdl:operation name=&amp;quot;start&amp;quot; parameterOrder=&amp;quot;questionID questionVersion questionBaseURL initialParamNames initialParamValues cachedResources&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:input message=&amp;quot;impl:startRequest&amp;quot; name=&amp;quot;startRequest&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:output message=&amp;quot;impl:startResponse&amp;quot; name=&amp;quot;startResponse&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:fault message=&amp;quot;impl:OmException&amp;quot; name=&amp;quot;OmException&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;wsdl:operation name=&amp;quot;stop&amp;quot; parameterOrder=&amp;quot;questionSession&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:input message=&amp;quot;impl:stopRequest&amp;quot; name=&amp;quot;stopRequest&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:output message=&amp;quot;impl:stopResponse&amp;quot; name=&amp;quot;stopResponse&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:fault message=&amp;quot;impl:OmException&amp;quot; name=&amp;quot;OmException&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;wsdl:operation name=&amp;quot;process&amp;quot; parameterOrder=&amp;quot;questionSession names values&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:input message=&amp;quot;impl:processRequest&amp;quot; name=&amp;quot;processRequest&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:output message=&amp;quot;impl:processResponse&amp;quot; name=&amp;quot;processResponse&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:fault message=&amp;quot;impl:OmException&amp;quot; name=&amp;quot;OmException&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;wsdl:operation name=&amp;quot;getEngineInfo&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:input message=&amp;quot;impl:getEngineInfoRequest&amp;quot; name=&amp;quot;getEngineInfoRequest&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:output message=&amp;quot;impl:getEngineInfoResponse&amp;quot; name=&amp;quot;getEngineInfoResponse&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;wsdl:operation name=&amp;quot;getQuestionMetadata&amp;quot; parameterOrder=&amp;quot;questionID questionVersion questionBaseURL&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:input message=&amp;quot;impl:getQuestionMetadataRequest&amp;quot; name=&amp;quot;getQuestionMetadataRequest&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:output message=&amp;quot;impl:getQuestionMetadataResponse&amp;quot; name=&amp;quot;getQuestionMetadataResponse&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:fault message=&amp;quot;impl:OmException&amp;quot; name=&amp;quot;OmException&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:binding name=&amp;quot;OmSoapBinding&amp;quot; type=&amp;quot;impl:OmService&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdlsoap:binding style=&amp;quot;rpc&amp;quot; transport=&amp;quot;http://schemas.xmlsoap.org/soap/http&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;wsdl:operation name=&amp;quot;start&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdlsoap:operation soapAction=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:input name=&amp;quot;startRequest&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:body encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:input&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:output name=&amp;quot;startResponse&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:body encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:output&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;wsdl:fault name=&amp;quot;OmException&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:fault encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; name=&amp;quot;OmException&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:fault&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;wsdl:operation name=&amp;quot;stop&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdlsoap:operation soapAction=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:input name=&amp;quot;stopRequest&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:body encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:input&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;wsdl:output name=&amp;quot;stopResponse&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:body encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:output&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:fault name=&amp;quot;OmException&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:fault encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; name=&amp;quot;OmException&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:fault&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;wsdl:operation name=&amp;quot;process&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdlsoap:operation soapAction=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:input name=&amp;quot;processRequest&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:body encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:input&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:output name=&amp;quot;processResponse&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:body encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:output&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:fault name=&amp;quot;OmException&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:fault encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; name=&amp;quot;OmException&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:fault&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;wsdl:operation name=&amp;quot;getEngineInfo&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdlsoap:operation soapAction=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:input name=&amp;quot;getEngineInfoRequest&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:body encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:input&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:output name=&amp;quot;getEngineInfoResponse&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:body encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:output&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;wsdl:operation name=&amp;quot;getQuestionMetadata&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdlsoap:operation soapAction=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:input name=&amp;quot;getQuestionMetadataRequest&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:body encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:input&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:output name=&amp;quot;getQuestionMetadataResponse&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:body encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:output&amp;gt;&lt;br /&gt;
         &amp;lt;wsdl:fault name=&amp;quot;OmException&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;wsdlsoap:fault encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot; name=&amp;quot;OmException&amp;quot; namespace=&amp;quot;http://om.open.ac.uk/&amp;quot; use=&amp;quot;encoded&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/wsdl:fault&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;wsdl:service name=&amp;quot;OmServiceService&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;wsdl:port binding=&amp;quot;impl:OmSoapBinding&amp;quot; name=&amp;quot;Om&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;wsdlsoap:address location=&amp;quot;http://kestrel.open.ac.uk/om-qe/services/Om&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/wsdl:port&amp;gt;&lt;br /&gt;
   &amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Opaque question type]] for instructions on installing and using the Moodle Opaque question type.&lt;br /&gt;
&lt;br /&gt;
[[Category:Open protocol ]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Tracking_Moodle_CVS_with_git&amp;diff=27768</id>
		<title>Talk:Tracking Moodle CVS with git</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Tracking_Moodle_CVS_with_git&amp;diff=27768"/>
		<updated>2009-09-19T16:10:21Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Anyone got any experience with NetBeans and GIT? */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am currently doing a bit of an overhaul of this page to remove obsolete coigto stuff - dont really see a reason why anyone would use it or want docs for it.--[[User:Dan Poltawski|Dan Poltawski]] 17:04, 1 October 2008 (CDT)&lt;br /&gt;
:Great! Thanks! --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 17:05, 1 October 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Mass merge ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;...If you are applying patches to CVS, you can then use git-cvsexportcommit or plain old patch -p1 filename...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
can anybody please elaborate a bit? Provide and example? TIA --[[User:David Mudrak|David Mudrak]] 15:30, 18 December 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
== Anyone got any experience with NetBeans and GIT? ==&lt;br /&gt;
&lt;br /&gt;
I&#039;ve just started getting into CVS and am using netBeans. I like NetBeans so far and using the usual CVS seems to work OK. &lt;br /&gt;
&lt;br /&gt;
GIT seem to be &amp;quot;quite the rage&amp;quot; now. Now I&#039;m wondering should I try to get into that while I&#039;m still learning CVS? A google search reveals at least one plugin for GIT and NetBeans: NBgit.&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5683</id>
		<title>Numerical question units and intervals</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5683"/>
		<updated>2009-09-18T11:00:16Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Allow fraction type  2 1/2 as 2.5 */ link to wikipedia about intervals&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my proposal for how the numerical question function and interface should be improved. [_] means checkboxes that teachers could use for specifying different question behaviours. (o) or (_) is a radio button.&lt;br /&gt;
&lt;br /&gt;
==Allow evaluation of expressions==&lt;br /&gt;
&lt;br /&gt;
Checking this would accept&lt;br /&gt;
 &#039;&#039;&#039;5/2   0.5*5  5^2/10   5^(5-3)/10  25*10^-1  sqrt(25)/2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The main value of calculated or numerical question is that the student really does the &lt;br /&gt;
calculation and gives a real number (which means in decimal format). &lt;br /&gt;
I suggested that you use the short answer (or the multichoice) question type with the different&lt;br /&gt;
answer forms that you allow. &lt;br /&gt;
&lt;br /&gt;
[[User:Pierre Pichet|Pierre Pichet]] 04:25, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
To me the real value of the numerical question type is it&#039;s ability to really see the &lt;br /&gt;
answers as numbers and be able to see what things are equivalent. I have for many years&lt;br /&gt;
used a PERL script which could treat 3/2 and 1+1/2 and 1.5 and (1,5 for us Swedes) as &lt;br /&gt;
the same thing, and especially to accept well defined intervals.&lt;br /&gt;
&lt;br /&gt;
Often I am more interested in students knowing HOW to create the right expression moreso&lt;br /&gt;
than doing the last step, evaluating it. It is also interesting when looking at the &lt;br /&gt;
statistics for a question, to see how they &amp;quot;thought&amp;quot; which can aid the teacher when &lt;br /&gt;
adding new feedback for other answers.&lt;br /&gt;
&lt;br /&gt;
Real numbers include rational numbers include 1/3 which cannot be correctly represented&lt;br /&gt;
as a decimal. (Which doesn&#039;t bother me as a physicist, but a pure matematician ought to&lt;br /&gt;
value being able to use expressions like 1/3. &lt;br /&gt;
&lt;br /&gt;
(Even if a programmer may say it&#039;ll only work from 0.33333333333333333333333333333 to&lt;br /&gt;
0.333333333333333333333334 :-))&lt;br /&gt;
&lt;br /&gt;
[[User:Jeff Forssell|Jeff Forssell]] 06:21, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
If your answers are necessarily expressed as rational numbers then the short answer type&lt;br /&gt;
is the way to do it. You could use as many answers as necessary to express the various&lt;br /&gt;
formats that you accept as correct.&lt;br /&gt;
&lt;br /&gt;
[[User:Pierre Pichet|Pierre Pichet]] 07:21, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
But that would mean that the teacher looses the possibility to give feedback for numerical&lt;br /&gt;
intervals. Having questions that are as open as possible for different kinds of answers&lt;br /&gt;
while still being able to give meaningful feedback is one of the strengths of Moodle that&lt;br /&gt;
I like and would like to increase![[User:Jeff Forssell|Jeff Forssell]] 07:01, 4 October 2007 (CDT)&lt;br /&gt;
 &lt;br /&gt;
This is not the case if you use as many answers as you want to express the desired feedback.&lt;br /&gt;
Just defined the other answers in the range that you think reflect a given problem.&lt;br /&gt;
i.e. if a factor of 2 reflect a given error use this value as an answer and write the feedback text. &lt;br /&gt;
[[User:Pierre Pichet|Pierre Pichet]] 15:40, 9 October 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
 5/2   0.5*5  5^2/2   5^(5-3)/2  25*10^-1  sqrt(25)/2&lt;br /&gt;
&lt;br /&gt;
These value are not the same 5^2/2 and 5^(5-3)/2 are equal to 12.5!&lt;br /&gt;
I think it is very difficult to define which expressions are to be accepted. The numerical answer should somehow be the result. Otherweise the answer to a question like sqrt(50-2*17)=? could be the question itself.&lt;br /&gt;
&lt;br /&gt;
[[User: Stefan Büchler|Stefan Büchler]] 25. Jan. 08&lt;br /&gt;
&lt;br /&gt;
I have for many years used a Perl script that worked very well with numerical questions. It had the ability to evaluate expressions also and compare the value with the intervals that gave various feedback. Usually I felt that it was a good possibility. A lot of times in physics the main problem is figuring out HOW to get the result and the the actual computation can be, easy though time consuming.  (Also good if they weren&#039;t getting the right answer, I could see HOW they were figuring.) But sometimes I wanted to be able to turn it off, just because of the possibility of &amp;quot;the answer being the question&amp;quot;. That&#039;s why I suggest that this possibility should not be the default, but something that a teacher can chose If s/he wants it. (thanks for the pointing out the unequal expressions, which I have {hopefully} corrected. [[User:Jeff Forssell|Jeff Forssell]] 08:26, 22 September 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Allow fraction type  2 1/2 as 2.5==&lt;br /&gt;
&lt;br /&gt;
Translate &amp;quot;½&amp;quot; as &amp;quot;+.5&amp;quot; but give warning &amp;quot;Avoid ½ character in numerical expressions! We have translated ½ as +.5 to evaluate your answer.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In the student question interface the answer box should:&lt;br /&gt;
   1) have an easy way to access with keyboard&lt;br /&gt;
     a) good &amp;quot;tab order&amp;quot;: when opening a quiz question page the student will &lt;br /&gt;
        usually want to answer the first question as his/her first option&lt;br /&gt;
        (tab order =10) &lt;br /&gt;
            Assuming there are no other taborders set this would be first.&lt;br /&gt;
            &amp;quot;BASIC&amp;quot; numbering allows later refinements without renumbering. &lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =15)&lt;br /&gt;
        answer next question (tab order= 20)&lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =25)&lt;br /&gt;
         (how this looks would depend on how many question blanks are on a page&lt;br /&gt;
          and would end up at NEXT page link)&lt;br /&gt;
     b) Acesskeys (This is mined territory since there are no real standards (or&lt;br /&gt;
            rather several DIFFERENT standards) It would probably be best to let &lt;br /&gt;
            people chose whether they want this activated and maybe which keys&lt;br /&gt;
            for which targets. People that are really into this kind of thing can&lt;br /&gt;
            use &amp;quot;Mouseless Browsing&amp;quot; extension for FireFox)&lt;br /&gt;
   2) Have a (?) after the answer box linked to a popup explanation, which depends&lt;br /&gt;
      on which options were checked by question author, saying for example:&lt;br /&gt;
       This is for a numerical answer. The answer can contain a unit at the right &lt;br /&gt;
       end after a space. As decimal character you may use . or , . Mixed fractions&lt;br /&gt;
       can be written as 2 1/2  which is interpreted as 2+1/2 (2½) In this question&lt;br /&gt;
       you may enter an expression which is evaluated to a number before comparing to&lt;br /&gt;
       the correction key. [link to examples of allowable expressions]    &lt;br /&gt;
&lt;br /&gt;
Answer 1:[ 2.5 ]   	   Accepted error ± [0.5]   Grade: [100%] &lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Answer 2: [ &#039;&#039;&#039;100.4..100.5)&#039;&#039;&#039; ]	   Accepted error ± [_empty_]  Grade: [90%] &lt;br /&gt;
&lt;br /&gt;
Which would be interpreted  &#039;&#039;&#039;110.4 &amp;lt;= right &amp;lt; 100.5&#039;&#039;&#039;&lt;br /&gt;
i.e. the round parentheses would mean that that boundary not included&lt;br /&gt;
in the [http://en.wikipedia.org/wiki/Interval_%28mathematics%29 interval]. The .. notation for an interval is already used in the GIFT format. &lt;br /&gt;
&lt;br /&gt;
Another useful possibility: that one could enter evaluation strings like&lt;br /&gt;
&#039;&#039;&#039;110.4&amp;lt;=ans&amp;lt;100.5||100.5&amp;lt;ans&amp;lt;=100.6&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;(I know that this particular thing can be addressed by having&lt;br /&gt;
100.5 +/-0  first than 100.5 +/-0.1)&#039;&#039;&lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
Answer 3: ...&lt;br /&gt;
Feedback: (for answer 3)	&lt;br /&gt;
&lt;br /&gt;
Show 3 more alternative answer fields&lt;br /&gt;
&lt;br /&gt;
==Units mandatory or not==&lt;br /&gt;
&lt;br /&gt;
===How the question has treated use of units=== &lt;br /&gt;
&lt;br /&gt;
The actual philosophy of units in the question at present (2008) is that the units are used to allow the student to answer the question in another unit than the one prescribed or implied by the question.&lt;br /&gt;
However this unit must have been specified when creating the question.&lt;br /&gt;
&lt;br /&gt;
This is why you set a multiplier to convert from your implied or expressed unit with a default 1 multiplier.&lt;br /&gt;
For example, if you enter a unit of &#039;cm&#039; here, and the accepted answer is 15, then the answers &#039;15cm&#039; and &#039;15&#039; are both accepted as correct. You can also specify a multiplier. So, if your main answer was 5500 with unit W, you can also add the unit kW with a multiplier of 0.001. This means that the answers &#039;5500&#039;, &#039;5500W&#039; or &#039;5.5kW&#039; would all be marked correct. Note that the accepted error is also multiplied, so an allowed error of 100W would become an error of 0.1kW. &lt;br /&gt;
For the response where the multiplier is 1 the unit is not mandatory.i.e.&#039;5500&#039;, &#039;5500W&#039;&lt;br /&gt;
However when the multiplier is not 1 then the units is mandatory. i.e. &#039;5.5kW&#039;&lt;br /&gt;
&lt;br /&gt;
===How most science/math teachers expect students to answer regarding units===&lt;br /&gt;
Usually a numerical answer without a unit is not considered complete. (At least in Sweden and when I grew up in the states 1960s) If one has an automatic correction of numerical values only, one must sacrifice the openness of the question by stipulating units.&lt;br /&gt;
&lt;br /&gt;
What Moodle&#039;s questions have often provided is the possibility of allowing quite open responses from the students and still it can give meaningful feedback and points. If we must say &amp;quot;your answer must be expressed in kilonewtons&amp;quot; we won&#039;t be able to discover the weaknesses that might have lead to the student thinking Joules. Knowing what unit is involved it an important part of the ability we try to teach the students and we must be able to evaluate it. That is not possible with the  question&#039;s present way of functioning. &lt;br /&gt;
&lt;br /&gt;
A student can answer &amp;quot;5.2&amp;quot; and gets full points without writing any unit whereas a student answering &amp;quot;52 millimeters&amp;quot; would get zero if no multiplier was stipulated OR the unit only expressed as &amp;quot;mm&amp;quot; or &amp;quot;millimeter&amp;quot;. The student with the 5.2 answer might have even been thinking &amp;quot;m&amp;quot; rather than the the teacher&#039;s expected &amp;quot;cm&amp;quot;. This would not be the case if it were a &amp;quot;paper&amp;quot; test/assignment.&lt;br /&gt;
&lt;br /&gt;
==Unit feedback options==&lt;br /&gt;
&lt;br /&gt;
differentiated unit feedback, which is all of:&lt;br /&gt;
* If there is no SPACE between the number and unit &amp;quot;There should always be a space between the number and the unit, except for degree sign ° and other planal angle units.&amp;quot; &lt;br /&gt;
* translate dimensionless &amp;quot;units&amp;quot;: % = *0.01; ppm=*1E-6 ppb. promille   &lt;br /&gt;
* feedback for lacking unit [_]Feedback for accepted UNIT but wrong number &lt;br /&gt;
* feedback for &amp;quot;possibly right number&amp;quot; if unit is adjusted&lt;br /&gt;
* feedback for &amp;quot;Unit not recognized, either misspelled, wrong type, or just not expected&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 (o) missed unit gives standard retry reduction of points&lt;br /&gt;
 (_)no reduction for missed unit&lt;br /&gt;
 (_)this reduction [___]  &lt;br /&gt;
&lt;br /&gt;
[http://physics.nist.gov/cuu/Units/checklist.html|SI Unit rules and style conventions] (#17  I don&#039;t understand. Otherwise a good collection of rules, at least about SI units. #16 is a rule that could be good to be able to choose to enforce.) &lt;br /&gt;
  &lt;br /&gt;
===Unit: [       ] (optional)===&lt;br /&gt;
&lt;br /&gt;
Should accept arrays like &#039;&#039;&#039;kg, kilogram, kilograms , kilogramme, {&amp;quot;kilo gram&amp;quot;, keelograhm} &#039;&#039;&#039;&lt;br /&gt;
where the ones enclosed in {} would be given feedback like&lt;br /&gt;
&#039;&#039;We have interpretted &#039;&#039;&#039;keelograhm&#039;&#039;&#039; as a misspelling av &#039;&#039;&#039;kg&#039;&#039;&#039; Be aware that small spelling&lt;br /&gt;
mistakes  like &#039;&#039;&#039;M&#039;&#039;&#039; in stead of &#039;&#039;&#039;m&#039;&#039;&#039; can lead to huge errors M=Mega=million&lt;br /&gt;
m=milli= one thousandth&#039;&#039;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Alternative Units: 	&lt;br /&gt;
 Multiplier:[       ]    Unit: [_______]&lt;br /&gt;
&lt;br /&gt;
There should be the same possibility of unit arrays here.&lt;br /&gt;
&lt;br /&gt;
Allow prefix units ($,£ maybe there are others )&lt;br /&gt;
&lt;br /&gt;
==The Multiplier should have an explanation (?)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If the student answers with this unit, the student answer will be multiplied with this number &lt;br /&gt;
before being compared with the expected answer. Example:&lt;br /&gt;
   Answer [_10__] Unit [cm]&lt;br /&gt;
&lt;br /&gt;
   alternative unit&lt;br /&gt;
     multiplier [_2.54_] unit [&amp;quot;, in, in., inch] &lt;br /&gt;
        (That &amp;quot; could be a tricky unit to handle!)&lt;br /&gt;
&lt;br /&gt;
==Then there are some things that I would be interested in having as options for all [maybe?] questiontypes (including numerical):==&lt;br /&gt;
&lt;br /&gt;
1) &amp;quot;Challenge&amp;quot; That a student is given (perhaps with a linked &amp;quot;!&amp;quot; or &amp;quot;Hmm..&amp;quot; or button) a chance to give his/her preferred answer and his/her motivation (or why they didn&#039;t understand, like, agree with the grade or feedback they got for their answer or how the question was phrased.) This might be implemented with similar code to number 4 below.&lt;br /&gt;
&lt;br /&gt;
2) Hints option: option to include a click-able link that could display a/some hint(s), if the student didn&#039;t know how to attack a question. (It is possible, though hardly for html-illiterate, to use the OverLib.js which is included in Moodle to do this even now.&lt;br /&gt;
&lt;br /&gt;
3) Certainty (in the past sometimes called &amp;quot;confidence&amp;quot;) declaration option &lt;br /&gt;
     [__answer___]  certainty: Hi(o)|Med( )|Low( )&lt;br /&gt;
     if possible with CBM/CBG grading scale including negative&lt;br /&gt;
&lt;br /&gt;
4) An easy reordering tool for alternative answers. It might be possible to have two models: &lt;br /&gt;
*Automatic based on grade for alternative. Because the question engine processes them in order it seems logical that alternative answer patterns that have higher points should be tested before others.&lt;br /&gt;
*BASIC numbering 10 20 30 40  so if I wanted 40 moved to between 20 and 30 I could change it to 25  &lt;br /&gt;
&lt;br /&gt;
5) All Internet pages (that the maintainer cares about) should have a [[Feedback link for all elements|feedback link]] something like this:&lt;br /&gt;
&lt;br /&gt;
[[http://tupo.biz/kurser/gemensam/kommunikation/PageFeedbackFormExpand.htm Completely satisfied with this page?]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5682</id>
		<title>Numerical question units and intervals</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5682"/>
		<updated>2009-09-18T10:42:53Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Allow fraction type  2 1/2 as 2.5 */ point out .. for intervals in GIFT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my proposal for how the numerical question function and interface should be improved. [_] means checkboxes that teachers could use for specifying different question behaviours. (o) or (_) is a radio button.&lt;br /&gt;
&lt;br /&gt;
==Allow evaluation of expressions==&lt;br /&gt;
&lt;br /&gt;
Checking this would accept&lt;br /&gt;
 &#039;&#039;&#039;5/2   0.5*5  5^2/10   5^(5-3)/10  25*10^-1  sqrt(25)/2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The main value of calculated or numerical question is that the student really does the &lt;br /&gt;
calculation and gives a real number (which means in decimal format). &lt;br /&gt;
I suggested that you use the short answer (or the multichoice) question type with the different&lt;br /&gt;
answer forms that you allow. &lt;br /&gt;
&lt;br /&gt;
[[User:Pierre Pichet|Pierre Pichet]] 04:25, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
To me the real value of the numerical question type is it&#039;s ability to really see the &lt;br /&gt;
answers as numbers and be able to see what things are equivalent. I have for many years&lt;br /&gt;
used a PERL script which could treat 3/2 and 1+1/2 and 1.5 and (1,5 for us Swedes) as &lt;br /&gt;
the same thing, and especially to accept well defined intervals.&lt;br /&gt;
&lt;br /&gt;
Often I am more interested in students knowing HOW to create the right expression moreso&lt;br /&gt;
than doing the last step, evaluating it. It is also interesting when looking at the &lt;br /&gt;
statistics for a question, to see how they &amp;quot;thought&amp;quot; which can aid the teacher when &lt;br /&gt;
adding new feedback for other answers.&lt;br /&gt;
&lt;br /&gt;
Real numbers include rational numbers include 1/3 which cannot be correctly represented&lt;br /&gt;
as a decimal. (Which doesn&#039;t bother me as a physicist, but a pure matematician ought to&lt;br /&gt;
value being able to use expressions like 1/3. &lt;br /&gt;
&lt;br /&gt;
(Even if a programmer may say it&#039;ll only work from 0.33333333333333333333333333333 to&lt;br /&gt;
0.333333333333333333333334 :-))&lt;br /&gt;
&lt;br /&gt;
[[User:Jeff Forssell|Jeff Forssell]] 06:21, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
If your answers are necessarily expressed as rational numbers then the short answer type&lt;br /&gt;
is the way to do it. You could use as many answers as necessary to express the various&lt;br /&gt;
formats that you accept as correct.&lt;br /&gt;
&lt;br /&gt;
[[User:Pierre Pichet|Pierre Pichet]] 07:21, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
But that would mean that the teacher looses the possibility to give feedback for numerical&lt;br /&gt;
intervals. Having questions that are as open as possible for different kinds of answers&lt;br /&gt;
while still being able to give meaningful feedback is one of the strengths of Moodle that&lt;br /&gt;
I like and would like to increase![[User:Jeff Forssell|Jeff Forssell]] 07:01, 4 October 2007 (CDT)&lt;br /&gt;
 &lt;br /&gt;
This is not the case if you use as many answers as you want to express the desired feedback.&lt;br /&gt;
Just defined the other answers in the range that you think reflect a given problem.&lt;br /&gt;
i.e. if a factor of 2 reflect a given error use this value as an answer and write the feedback text. &lt;br /&gt;
[[User:Pierre Pichet|Pierre Pichet]] 15:40, 9 October 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
 5/2   0.5*5  5^2/2   5^(5-3)/2  25*10^-1  sqrt(25)/2&lt;br /&gt;
&lt;br /&gt;
These value are not the same 5^2/2 and 5^(5-3)/2 are equal to 12.5!&lt;br /&gt;
I think it is very difficult to define which expressions are to be accepted. The numerical answer should somehow be the result. Otherweise the answer to a question like sqrt(50-2*17)=? could be the question itself.&lt;br /&gt;
&lt;br /&gt;
[[User: Stefan Büchler|Stefan Büchler]] 25. Jan. 08&lt;br /&gt;
&lt;br /&gt;
I have for many years used a Perl script that worked very well with numerical questions. It had the ability to evaluate expressions also and compare the value with the intervals that gave various feedback. Usually I felt that it was a good possibility. A lot of times in physics the main problem is figuring out HOW to get the result and the the actual computation can be, easy though time consuming.  (Also good if they weren&#039;t getting the right answer, I could see HOW they were figuring.) But sometimes I wanted to be able to turn it off, just because of the possibility of &amp;quot;the answer being the question&amp;quot;. That&#039;s why I suggest that this possibility should not be the default, but something that a teacher can chose If s/he wants it. (thanks for the pointing out the unequal expressions, which I have {hopefully} corrected. [[User:Jeff Forssell|Jeff Forssell]] 08:26, 22 September 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Allow fraction type  2 1/2 as 2.5==&lt;br /&gt;
&lt;br /&gt;
Translate &amp;quot;½&amp;quot; as &amp;quot;+.5&amp;quot; but give warning &amp;quot;Avoid ½ character in numerical expressions! We have translated ½ as +.5 to evaluate your answer.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In the student question interface the answer box should:&lt;br /&gt;
   1) have an easy way to access with keyboard&lt;br /&gt;
     a) good &amp;quot;tab order&amp;quot;: when opening a quiz question page the student will &lt;br /&gt;
        usually want to answer the first question as his/her first option&lt;br /&gt;
        (tab order =10) &lt;br /&gt;
            Assuming there are no other taborders set this would be first.&lt;br /&gt;
            &amp;quot;BASIC&amp;quot; numbering allows later refinements without renumbering. &lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =15)&lt;br /&gt;
        answer next question (tab order= 20)&lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =25)&lt;br /&gt;
         (how this looks would depend on how many question blanks are on a page&lt;br /&gt;
          and would end up at NEXT page link)&lt;br /&gt;
     b) Acesskeys (This is mined territory since there are no real standards (or&lt;br /&gt;
            rather several DIFFERENT standards) It would probably be best to let &lt;br /&gt;
            people chose whether they want this activated and maybe which keys&lt;br /&gt;
            for which targets. People that are really into this kind of thing can&lt;br /&gt;
            use &amp;quot;Mouseless Browsing&amp;quot; extension for FireFox)&lt;br /&gt;
   2) Have a (?) after the answer box linked to a popup explanation, which depends&lt;br /&gt;
      on which options were checked by question author, saying for example:&lt;br /&gt;
       This is for a numerical answer. The answer can contain a unit at the right &lt;br /&gt;
       end after a space. As decimal character you may use . or , . Mixed fractions&lt;br /&gt;
       can be written as 2 1/2  which is interpreted as 2+1/2 (2½) In this question&lt;br /&gt;
       you may enter an expression which is evaluated to a number before comparing to&lt;br /&gt;
       the correction key. [link to examples of allowable expressions]    &lt;br /&gt;
&lt;br /&gt;
Answer 1:[ 2.5 ]   	   Accepted error ± [0.5]   Grade: [100%] &lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Answer 2: [ &#039;&#039;&#039;100.4..100.5)&#039;&#039;&#039; ]	   Accepted error ± [_empty_]  Grade: [90%] &lt;br /&gt;
&lt;br /&gt;
Which would be interpreted  &#039;&#039;&#039;110.4 &amp;lt;= right &amp;lt; 100.5&#039;&#039;&#039;&lt;br /&gt;
i.e. the round parentheses would mean that that boundary not included&lt;br /&gt;
in the interval. The .. notation for an interval is already used in the GIFT format. &lt;br /&gt;
&lt;br /&gt;
Another useful possibility: that one could enter evaluation strings like&lt;br /&gt;
&#039;&#039;&#039;110.4&amp;lt;=ans&amp;lt;100.5||100.5&amp;lt;ans&amp;lt;=100.6&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;(I know that this particular thing can be addressed by having&lt;br /&gt;
100.5 +/-0  first than 100.5 +/-0.1)&#039;&#039;&lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
Answer 3: ...&lt;br /&gt;
Feedback: (for answer 3)	&lt;br /&gt;
&lt;br /&gt;
Show 3 more alternative answer fields&lt;br /&gt;
&lt;br /&gt;
==Units mandatory or not==&lt;br /&gt;
&lt;br /&gt;
===How the question has treated use of units=== &lt;br /&gt;
&lt;br /&gt;
The actual philosophy of units in the question at present (2008) is that the units are used to allow the student to answer the question in another unit than the one prescribed or implied by the question.&lt;br /&gt;
However this unit must have been specified when creating the question.&lt;br /&gt;
&lt;br /&gt;
This is why you set a multiplier to convert from your implied or expressed unit with a default 1 multiplier.&lt;br /&gt;
For example, if you enter a unit of &#039;cm&#039; here, and the accepted answer is 15, then the answers &#039;15cm&#039; and &#039;15&#039; are both accepted as correct. You can also specify a multiplier. So, if your main answer was 5500 with unit W, you can also add the unit kW with a multiplier of 0.001. This means that the answers &#039;5500&#039;, &#039;5500W&#039; or &#039;5.5kW&#039; would all be marked correct. Note that the accepted error is also multiplied, so an allowed error of 100W would become an error of 0.1kW. &lt;br /&gt;
For the response where the multiplier is 1 the unit is not mandatory.i.e.&#039;5500&#039;, &#039;5500W&#039;&lt;br /&gt;
However when the multiplier is not 1 then the units is mandatory. i.e. &#039;5.5kW&#039;&lt;br /&gt;
&lt;br /&gt;
===How most science/math teachers expect students to answer regarding units===&lt;br /&gt;
Usually a numerical answer without a unit is not considered complete. (At least in Sweden and when I grew up in the states 1960s) If one has an automatic correction of numerical values only, one must sacrifice the openness of the question by stipulating units.&lt;br /&gt;
&lt;br /&gt;
What Moodle&#039;s questions have often provided is the possibility of allowing quite open responses from the students and still it can give meaningful feedback and points. If we must say &amp;quot;your answer must be expressed in kilonewtons&amp;quot; we won&#039;t be able to discover the weaknesses that might have lead to the student thinking Joules. Knowing what unit is involved it an important part of the ability we try to teach the students and we must be able to evaluate it. That is not possible with the  question&#039;s present way of functioning. &lt;br /&gt;
&lt;br /&gt;
A student can answer &amp;quot;5.2&amp;quot; and gets full points without writing any unit whereas a student answering &amp;quot;52 millimeters&amp;quot; would get zero if no multiplier was stipulated OR the unit only expressed as &amp;quot;mm&amp;quot; or &amp;quot;millimeter&amp;quot;. The student with the 5.2 answer might have even been thinking &amp;quot;m&amp;quot; rather than the the teacher&#039;s expected &amp;quot;cm&amp;quot;. This would not be the case if it were a &amp;quot;paper&amp;quot; test/assignment.&lt;br /&gt;
&lt;br /&gt;
==Unit feedback options==&lt;br /&gt;
&lt;br /&gt;
differentiated unit feedback, which is all of:&lt;br /&gt;
* If there is no SPACE between the number and unit &amp;quot;There should always be a space between the number and the unit, except for degree sign ° and other planal angle units.&amp;quot; &lt;br /&gt;
* translate dimensionless &amp;quot;units&amp;quot;: % = *0.01; ppm=*1E-6 ppb. promille   &lt;br /&gt;
* feedback for lacking unit [_]Feedback for accepted UNIT but wrong number &lt;br /&gt;
* feedback for &amp;quot;possibly right number&amp;quot; if unit is adjusted&lt;br /&gt;
* feedback for &amp;quot;Unit not recognized, either misspelled, wrong type, or just not expected&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 (o) missed unit gives standard retry reduction of points&lt;br /&gt;
 (_)no reduction for missed unit&lt;br /&gt;
 (_)this reduction [___]  &lt;br /&gt;
&lt;br /&gt;
[http://physics.nist.gov/cuu/Units/checklist.html|SI Unit rules and style conventions] (#17  I don&#039;t understand. Otherwise a good collection of rules, at least about SI units. #16 is a rule that could be good to be able to choose to enforce.) &lt;br /&gt;
  &lt;br /&gt;
===Unit: [       ] (optional)===&lt;br /&gt;
&lt;br /&gt;
Should accept arrays like &#039;&#039;&#039;kg, kilogram, kilograms , kilogramme, {&amp;quot;kilo gram&amp;quot;, keelograhm} &#039;&#039;&#039;&lt;br /&gt;
where the ones enclosed in {} would be given feedback like&lt;br /&gt;
&#039;&#039;We have interpretted &#039;&#039;&#039;keelograhm&#039;&#039;&#039; as a misspelling av &#039;&#039;&#039;kg&#039;&#039;&#039; Be aware that small spelling&lt;br /&gt;
mistakes  like &#039;&#039;&#039;M&#039;&#039;&#039; in stead of &#039;&#039;&#039;m&#039;&#039;&#039; can lead to huge errors M=Mega=million&lt;br /&gt;
m=milli= one thousandth&#039;&#039;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Alternative Units: 	&lt;br /&gt;
 Multiplier:[       ]    Unit: [_______]&lt;br /&gt;
&lt;br /&gt;
There should be the same possibility of unit arrays here.&lt;br /&gt;
&lt;br /&gt;
Allow prefix units ($,£ maybe there are others )&lt;br /&gt;
&lt;br /&gt;
==The Multiplier should have an explanation (?)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If the student answers with this unit, the student answer will be multiplied with this number &lt;br /&gt;
before being compared with the expected answer. Example:&lt;br /&gt;
   Answer [_10__] Unit [cm]&lt;br /&gt;
&lt;br /&gt;
   alternative unit&lt;br /&gt;
     multiplier [_2.54_] unit [&amp;quot;, in, in., inch] &lt;br /&gt;
        (That &amp;quot; could be a tricky unit to handle!)&lt;br /&gt;
&lt;br /&gt;
==Then there are some things that I would be interested in having as options for all [maybe?] questiontypes (including numerical):==&lt;br /&gt;
&lt;br /&gt;
1) &amp;quot;Challenge&amp;quot; That a student is given (perhaps with a linked &amp;quot;!&amp;quot; or &amp;quot;Hmm..&amp;quot; or button) a chance to give his/her preferred answer and his/her motivation (or why they didn&#039;t understand, like, agree with the grade or feedback they got for their answer or how the question was phrased.) This might be implemented with similar code to number 4 below.&lt;br /&gt;
&lt;br /&gt;
2) Hints option: option to include a click-able link that could display a/some hint(s), if the student didn&#039;t know how to attack a question. (It is possible, though hardly for html-illiterate, to use the OverLib.js which is included in Moodle to do this even now.&lt;br /&gt;
&lt;br /&gt;
3) Certainty (in the past sometimes called &amp;quot;confidence&amp;quot;) declaration option &lt;br /&gt;
     [__answer___]  certainty: Hi(o)|Med( )|Low( )&lt;br /&gt;
     if possible with CBM/CBG grading scale including negative&lt;br /&gt;
&lt;br /&gt;
4) An easy reordering tool for alternative answers. It might be possible to have two models: &lt;br /&gt;
*Automatic based on grade for alternative. Because the question engine processes them in order it seems logical that alternative answer patterns that have higher points should be tested before others.&lt;br /&gt;
*BASIC numbering 10 20 30 40  so if I wanted 40 moved to between 20 and 30 I could change it to 25  &lt;br /&gt;
&lt;br /&gt;
5) All Internet pages (that the maintainer cares about) should have a [[Feedback link for all elements|feedback link]] something like this:&lt;br /&gt;
&lt;br /&gt;
[[http://tupo.biz/kurser/gemensam/kommunikation/PageFeedbackFormExpand.htm Completely satisfied with this page?]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5681</id>
		<title>Numerical question units and intervals</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5681"/>
		<updated>2009-09-18T10:37:37Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* options for all [maybe?] questiontypes (including numerical): */ easy reordering of alternative answers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my proposal for how the numerical question function and interface should be improved. [_] means checkboxes that teachers could use for specifying different question behaviours. (o) or (_) is a radio button.&lt;br /&gt;
&lt;br /&gt;
==Allow evaluation of expressions==&lt;br /&gt;
&lt;br /&gt;
Checking this would accept&lt;br /&gt;
 &#039;&#039;&#039;5/2   0.5*5  5^2/10   5^(5-3)/10  25*10^-1  sqrt(25)/2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The main value of calculated or numerical question is that the student really does the &lt;br /&gt;
calculation and gives a real number (which means in decimal format). &lt;br /&gt;
I suggested that you use the short answer (or the multichoice) question type with the different&lt;br /&gt;
answer forms that you allow. &lt;br /&gt;
&lt;br /&gt;
[[User:Pierre Pichet|Pierre Pichet]] 04:25, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
To me the real value of the numerical question type is it&#039;s ability to really see the &lt;br /&gt;
answers as numbers and be able to see what things are equivalent. I have for many years&lt;br /&gt;
used a PERL script which could treat 3/2 and 1+1/2 and 1.5 and (1,5 for us Swedes) as &lt;br /&gt;
the same thing, and especially to accept well defined intervals.&lt;br /&gt;
&lt;br /&gt;
Often I am more interested in students knowing HOW to create the right expression moreso&lt;br /&gt;
than doing the last step, evaluating it. It is also interesting when looking at the &lt;br /&gt;
statistics for a question, to see how they &amp;quot;thought&amp;quot; which can aid the teacher when &lt;br /&gt;
adding new feedback for other answers.&lt;br /&gt;
&lt;br /&gt;
Real numbers include rational numbers include 1/3 which cannot be correctly represented&lt;br /&gt;
as a decimal. (Which doesn&#039;t bother me as a physicist, but a pure matematician ought to&lt;br /&gt;
value being able to use expressions like 1/3. &lt;br /&gt;
&lt;br /&gt;
(Even if a programmer may say it&#039;ll only work from 0.33333333333333333333333333333 to&lt;br /&gt;
0.333333333333333333333334 :-))&lt;br /&gt;
&lt;br /&gt;
[[User:Jeff Forssell|Jeff Forssell]] 06:21, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
If your answers are necessarily expressed as rational numbers then the short answer type&lt;br /&gt;
is the way to do it. You could use as many answers as necessary to express the various&lt;br /&gt;
formats that you accept as correct.&lt;br /&gt;
&lt;br /&gt;
[[User:Pierre Pichet|Pierre Pichet]] 07:21, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
But that would mean that the teacher looses the possibility to give feedback for numerical&lt;br /&gt;
intervals. Having questions that are as open as possible for different kinds of answers&lt;br /&gt;
while still being able to give meaningful feedback is one of the strengths of Moodle that&lt;br /&gt;
I like and would like to increase![[User:Jeff Forssell|Jeff Forssell]] 07:01, 4 October 2007 (CDT)&lt;br /&gt;
 &lt;br /&gt;
This is not the case if you use as many answers as you want to express the desired feedback.&lt;br /&gt;
Just defined the other answers in the range that you think reflect a given problem.&lt;br /&gt;
i.e. if a factor of 2 reflect a given error use this value as an answer and write the feedback text. &lt;br /&gt;
[[User:Pierre Pichet|Pierre Pichet]] 15:40, 9 October 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
 5/2   0.5*5  5^2/2   5^(5-3)/2  25*10^-1  sqrt(25)/2&lt;br /&gt;
&lt;br /&gt;
These value are not the same 5^2/2 and 5^(5-3)/2 are equal to 12.5!&lt;br /&gt;
I think it is very difficult to define which expressions are to be accepted. The numerical answer should somehow be the result. Otherweise the answer to a question like sqrt(50-2*17)=? could be the question itself.&lt;br /&gt;
&lt;br /&gt;
[[User: Stefan Büchler|Stefan Büchler]] 25. Jan. 08&lt;br /&gt;
&lt;br /&gt;
I have for many years used a Perl script that worked very well with numerical questions. It had the ability to evaluate expressions also and compare the value with the intervals that gave various feedback. Usually I felt that it was a good possibility. A lot of times in physics the main problem is figuring out HOW to get the result and the the actual computation can be, easy though time consuming.  (Also good if they weren&#039;t getting the right answer, I could see HOW they were figuring.) But sometimes I wanted to be able to turn it off, just because of the possibility of &amp;quot;the answer being the question&amp;quot;. That&#039;s why I suggest that this possibility should not be the default, but something that a teacher can chose If s/he wants it. (thanks for the pointing out the unequal expressions, which I have {hopefully} corrected. [[User:Jeff Forssell|Jeff Forssell]] 08:26, 22 September 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Allow fraction type  2 1/2 as 2.5==&lt;br /&gt;
&lt;br /&gt;
Translate &amp;quot;½&amp;quot; as &amp;quot;+.5&amp;quot; but give warning &amp;quot;Avoid ½ character in numerical expressions! We have translated ½ as +.5 to evaluate your answer.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In the student question interface the answer box should:&lt;br /&gt;
   1) have an easy way to access with keyboard&lt;br /&gt;
     a) good &amp;quot;tab order&amp;quot;: when opening a quiz question page the student will &lt;br /&gt;
        usually want to answer the first question as his/her first option&lt;br /&gt;
        (tab order =10) &lt;br /&gt;
            Assuming there are no other taborders set this would be first.&lt;br /&gt;
            &amp;quot;BASIC&amp;quot; numbering allows later refinements without renumbering. &lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =15)&lt;br /&gt;
        answer next question (tab order= 20)&lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =25)&lt;br /&gt;
         (how this looks would depend on how many question blanks are on a page&lt;br /&gt;
          and would end up at NEXT page link)&lt;br /&gt;
     b) Acesskeys (This is mined territory since there are no real standards (or&lt;br /&gt;
            rather several DIFFERENT standards) It would probably be best to let &lt;br /&gt;
            people chose whether they want this activated and maybe which keys&lt;br /&gt;
            for which targets. People that are really into this kind of thing can&lt;br /&gt;
            use &amp;quot;Mouseless Browsing&amp;quot; extension for FireFox)&lt;br /&gt;
   2) Have a (?) after the answer box linked to a popup explanation, which depends&lt;br /&gt;
      on which options were checked by question author, saying for example:&lt;br /&gt;
       This is for a numerical answer. The answer can contain a unit at the right &lt;br /&gt;
       end after a space. As decimal character you may use . or , . Mixed fractions&lt;br /&gt;
       can be written as 2 1/2  which is interpreted as 2+1/2 (2½) In this question&lt;br /&gt;
       you may enter an expression which is evaluated to a number before comparing to&lt;br /&gt;
       the correction key. [link to examples of allowable expressions]    &lt;br /&gt;
&lt;br /&gt;
Answer 1:[ 2.5 ]   	   Accepted error ± [0.5]   Grade: [100%] &lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Answer 2: [ &#039;&#039;&#039;100.4..100.5)&#039;&#039;&#039; ]	   Accepted error ± [_empty_]  Grade: [90%] &lt;br /&gt;
&lt;br /&gt;
Which would be interpreted  &#039;&#039;&#039;110.4 &amp;lt;= right &amp;lt; 100.5&#039;&#039;&#039;&lt;br /&gt;
i.e. the round parentheses would mean that boundary not included&lt;br /&gt;
in the intervall or that one could enter evaluation strings like&lt;br /&gt;
&#039;&#039;&#039;110.4&amp;lt;=ans&amp;lt;100.5||100.5&amp;lt;ans&amp;lt;=100.6&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;(I know that this particular thing can be addressed by having&lt;br /&gt;
100.5 +/-0  first than 100.5 +/-0.1)&#039;&#039;&lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
Answer 3: ...&lt;br /&gt;
Feedback: (for answer 3)	&lt;br /&gt;
&lt;br /&gt;
Show 3 more alternative answer fields&lt;br /&gt;
&lt;br /&gt;
==Units mandatory or not==&lt;br /&gt;
&lt;br /&gt;
===How the question has treated use of units=== &lt;br /&gt;
&lt;br /&gt;
The actual philosophy of units in the question at present (2008) is that the units are used to allow the student to answer the question in another unit than the one prescribed or implied by the question.&lt;br /&gt;
However this unit must have been specified when creating the question.&lt;br /&gt;
&lt;br /&gt;
This is why you set a multiplier to convert from your implied or expressed unit with a default 1 multiplier.&lt;br /&gt;
For example, if you enter a unit of &#039;cm&#039; here, and the accepted answer is 15, then the answers &#039;15cm&#039; and &#039;15&#039; are both accepted as correct. You can also specify a multiplier. So, if your main answer was 5500 with unit W, you can also add the unit kW with a multiplier of 0.001. This means that the answers &#039;5500&#039;, &#039;5500W&#039; or &#039;5.5kW&#039; would all be marked correct. Note that the accepted error is also multiplied, so an allowed error of 100W would become an error of 0.1kW. &lt;br /&gt;
For the response where the multiplier is 1 the unit is not mandatory.i.e.&#039;5500&#039;, &#039;5500W&#039;&lt;br /&gt;
However when the multiplier is not 1 then the units is mandatory. i.e. &#039;5.5kW&#039;&lt;br /&gt;
&lt;br /&gt;
===How most science/math teachers expect students to answer regarding units===&lt;br /&gt;
Usually a numerical answer without a unit is not considered complete. (At least in Sweden and when I grew up in the states 1960s) If one has an automatic correction of numerical values only, one must sacrifice the openness of the question by stipulating units.&lt;br /&gt;
&lt;br /&gt;
What Moodle&#039;s questions have often provided is the possibility of allowing quite open responses from the students and still it can give meaningful feedback and points. If we must say &amp;quot;your answer must be expressed in kilonewtons&amp;quot; we won&#039;t be able to discover the weaknesses that might have lead to the student thinking Joules. Knowing what unit is involved it an important part of the ability we try to teach the students and we must be able to evaluate it. That is not possible with the  question&#039;s present way of functioning. &lt;br /&gt;
&lt;br /&gt;
A student can answer &amp;quot;5.2&amp;quot; and gets full points without writing any unit whereas a student answering &amp;quot;52 millimeters&amp;quot; would get zero if no multiplier was stipulated OR the unit only expressed as &amp;quot;mm&amp;quot; or &amp;quot;millimeter&amp;quot;. The student with the 5.2 answer might have even been thinking &amp;quot;m&amp;quot; rather than the the teacher&#039;s expected &amp;quot;cm&amp;quot;. This would not be the case if it were a &amp;quot;paper&amp;quot; test/assignment.&lt;br /&gt;
&lt;br /&gt;
==Unit feedback options==&lt;br /&gt;
&lt;br /&gt;
differentiated unit feedback, which is all of:&lt;br /&gt;
* If there is no SPACE between the number and unit &amp;quot;There should always be a space between the number and the unit, except for degree sign ° and other planal angle units.&amp;quot; &lt;br /&gt;
* translate dimensionless &amp;quot;units&amp;quot;: % = *0.01; ppm=*1E-6 ppb. promille   &lt;br /&gt;
* feedback for lacking unit [_]Feedback for accepted UNIT but wrong number &lt;br /&gt;
* feedback for &amp;quot;possibly right number&amp;quot; if unit is adjusted&lt;br /&gt;
* feedback for &amp;quot;Unit not recognized, either misspelled, wrong type, or just not expected&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 (o) missed unit gives standard retry reduction of points&lt;br /&gt;
 (_)no reduction for missed unit&lt;br /&gt;
 (_)this reduction [___]  &lt;br /&gt;
&lt;br /&gt;
[http://physics.nist.gov/cuu/Units/checklist.html|SI Unit rules and style conventions] (#17  I don&#039;t understand. Otherwise a good collection of rules, at least about SI units. #16 is a rule that could be good to be able to choose to enforce.) &lt;br /&gt;
  &lt;br /&gt;
===Unit: [       ] (optional)===&lt;br /&gt;
&lt;br /&gt;
Should accept arrays like &#039;&#039;&#039;kg, kilogram, kilograms , kilogramme, {&amp;quot;kilo gram&amp;quot;, keelograhm} &#039;&#039;&#039;&lt;br /&gt;
where the ones enclosed in {} would be given feedback like&lt;br /&gt;
&#039;&#039;We have interpretted &#039;&#039;&#039;keelograhm&#039;&#039;&#039; as a misspelling av &#039;&#039;&#039;kg&#039;&#039;&#039; Be aware that small spelling&lt;br /&gt;
mistakes  like &#039;&#039;&#039;M&#039;&#039;&#039; in stead of &#039;&#039;&#039;m&#039;&#039;&#039; can lead to huge errors M=Mega=million&lt;br /&gt;
m=milli= one thousandth&#039;&#039;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Alternative Units: 	&lt;br /&gt;
 Multiplier:[       ]    Unit: [_______]&lt;br /&gt;
&lt;br /&gt;
There should be the same possibility of unit arrays here.&lt;br /&gt;
&lt;br /&gt;
Allow prefix units ($,£ maybe there are others )&lt;br /&gt;
&lt;br /&gt;
==The Multiplier should have an explanation (?)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If the student answers with this unit, the student answer will be multiplied with this number &lt;br /&gt;
before being compared with the expected answer. Example:&lt;br /&gt;
   Answer [_10__] Unit [cm]&lt;br /&gt;
&lt;br /&gt;
   alternative unit&lt;br /&gt;
     multiplier [_2.54_] unit [&amp;quot;, in, in., inch] &lt;br /&gt;
        (That &amp;quot; could be a tricky unit to handle!)&lt;br /&gt;
&lt;br /&gt;
==Then there are some things that I would be interested in having as options for all [maybe?] questiontypes (including numerical):==&lt;br /&gt;
&lt;br /&gt;
1) &amp;quot;Challenge&amp;quot; That a student is given (perhaps with a linked &amp;quot;!&amp;quot; or &amp;quot;Hmm..&amp;quot; or button) a chance to give his/her preferred answer and his/her motivation (or why they didn&#039;t understand, like, agree with the grade or feedback they got for their answer or how the question was phrased.) This might be implemented with similar code to number 4 below.&lt;br /&gt;
&lt;br /&gt;
2) Hints option: option to include a click-able link that could display a/some hint(s), if the student didn&#039;t know how to attack a question. (It is possible, though hardly for html-illiterate, to use the OverLib.js which is included in Moodle to do this even now.&lt;br /&gt;
&lt;br /&gt;
3) Certainty (in the past sometimes called &amp;quot;confidence&amp;quot;) declaration option &lt;br /&gt;
     [__answer___]  certainty: Hi(o)|Med( )|Low( )&lt;br /&gt;
     if possible with CBM/CBG grading scale including negative&lt;br /&gt;
&lt;br /&gt;
4) An easy reordering tool for alternative answers. It might be possible to have two models: &lt;br /&gt;
*Automatic based on grade for alternative. Because the question engine processes them in order it seems logical that alternative answer patterns that have higher points should be tested before others.&lt;br /&gt;
*BASIC numbering 10 20 30 40  so if I wanted 40 moved to between 20 and 30 I could change it to 25  &lt;br /&gt;
&lt;br /&gt;
5) All Internet pages (that the maintainer cares about) should have a [[Feedback link for all elements|feedback link]] something like this:&lt;br /&gt;
&lt;br /&gt;
[[http://tupo.biz/kurser/gemensam/kommunikation/PageFeedbackFormExpand.htm Completely satisfied with this page?]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5679</id>
		<title>Numerical question units and intervals</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5679"/>
		<updated>2009-09-11T07:27:34Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Allow fraction type  2 1/2 as 2.5 */ shortened some lines, spelling correction, mouseless browsing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my proposal for how the numerical question function and interface should be improved. [_] means checkboxes that teachers could use for specifying different question behaviours.&lt;br /&gt;
&lt;br /&gt;
==Allow evaluation of expressions==&lt;br /&gt;
&lt;br /&gt;
  Checking this would accept  &#039;&#039;&#039;5/2   0.5*5  5^2/10   5^(5-3)/10  25*10^-1  sqrt(25)/2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 The main value of calculated or numerical question is that the student really does the &lt;br /&gt;
 calculation and gives a real number (which means in decimal format). &lt;br /&gt;
 I suggested that you use the short answer (or the multichoice) question type with the different&lt;br /&gt;
 answer forms that you allow. &lt;br /&gt;
 [[User:Pierre Pichet|Pierre Pichet]] 04:25, 6 September 2007 (CDT)&lt;br /&gt;
 To me the real value of the numerical question type is it&#039;s ability to really see the &lt;br /&gt;
 answers as numbers and be able to see what things are equivalent. I have for many years&lt;br /&gt;
 used a PERL script which could treat 3/2 and 1+1/2 and 1.5 and (1,5 for us Swedes) as &lt;br /&gt;
 the same thing, and especially to accept well defined intervals.&lt;br /&gt;
 Often I am more interested in students knowing HOW to create the right expression moreso&lt;br /&gt;
 than doing the last step, evaluating it. It is also interesting when looking at the &lt;br /&gt;
 statistics for a question, to see how they &amp;quot;thought&amp;quot; which can aid the teacher when &lt;br /&gt;
 adding new feedback for other answers.&lt;br /&gt;
 Real numbers include rational numbers include 1/3 which cannot be correctly represented&lt;br /&gt;
 as a decimal. (Which doesn&#039;t bother me as a physicist, but a pure matematician ought to&lt;br /&gt;
 value being able to use expressions like 1/3. &lt;br /&gt;
 (Even if a programmer may say it&#039;ll only work from 0.33333333333333333333333333333 to&lt;br /&gt;
 0.333333333333333333333334 :-))&lt;br /&gt;
 [[User:Jeff Forssell|Jeff Forssell]] 06:21, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
 If your answers are necessarily expressed as rational numbers then the short answer type&lt;br /&gt;
 is the way to do it. You could use as many answers as necessary to express the various&lt;br /&gt;
 formats that you accept as correct.&lt;br /&gt;
 [[User:Pierre Pichet|Pierre Pichet]] 07:21, 6 September 2007 (CDT)&lt;br /&gt;
 But that would mean that the teacher looses the possibility to give feedback for numerical&lt;br /&gt;
 intervals. Having questions that are as open as possible for different kinds of answers&lt;br /&gt;
 while still being able to give meaningful feedback is one of the strengths of Moodle that&lt;br /&gt;
 I like and would like to increase![[User:Jeff Forssell|Jeff Forssell]] 07:01, 4 October 2007 (CDT)&lt;br /&gt;
 &lt;br /&gt;
 This is not the case if you use as many answers as you want to express the desired feedback.&lt;br /&gt;
 Just defined the other answers in the range that you think reflect a given problem.&lt;br /&gt;
 i.e. if a factor of 2 reflect a given error use this value as an answer and write the feedback text. &lt;br /&gt;
 [[User:Pierre Pichet|Pierre Pichet]] 15:40, 9 October 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
5/2   0.5*5  5^2/2   5^(5-3)/2  25*10^-1  sqrt(25)/2&lt;br /&gt;
These value are not the same 5^2/2 and 5^(5-3)/2 are equal to 12.5!&lt;br /&gt;
I think it is very difficult to define which expressions are to be accepted. The numerical answer should somehow be the result. Otherweise the answer to a question like sqrt(50-2*17)=? could be the question itself.&lt;br /&gt;
[[User: Stefan Büchler|Stefan Büchler]] 25. Jan. 08&lt;br /&gt;
&lt;br /&gt;
I have for many years used a Perl script that worked very well with numerical questions. It had the ability to evaluate expressions also and compare the value with the intervals that gave various feedback. Usually I felt that it was a good possibility. A lot of times in physics the main problem is figuring out HOW to get the result and the the actual computation can be, easy though time consuming.  (Also good if they weren&#039;t getting the right answer, I could see HOW they were figuring.) But sometimes I wanted to be able to turn it off, just because of the possibility of &amp;quot;the answer being the question&amp;quot;. That&#039;s why I suggest that this possibility should not be the default, but something that a teacher can chose If s/he wants it. (thanks for the pointing out the unequal expressions, which I have {hopefully} corrected. [[User:Jeff Forssell|Jeff Forssell]] 08:26, 22 September 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Allow fraction type  2 1/2 as 2.5==&lt;br /&gt;
&lt;br /&gt;
Translate &amp;quot;½&amp;quot; as &amp;quot;+.5&amp;quot; but give warning &amp;quot;Avoid ½ character in numerical expressions! We have translated ½ as +.5 to evaluate your answer.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  In the student question interface the answer box should:&lt;br /&gt;
  1) have an easy way to access with keyboard&lt;br /&gt;
     a) good &amp;quot;tab order&amp;quot;: when opening a quiz question page the student will &lt;br /&gt;
        usually want to answer the first question as his/her first option&lt;br /&gt;
        (tab order =10) &lt;br /&gt;
            Assuming there are no other taborders set this would be first.&lt;br /&gt;
            &amp;quot;BASIC&amp;quot; numbering allows later refinements without renumbering. &lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =15)&lt;br /&gt;
        answer next question (tab order= 20)&lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =25)&lt;br /&gt;
         (how this looks would depend on how many question blanks are on a page&lt;br /&gt;
          and would end up at NEXT page link)&lt;br /&gt;
     b) Acesskeys (This is mined territory since there are no real standards (or&lt;br /&gt;
            rather several DIFFERENT standards) It would probably be best to let &lt;br /&gt;
            people chose whether they want this activated and maybe which keys&lt;br /&gt;
            for which targets. People that are really into this kind of thing can&lt;br /&gt;
            use &amp;quot;Mouseless Browsing&amp;quot; extension for FireFox)&lt;br /&gt;
   2) Have a (?) after the answer box linked to a popup explanation, which depends&lt;br /&gt;
      on which options were checked by question author, saying for example:&lt;br /&gt;
       This is for a numerical answer. The answer can contain a unit at the right &lt;br /&gt;
       end after a space. As decimal character you may use . or , . Mixed fractions&lt;br /&gt;
       can be written as 2 1/2  which is interpreted as 2+1/2 (2½) In this question&lt;br /&gt;
       you may enter an expression which is evaluated to a number before comparing to&lt;br /&gt;
       the correction key. [link to examples of allowable expressions]    &lt;br /&gt;
&lt;br /&gt;
Answer 1:[ 2.5 ]   	   Accepted error ± [0.5]   Grade: [100%] &lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Answer 2: [ &#039;&#039;&#039;100.4..100.5)&#039;&#039;&#039; ]	   Accepted error ± [_empty_]  Grade: [90%] &lt;br /&gt;
  Which would be interpreted  &#039;&#039;&#039;110.4 &amp;lt;= right &amp;lt; 100.5&#039;&#039;&#039;&lt;br /&gt;
   i.e. the round parentheses would mean that boundary not included&lt;br /&gt;
   in the intervall or that one could enter evaluation strings like&lt;br /&gt;
  &#039;&#039;&#039;110.4&amp;lt;=ans&amp;lt;100.5||100.5&amp;lt;ans&amp;lt;=100.6&#039;&#039;&#039;&lt;br /&gt;
  &#039;&#039;(I know that this particular thing can be addressed by having&lt;br /&gt;
  100.5 +/-0  first than 100.5 +/-0.1)&#039;&#039;&lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
 Answer 3: ...&lt;br /&gt;
 Feedback: (for answer 3)	&lt;br /&gt;
&lt;br /&gt;
 Show 3 more alternative answer fields&lt;br /&gt;
&lt;br /&gt;
==Units mandatory or not==&lt;br /&gt;
===How the question has treated use of units=== &lt;br /&gt;
The actual philosophy of units in the question at present (-2008) is that the units are used to allow the student to answer the question in another unit than the one prescribed or implied by the question.&lt;br /&gt;
However this unit must have been specified when creating the question.&lt;br /&gt;
&lt;br /&gt;
This is why you set a multiplier to convert from your implied or expressed unit with a default 1 multiplier.&lt;br /&gt;
For example, if you enter a unit of &#039;cm&#039; here, and the accepted answer is 15, then the answers &#039;15cm&#039; and &#039;15&#039; are both accepted as correct. You can also specify a multiplier. So, if your main answer was 5500 with unit W, you can also add the unit kW with a multiplier of 0.001. This means that the answers &#039;5500&#039;, &#039;5500W&#039; or &#039;5.5kW&#039; would all be marked correct. Note that the accepted error is also multiplied, so an allowed error of 100W would become an error of 0.1kW. &lt;br /&gt;
For the response where the multiplier is 1 the unit is not mandatory.i.e.&#039;5500&#039;, &#039;5500W&#039;&lt;br /&gt;
However when the multiplier is not 1 then the units is mandatory. i.e. &#039;5.5kW&#039;&lt;br /&gt;
&lt;br /&gt;
===How most science/math teachers expect students to answer regarding units===&lt;br /&gt;
Usually a numerical answer without a unit is not considered complete. (At least in Sweden and when I grew up in the states 1960s) If one has an automatic correction of numerical values only, one must sacrifice the openness of the question by stipulating units.&lt;br /&gt;
&lt;br /&gt;
What Moodle&#039;s questions have often provided is the possibility of allowing quite open responses from the students and still it can give meaningful feedback and points. If we must say &amp;quot;your answer must be expressed in kilonewtons&amp;quot; we won&#039;t be able to discover the weaknesses that might have lead to the student thinking Joules. Knowing what unit is involved it an important part of the ability we try to teach the students and we must be able to evaluate it. That is not possible with the  question&#039;s present way of functioning. &lt;br /&gt;
&lt;br /&gt;
A student can answer &amp;quot;5.2&amp;quot; and gets full points without writing any unit whereas a student answering &amp;quot;52 millimeters&amp;quot; would get zero if no multiplier was stipulated OR the unit only expressed as &amp;quot;mm&amp;quot; or &amp;quot;millimeter&amp;quot;. The student with the 5.2 answer might have even been thinking &amp;quot;m&amp;quot; rather than the the teacher&#039;s expected &amp;quot;cm&amp;quot;. This would not be the case if it were a &amp;quot;paper&amp;quot; test/assignment.&lt;br /&gt;
&lt;br /&gt;
==Unit feedback options===&lt;br /&gt;
  differentiated unit feedback, which is all of:&lt;br /&gt;
           If there is no SPACE between the number and unit &amp;quot;There should always be a&lt;br /&gt;
                space between the number and the unit, except for degree sign ° and&lt;br /&gt;
                other planal angle units.&amp;quot; &lt;br /&gt;
           translate dimensionless &amp;quot;units&amp;quot;: % = *0.01; ppm=*1E-6 ppb. promille   &lt;br /&gt;
           feedback for lacking unit [_]Feedback for accepted UNIT but wrong number &lt;br /&gt;
           feedback for &amp;quot;possibly right number&amp;quot; if unit is adjusted&lt;br /&gt;
           feedback for &amp;quot;Unit not recognized, either misspelled, wrong type,&lt;br /&gt;
               or just not expected&amp;quot;&lt;br /&gt;
          (o) missed unit gives standard retry reduction of points (_)no reduction &lt;br /&gt;
               for missed unit (_)this reduction [___]  &lt;br /&gt;
          [[http://physics.nist.gov/cuu/Units/checklist.html|SI Unit rules and style conventions]] (#17  I don&#039;t&lt;br /&gt;
           understand. Otherwise a good collection of rules, at least about SI units.&lt;br /&gt;
           #16 is a rule that could be good to be able to choose to enforce.) &lt;br /&gt;
  &lt;br /&gt;
===Unit: 	[       ] (optional)===&lt;br /&gt;
  Should accept arrays like &#039;&#039;&#039;kg, kilogram, kilograms , kilogramme, {&amp;quot;kilo gram&amp;quot;, keelograhm} &#039;&#039;&#039;&lt;br /&gt;
  where the ones enclosed in {} would be given feedback like&lt;br /&gt;
   &#039;&#039;We have interpretted &#039;&#039;&#039;keelograhm&#039;&#039;&#039; as a misspelling av &#039;&#039;&#039;kg&#039;&#039;&#039; Be aware that small spelling&lt;br /&gt;
    mistakes  like &#039;&#039;&#039;M&#039;&#039;&#039; in stead of &#039;&#039;&#039;m&#039;&#039;&#039; can lead to huge errors M=Mega=million&lt;br /&gt;
    m=milli= one thousandth&#039;&#039;&amp;quot; &lt;br /&gt;
	Alternative Units: 	&lt;br /&gt;
	Multiplier:[       ]    Unit: [_______]&lt;br /&gt;
 There should be the same possibility of unit arrays here.&lt;br /&gt;
&lt;br /&gt;
 Allow prefix units ($,£ maybe there are others )&lt;br /&gt;
&lt;br /&gt;
==The Multiplier should have an explanation (?)==&lt;br /&gt;
   &#039;&#039;If the student answers with this unit, the student answer will be multiplied with this number &lt;br /&gt;
   before being compared with the expected answer. Example:&lt;br /&gt;
   Answer [_10__] Unit [cm]&lt;br /&gt;
     alternative unit&lt;br /&gt;
     multiplier [_2.54_] unit [&amp;quot;, in, in., inch] &lt;br /&gt;
        (That &amp;quot; could be a tricky unit to handle!)&lt;br /&gt;
&lt;br /&gt;
==Then there are some things that I would be interested in having as options for all [maybe?] questiontypes (including numerical):==&lt;br /&gt;
&lt;br /&gt;
1) &amp;quot;Challenge&amp;quot; That a student is given (perhaps with a linked &amp;quot;!&amp;quot; or &amp;quot;Hmm..&amp;quot; or button) a chance to give his/her preferred answer and his/her motivation (or why they didn&#039;t understand, like, agree with the grade or feedback they got for their answer or how the question was phrased.) This might be implemented witn similar code to number 4 below.&lt;br /&gt;
&lt;br /&gt;
2) Hints option: option to include a clickable link that could display a/some hint(s), if the student didn&#039;t know how to attack a question. (It is possible, though hardly for html-illiterate, to use the OverLib.js which is included in Moodle to do this even now.&lt;br /&gt;
&lt;br /&gt;
3) Certainty (in the past sometimes called &amp;quot;confidence&amp;quot;) declaration option &lt;br /&gt;
     [__answer___]  certainty: Hi(o)|Med( )|Low( )&lt;br /&gt;
     if possible with CBM/CBG grading scale including negative&lt;br /&gt;
&lt;br /&gt;
4) All Internet pages (that the maintainer cares about) should have a [[Feedback link for all elements|feedback link]] something like this:&lt;br /&gt;
&lt;br /&gt;
[[http://tupo.biz/kurser/gemensam/kommunikation/PageFeedbackFormExpand.htm Completely satisfied with this page?]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5678</id>
		<title>Numerical question units and intervals</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5678"/>
		<updated>2009-09-09T16:00:05Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Unit feedback options= */ small spelling misstakes-checked the link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my proposal for how the numerical question function and interface should be improved. [_] means checkboxes that teachers could use for specifying different question behaviours.&lt;br /&gt;
&lt;br /&gt;
==Allow evaluation of expressions==&lt;br /&gt;
&lt;br /&gt;
  Checking this would accept  &#039;&#039;&#039;5/2   0.5*5  5^2/10   5^(5-3)/10  25*10^-1  sqrt(25)/2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 The main value of calculated or numerical question is that the student really does the &lt;br /&gt;
 calculation and gives a real number (which means in decimal format). &lt;br /&gt;
 I suggested that you use the short answer (or the multichoice) question type with the different&lt;br /&gt;
 answer forms that you allow. &lt;br /&gt;
 [[User:Pierre Pichet|Pierre Pichet]] 04:25, 6 September 2007 (CDT)&lt;br /&gt;
 To me the real value of the numerical question type is it&#039;s ability to really see the &lt;br /&gt;
 answers as numbers and be able to see what things are equivalent. I have for many years&lt;br /&gt;
 used a PERL script which could treat 3/2 and 1+1/2 and 1.5 and (1,5 for us Swedes) as &lt;br /&gt;
 the same thing, and especially to accept well defined intervals.&lt;br /&gt;
 Often I am more interested in students knowing HOW to create the right expression moreso&lt;br /&gt;
 than doing the last step, evaluating it. It is also interesting when looking at the &lt;br /&gt;
 statistics for a question, to see how they &amp;quot;thought&amp;quot; which can aid the teacher when &lt;br /&gt;
 adding new feedback for other answers.&lt;br /&gt;
 Real numbers include rational numbers include 1/3 which cannot be correctly represented&lt;br /&gt;
 as a decimal. (Which doesn&#039;t bother me as a physicist, but a pure matematician ought to&lt;br /&gt;
 value being able to use expressions like 1/3. &lt;br /&gt;
 (Even if a programmer may say it&#039;ll only work from 0.33333333333333333333333333333 to&lt;br /&gt;
 0.333333333333333333333334 :-))&lt;br /&gt;
 [[User:Jeff Forssell|Jeff Forssell]] 06:21, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
 If your answers are necessarily expressed as rational numbers then the short answer type&lt;br /&gt;
 is the way to do it. You could use as many answers as necessary to express the various&lt;br /&gt;
 formats that you accept as correct.&lt;br /&gt;
 [[User:Pierre Pichet|Pierre Pichet]] 07:21, 6 September 2007 (CDT)&lt;br /&gt;
 But that would mean that the teacher looses the possibility to give feedback for numerical&lt;br /&gt;
 intervals. Having questions that are as open as possible for different kinds of answers&lt;br /&gt;
 while still being able to give meaningful feedback is one of the strengths of Moodle that&lt;br /&gt;
 I like and would like to increase![[User:Jeff Forssell|Jeff Forssell]] 07:01, 4 October 2007 (CDT)&lt;br /&gt;
 &lt;br /&gt;
 This is not the case if you use as many answers as you want to express the desired feedback.&lt;br /&gt;
 Just defined the other answers in the range that you think reflect a given problem.&lt;br /&gt;
 i.e. if a factor of 2 reflect a given error use this value as an answer and write the feedback text. &lt;br /&gt;
 [[User:Pierre Pichet|Pierre Pichet]] 15:40, 9 October 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
5/2   0.5*5  5^2/2   5^(5-3)/2  25*10^-1  sqrt(25)/2&lt;br /&gt;
These value are not the same 5^2/2 and 5^(5-3)/2 are equal to 12.5!&lt;br /&gt;
I think it is very difficult to define which expressions are to be accepted. The numerical answer should somehow be the result. Otherweise the answer to a question like sqrt(50-2*17)=? could be the question itself.&lt;br /&gt;
[[User: Stefan Büchler|Stefan Büchler]] 25. Jan. 08&lt;br /&gt;
&lt;br /&gt;
I have for many years used a Perl script that worked very well with numerical questions. It had the ability to evaluate expressions also and compare the value with the intervals that gave various feedback. Usually I felt that it was a good possibility. A lot of times in physics the main problem is figuring out HOW to get the result and the the actual computation can be, easy though time consuming.  (Also good if they weren&#039;t getting the right answer, I could see HOW they were figuring.) But sometimes I wanted to be able to turn it off, just because of the possibility of &amp;quot;the answer being the question&amp;quot;. That&#039;s why I suggest that this possibility should not be the default, but something that a teacher can chose If s/he wants it. (thanks for the pointing out the unequal expressions, which I have {hopefully} corrected. [[User:Jeff Forssell|Jeff Forssell]] 08:26, 22 September 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Allow fraction type  2 1/2 as 2.5==&lt;br /&gt;
&lt;br /&gt;
Translate &amp;quot;½&amp;quot; as &amp;quot;+.5&amp;quot; but give warning &amp;quot;Avoid ½ character in numerical expressions! We have translated ½ as +.5 to evaluate your answer.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  In the student question interface the answer box should:&lt;br /&gt;
  1) have an easy way to access with keyboard&lt;br /&gt;
     a) good &amp;quot;tab order&amp;quot;: when opening a quiz question page the student will usually want to &lt;br /&gt;
        answer the first question as his/her first option (tab order =10) &lt;br /&gt;
            Assuming there are no other taborders set this would be first.&lt;br /&gt;
            &amp;quot;BASIC&amp;quot; numbering allows later refinements without renumbering. &lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =15)&lt;br /&gt;
        answer next question (tab order= 20)&lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =25)&lt;br /&gt;
         (how this looks would depend on how many question blanks are on a page&lt;br /&gt;
          and would end up att NEXT page link)&lt;br /&gt;
     b) Acesskeys (This is mined territory since there are no real standards (or&lt;br /&gt;
            rather several DIFFERENT standards) It would probably be best to let &lt;br /&gt;
            people chose whether they want this activated and maybe which keys for which targets)&lt;br /&gt;
   2) Have a (?) after the answer box linked to a popup explanation, which depends&lt;br /&gt;
      on which options were checked by question author, saying for example:&lt;br /&gt;
       This is for a numerical answer. The answer can contain a unit at the right &lt;br /&gt;
       end after a space. As decimal character you may use . or , . Mixed fractions&lt;br /&gt;
       can be written as 2 1/2  which is interpretted as 2+1/2 (2½) In this question&lt;br /&gt;
       you may enter an expression which is evaluated to a number before comparing to&lt;br /&gt;
       the correction key. [link to examples of allowable expressions]    &lt;br /&gt;
&lt;br /&gt;
Answer 1:[ 2.5 ]   	   Accepted error ± [0.5]   Grade: [100%] &lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Answer 2: [ &#039;&#039;&#039;100.4..100.5)&#039;&#039;&#039; ]	   Accepted error ± [_empty_]  Grade: [90%] &lt;br /&gt;
  Which would be interpreted  &#039;&#039;&#039;110.4 &amp;lt;= right &amp;lt; 100.5&#039;&#039;&#039;&lt;br /&gt;
   i.e. the round parentheses would mean that boundary not included in intervall&lt;br /&gt;
  or that one could enter evaluation strings like&lt;br /&gt;
  &#039;&#039;&#039;110.4&amp;lt;=ans&amp;lt;100.5||100.5&amp;lt;ans&amp;lt;=100.6&#039;&#039;&#039;&lt;br /&gt;
  &#039;&#039;(I know that this particular thing can be addressed by having&lt;br /&gt;
  100.5 +/-0  first than 100.5 +/-0.1)&#039;&#039;&lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
 Answer 3: ...&lt;br /&gt;
 Feedback: (for answer 3)	&lt;br /&gt;
&lt;br /&gt;
 Show 3 more alternative answer fields&lt;br /&gt;
&lt;br /&gt;
==Units mandatory or not==&lt;br /&gt;
===How the question has treated use of units=== &lt;br /&gt;
The actual philosophy of units in the question at present (-2008) is that the units are used to allow the student to answer the question in another unit than the one prescribed or implied by the question.&lt;br /&gt;
However this unit must have been specified when creating the question.&lt;br /&gt;
&lt;br /&gt;
This is why you set a multiplier to convert from your implied or expressed unit with a default 1 multiplier.&lt;br /&gt;
For example, if you enter a unit of &#039;cm&#039; here, and the accepted answer is 15, then the answers &#039;15cm&#039; and &#039;15&#039; are both accepted as correct. You can also specify a multiplier. So, if your main answer was 5500 with unit W, you can also add the unit kW with a multiplier of 0.001. This means that the answers &#039;5500&#039;, &#039;5500W&#039; or &#039;5.5kW&#039; would all be marked correct. Note that the accepted error is also multiplied, so an allowed error of 100W would become an error of 0.1kW. &lt;br /&gt;
For the response where the multiplier is 1 the unit is not mandatory.i.e.&#039;5500&#039;, &#039;5500W&#039;&lt;br /&gt;
However when the multiplier is not 1 then the units is mandatory. i.e. &#039;5.5kW&#039;&lt;br /&gt;
&lt;br /&gt;
===How most science/math teachers expect students to answer regarding units===&lt;br /&gt;
Usually a numerical answer without a unit is not considered complete. (At least in Sweden and when I grew up in the states 1960s) If one has an automatic correction of numerical values only, one must sacrifice the openness of the question by stipulating units.&lt;br /&gt;
&lt;br /&gt;
What Moodle&#039;s questions have often provided is the possibility of allowing quite open responses from the students and still it can give meaningful feedback and points. If we must say &amp;quot;your answer must be expressed in kilonewtons&amp;quot; we won&#039;t be able to discover the weaknesses that might have lead to the student thinking Joules. Knowing what unit is involved it an important part of the ability we try to teach the students and we must be able to evaluate it. That is not possible with the  question&#039;s present way of functioning. &lt;br /&gt;
&lt;br /&gt;
A student can answer &amp;quot;5.2&amp;quot; and gets full points without writing any unit whereas a student answering &amp;quot;52 millimeters&amp;quot; would get zero if no multiplier was stipulated OR the unit only expressed as &amp;quot;mm&amp;quot; or &amp;quot;millimeter&amp;quot;. The student with the 5.2 answer might have even been thinking &amp;quot;m&amp;quot; rather than the the teacher&#039;s expected &amp;quot;cm&amp;quot;. This would not be the case if it were a &amp;quot;paper&amp;quot; test/assignment.&lt;br /&gt;
&lt;br /&gt;
==Unit feedback options===&lt;br /&gt;
  differentiated unit feedback, which is all of:&lt;br /&gt;
           If there is no SPACE between the number and unit &amp;quot;There should always be a&lt;br /&gt;
                space between the number and the unit, except for degree sign ° and&lt;br /&gt;
                other planal angle units.&amp;quot; &lt;br /&gt;
           translate dimensionless &amp;quot;units&amp;quot;: % = *0.01; ppm=*1E-6 ppb. promille   &lt;br /&gt;
           feedback for lacking unit [_]Feedback for accepted UNIT but wrong number &lt;br /&gt;
           feedback for &amp;quot;possibly right number&amp;quot; if unit is adjusted&lt;br /&gt;
           feedback for &amp;quot;Unit not recognized, either misspelled, wrong type,&lt;br /&gt;
               or just not expected&amp;quot;&lt;br /&gt;
          (o) missed unit gives standard retry reduction of points (_)no reduction &lt;br /&gt;
               for missed unit (_)this reduction [___]  &lt;br /&gt;
          [[http://physics.nist.gov/cuu/Units/checklist.html|SI Unit rules and style conventions]] (#17  I don&#039;t&lt;br /&gt;
           understand. Otherwise a good collection of rules, at least about SI units.&lt;br /&gt;
           #16 is a rule that could be good to be able to choose to enforce.) &lt;br /&gt;
  &lt;br /&gt;
===Unit: 	[       ] (optional)===&lt;br /&gt;
  Should accept arrays like &#039;&#039;&#039;kg, kilogram, kilograms , kilogramme, {&amp;quot;kilo gram&amp;quot;, keelograhm} &#039;&#039;&#039;&lt;br /&gt;
  where the ones enclosed in {} would be given feedback like&lt;br /&gt;
   &#039;&#039;We have interpretted &#039;&#039;&#039;keelograhm&#039;&#039;&#039; as a misspelling av &#039;&#039;&#039;kg&#039;&#039;&#039; Be aware that small spelling&lt;br /&gt;
    mistakes  like &#039;&#039;&#039;M&#039;&#039;&#039; in stead of &#039;&#039;&#039;m&#039;&#039;&#039; can lead to huge errors M=Mega=million&lt;br /&gt;
    m=milli= one thousandth&#039;&#039;&amp;quot; &lt;br /&gt;
	Alternative Units: 	&lt;br /&gt;
	Multiplier:[       ]    Unit: [_______]&lt;br /&gt;
 There should be the same possibility of unit arrays here.&lt;br /&gt;
&lt;br /&gt;
 Allow prefix units ($,£ maybe there are others )&lt;br /&gt;
&lt;br /&gt;
==The Multiplier should have an explanation (?)==&lt;br /&gt;
   &#039;&#039;If the student answers with this unit, the student answer will be multiplied with this number &lt;br /&gt;
   before being compared with the expected answer. Example:&lt;br /&gt;
   Answer [_10__] Unit [cm]&lt;br /&gt;
     alternative unit&lt;br /&gt;
     multiplier [_2.54_] unit [&amp;quot;, in, in., inch] &lt;br /&gt;
        (That &amp;quot; could be a tricky unit to handle!)&lt;br /&gt;
&lt;br /&gt;
==Then there are some things that I would be interested in having as options for all [maybe?] questiontypes (including numerical):==&lt;br /&gt;
&lt;br /&gt;
1) &amp;quot;Challenge&amp;quot; That a student is given (perhaps with a linked &amp;quot;!&amp;quot; or &amp;quot;Hmm..&amp;quot; or button) a chance to give his/her preferred answer and his/her motivation (or why they didn&#039;t understand, like, agree with the grade or feedback they got for their answer or how the question was phrased.) This might be implemented witn similar code to number 4 below.&lt;br /&gt;
&lt;br /&gt;
2) Hints option: option to include a clickable link that could display a/some hint(s), if the student didn&#039;t know how to attack a question. (It is possible, though hardly for html-illiterate, to use the OverLib.js which is included in Moodle to do this even now.&lt;br /&gt;
&lt;br /&gt;
3) Certainty (in the past sometimes called &amp;quot;confidence&amp;quot;) declaration option &lt;br /&gt;
     [__answer___]  certainty: Hi(o)|Med( )|Low( )&lt;br /&gt;
     if possible with CBM/CBG grading scale including negative&lt;br /&gt;
&lt;br /&gt;
4) All Internet pages (that the maintainer cares about) should have a [[Feedback link for all elements|feedback link]] something like this:&lt;br /&gt;
&lt;br /&gt;
[[http://tupo.biz/kurser/gemensam/kommunikation/PageFeedbackFormExpand.htm Completely satisfied with this page?]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5677</id>
		<title>Numerical question units and intervals</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Numerical_question_units_and_intervals&amp;diff=5677"/>
		<updated>2009-08-24T06:21:58Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Then there are some things that I would be interested in having as options for all [maybe?] questiontypes (including numerical): */  changed the link to an example feedback form (the old one no lon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my proposal for how the numerical question function and interface should be improved. [_] means checkboxes that teachers could use for specifying different question behaviours.&lt;br /&gt;
&lt;br /&gt;
==Allow evaluation of expressions==&lt;br /&gt;
&lt;br /&gt;
  Checking this would accept  &#039;&#039;&#039;5/2   0.5*5  5^2/10   5^(5-3)/10  25*10^-1  sqrt(25)/2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 The main value of calculated or numerical question is that the student really does the &lt;br /&gt;
 calculation and gives a real number (which means in decimal format). &lt;br /&gt;
 I suggested that you use the short answer (or the multichoice) question type with the different&lt;br /&gt;
 answer forms that you allow. &lt;br /&gt;
 [[User:Pierre Pichet|Pierre Pichet]] 04:25, 6 September 2007 (CDT)&lt;br /&gt;
 To me the real value of the numerical question type is it&#039;s ability to really see the &lt;br /&gt;
 answers as numbers and be able to see what things are equivalent. I have for many years&lt;br /&gt;
 used a PERL script which could treat 3/2 and 1+1/2 and 1.5 and (1,5 for us Swedes) as &lt;br /&gt;
 the same thing, and especially to accept well defined intervals.&lt;br /&gt;
 Often I am more interested in students knowing HOW to create the right expression moreso&lt;br /&gt;
 than doing the last step, evaluating it. It is also interesting when looking at the &lt;br /&gt;
 statistics for a question, to see how they &amp;quot;thought&amp;quot; which can aid the teacher when &lt;br /&gt;
 adding new feedback for other answers.&lt;br /&gt;
 Real numbers include rational numbers include 1/3 which cannot be correctly represented&lt;br /&gt;
 as a decimal. (Which doesn&#039;t bother me as a physicist, but a pure matematician ought to&lt;br /&gt;
 value being able to use expressions like 1/3. &lt;br /&gt;
 (Even if a programmer may say it&#039;ll only work from 0.33333333333333333333333333333 to&lt;br /&gt;
 0.333333333333333333333334 :-))&lt;br /&gt;
 [[User:Jeff Forssell|Jeff Forssell]] 06:21, 6 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
 If your answers are necessarily expressed as rational numbers then the short answer type&lt;br /&gt;
 is the way to do it. You could use as many answers as necessary to express the various&lt;br /&gt;
 formats that you accept as correct.&lt;br /&gt;
 [[User:Pierre Pichet|Pierre Pichet]] 07:21, 6 September 2007 (CDT)&lt;br /&gt;
 But that would mean that the teacher looses the possibility to give feedback for numerical&lt;br /&gt;
 intervals. Having questions that are as open as possible for different kinds of answers&lt;br /&gt;
 while still being able to give meaningful feedback is one of the strengths of Moodle that&lt;br /&gt;
 I like and would like to increase![[User:Jeff Forssell|Jeff Forssell]] 07:01, 4 October 2007 (CDT)&lt;br /&gt;
 &lt;br /&gt;
 This is not the case if you use as many answers as you want to express the desired feedback.&lt;br /&gt;
 Just defined the other answers in the range that you think reflect a given problem.&lt;br /&gt;
 i.e. if a factor of 2 reflect a given error use this value as an answer and write the feedback text. &lt;br /&gt;
 [[User:Pierre Pichet|Pierre Pichet]] 15:40, 9 October 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
5/2   0.5*5  5^2/2   5^(5-3)/2  25*10^-1  sqrt(25)/2&lt;br /&gt;
These value are not the same 5^2/2 and 5^(5-3)/2 are equal to 12.5!&lt;br /&gt;
I think it is very difficult to define which expressions are to be accepted. The numerical answer should somehow be the result. Otherweise the answer to a question like sqrt(50-2*17)=? could be the question itself.&lt;br /&gt;
[[User: Stefan Büchler|Stefan Büchler]] 25. Jan. 08&lt;br /&gt;
&lt;br /&gt;
I have for many years used a Perl script that worked very well with numerical questions. It had the ability to evaluate expressions also and compare the value with the intervals that gave various feedback. Usually I felt that it was a good possibility. A lot of times in physics the main problem is figuring out HOW to get the result and the the actual computation can be, easy though time consuming.  (Also good if they weren&#039;t getting the right answer, I could see HOW they were figuring.) But sometimes I wanted to be able to turn it off, just because of the possibility of &amp;quot;the answer being the question&amp;quot;. That&#039;s why I suggest that this possibility should not be the default, but something that a teacher can chose If s/he wants it. (thanks for the pointing out the unequal expressions, which I have {hopefully} corrected. [[User:Jeff Forssell|Jeff Forssell]] 08:26, 22 September 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Allow fraction type  2 1/2 as 2.5==&lt;br /&gt;
&lt;br /&gt;
Translate &amp;quot;½&amp;quot; as &amp;quot;+.5&amp;quot; but give warning &amp;quot;Avoid ½ character in numerical expressions! We have translated ½ as +.5 to evaluate your answer.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  In the student question interface the answer box should:&lt;br /&gt;
  1) have an easy way to access with keyboard&lt;br /&gt;
     a) good &amp;quot;tab order&amp;quot;: when opening a quiz question page the student will usually want to &lt;br /&gt;
        answer the first question as his/her first option (tab order =10) &lt;br /&gt;
            Assuming there are no other taborders set this would be first.&lt;br /&gt;
            &amp;quot;BASIC&amp;quot; numbering allows later refinements without renumbering. &lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =15)&lt;br /&gt;
        answer next question (tab order= 20)&lt;br /&gt;
        if available &amp;quot;send in question&amp;quot; (tab order =25)&lt;br /&gt;
         (how this looks would depend on how many question blanks are on a page&lt;br /&gt;
          and would end up att NEXT page link)&lt;br /&gt;
     b) Acesskeys (This is mined territory since there are no real standards (or&lt;br /&gt;
            rather several DIFFERENT standards) It would probably be best to let &lt;br /&gt;
            people chose whether they want this activated and maybe which keys for which targets)&lt;br /&gt;
   2) Have a (?) after the answer box linked to a popup explanation, which depends&lt;br /&gt;
      on which options were checked by question author, saying for example:&lt;br /&gt;
       This is for a numerical answer. The answer can contain a unit at the right &lt;br /&gt;
       end after a space. As decimal character you may use . or , . Mixed fractions&lt;br /&gt;
       can be written as 2 1/2  which is interpretted as 2+1/2 (2½) In this question&lt;br /&gt;
       you may enter an expression which is evaluated to a number before comparing to&lt;br /&gt;
       the correction key. [link to examples of allowable expressions]    &lt;br /&gt;
&lt;br /&gt;
Answer 1:[ 2.5 ]   	   Accepted error ± [0.5]   Grade: [100%] &lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Answer 2: [ &#039;&#039;&#039;100.4..100.5)&#039;&#039;&#039; ]	   Accepted error ± [_empty_]  Grade: [90%] &lt;br /&gt;
  Which would be interpreted  &#039;&#039;&#039;110.4 &amp;lt;= right &amp;lt; 100.5&#039;&#039;&#039;&lt;br /&gt;
   i.e. the round parentheses would mean that boundary not included in intervall&lt;br /&gt;
  or that one could enter evaluation strings like&lt;br /&gt;
  &#039;&#039;&#039;110.4&amp;lt;=ans&amp;lt;100.5||100.5&amp;lt;ans&amp;lt;=100.6&#039;&#039;&#039;&lt;br /&gt;
  &#039;&#039;(I know that this particular thing can be addressed by having&lt;br /&gt;
  100.5 +/-0  first than 100.5 +/-0.1)&#039;&#039;&lt;br /&gt;
Feedback: 	&lt;br /&gt;
&lt;br /&gt;
 Answer 3: ...&lt;br /&gt;
 Feedback: (for answer 3)	&lt;br /&gt;
&lt;br /&gt;
 Show 3 more alternative answer fields&lt;br /&gt;
&lt;br /&gt;
==Units mandatory or not==&lt;br /&gt;
===How the question has treated use of units=== &lt;br /&gt;
The actual philosophy of units in the question at present (-2008) is that the units are used to allow the student to answer the question in another unit than the one prescribed or implied by the question.&lt;br /&gt;
However this unit must have been specified when creating the question.&lt;br /&gt;
&lt;br /&gt;
This is why you set a multiplier to convert from your implied or expressed unit with a default 1 multiplier.&lt;br /&gt;
For example, if you enter a unit of &#039;cm&#039; here, and the accepted answer is 15, then the answers &#039;15cm&#039; and &#039;15&#039; are both accepted as correct. You can also specify a multiplier. So, if your main answer was 5500 with unit W, you can also add the unit kW with a multiplier of 0.001. This means that the answers &#039;5500&#039;, &#039;5500W&#039; or &#039;5.5kW&#039; would all be marked correct. Note that the accepted error is also multiplied, so an allowed error of 100W would become an error of 0.1kW. &lt;br /&gt;
For the response where the multiplier is 1 the unit is not mandatory.i.e.&#039;5500&#039;, &#039;5500W&#039;&lt;br /&gt;
However when the multiplier is not 1 then the units is mandatory. i.e. &#039;5.5kW&#039;&lt;br /&gt;
&lt;br /&gt;
===How most science/math teachers expect students to answer regarding units===&lt;br /&gt;
Usually a numerical answer without a unit is not considered complete. (At least in Sweden and when I grew up in the states 1960s) If one has an automatic correction of numerical values only, one must sacrifice the openness of the question by stipulating units.&lt;br /&gt;
&lt;br /&gt;
What Moodle&#039;s questions have often provided is the possibility of allowing quite open responses from the students and still it can give meaningful feedback and points. If we must say &amp;quot;your answer must be expressed in kilonewtons&amp;quot; we won&#039;t be able to discover the weaknesses that might have lead to the student thinking Joules. Knowing what unit is involved it an important part of the ability we try to teach the students and we must be able to evaluate it. That is not possible with the  question&#039;s present way of functioning. &lt;br /&gt;
&lt;br /&gt;
A student can answer &amp;quot;5.2&amp;quot; and gets full points without writing any unit whereas a student answering &amp;quot;52 millimeters&amp;quot; would get zero if no multiplier was stipulated OR the unit only expressed as &amp;quot;mm&amp;quot; or &amp;quot;millimeter&amp;quot;. The student with the 5.2 answer might have even been thinking &amp;quot;m&amp;quot; rather than the the teacher&#039;s expected &amp;quot;cm&amp;quot;. This would not be the case if it were a &amp;quot;paper&amp;quot; test/assignment.&lt;br /&gt;
&lt;br /&gt;
==Unit feedback options===&lt;br /&gt;
  differentiated unit feedback, which is all of:&lt;br /&gt;
           If there is no SPACE between the number and unit &amp;quot;There should always be a&lt;br /&gt;
                space between the number and the unit, except for degree sign ° and&lt;br /&gt;
  other planal angle units.&amp;quot; &lt;br /&gt;
           translate dimensionless &amp;quot;units&amp;quot;: % = *0.01; ppm=*1E-6 ppb. promille   &lt;br /&gt;
           feedback for lacking unit [_]Feedback for accepted UNIT but wrong number &lt;br /&gt;
           feedback for &amp;quot;possibly right number&amp;quot; if unit is adjusted&lt;br /&gt;
           feedback for &amp;quot;Unit not recognized, either misspelled, wrong type,&lt;br /&gt;
               or just not expected&amp;quot;&lt;br /&gt;
          (o) missed unit gives standard retry reduction of points (_)no reduction &lt;br /&gt;
               for missed unit (_)this reduction [___]  &lt;br /&gt;
          [[http://physics.nist.gov/cuu/Units/checklist.html|SI Unit rules and style conventions]] (#17  I don&#039;t&lt;br /&gt;
           understand. Otherwise a good colection of rules, at least about SI units.&lt;br /&gt;
           #16 is a rule that could be good to be abe to choose to enforce.) &lt;br /&gt;
  &lt;br /&gt;
===Unit: 	[       ] (optional)===&lt;br /&gt;
  Should accept arrays like &#039;&#039;&#039;kg, kilogram, kilograms , kilogramme, {&amp;quot;kilo gram&amp;quot;, keelograhm} &#039;&#039;&#039;&lt;br /&gt;
  where the ones enclosed in {} would be given feedback like&lt;br /&gt;
   &#039;&#039;We have interpretted &#039;&#039;&#039;keelograhm&#039;&#039;&#039; as a misspelling av &#039;&#039;&#039;kg&#039;&#039;&#039; Be aware that small spelling&lt;br /&gt;
    mistakes  like &#039;&#039;&#039;M&#039;&#039;&#039; in stead of &#039;&#039;&#039;m&#039;&#039;&#039; can lead to huge errors M=Mega=million&lt;br /&gt;
    m=milli= one thousandth&#039;&#039;&amp;quot; &lt;br /&gt;
	Alternative Units: 	&lt;br /&gt;
	Multiplier:[       ]    Unit: [_______]&lt;br /&gt;
 There should be the same possibility of unit arrays here.&lt;br /&gt;
&lt;br /&gt;
 Allow prefix units ($,£ maybe there are others )&lt;br /&gt;
&lt;br /&gt;
==The Multiplier should have an explanation (?)==&lt;br /&gt;
   &#039;&#039;If the student answers with this unit, the student answer will be multiplied with this number &lt;br /&gt;
   before being compared with the expected answer. Example:&lt;br /&gt;
   Answer [_10__] Unit [cm]&lt;br /&gt;
     alternative unit&lt;br /&gt;
     multiplier [_2.54_] unit [&amp;quot;, in, in., inch] &lt;br /&gt;
        (That &amp;quot; could be a tricky unit to handle!)&lt;br /&gt;
&lt;br /&gt;
==Then there are some things that I would be interested in having as options for all [maybe?] questiontypes (including numerical):==&lt;br /&gt;
&lt;br /&gt;
1) &amp;quot;Challenge&amp;quot; That a student is given (perhaps with a linked &amp;quot;!&amp;quot; or &amp;quot;Hmm..&amp;quot; or button) a chance to give his/her preferred answer and his/her motivation (or why they didn&#039;t understand, like, agree with the grade or feedback they got for their answer or how the question was phrased.) This might be implemented witn similar code to number 4 below.&lt;br /&gt;
&lt;br /&gt;
2) Hints option: option to include a clickable link that could display a/some hint(s), if the student didn&#039;t know how to attack a question. (It is possible, though hardly for html-illiterate, to use the OverLib.js which is included in Moodle to do this even now.&lt;br /&gt;
&lt;br /&gt;
3) Certainty (in the past sometimes called &amp;quot;confidence&amp;quot;) declaration option &lt;br /&gt;
     [__answer___]  certainty: Hi(o)|Med( )|Low( )&lt;br /&gt;
     if possible with CBM/CBG grading scale including negative&lt;br /&gt;
&lt;br /&gt;
4) All Internet pages (that the maintainer cares about) should have a [[Feedback link for all elements|feedback link]] something like this:&lt;br /&gt;
&lt;br /&gt;
[[http://tupo.biz/kurser/gemensam/kommunikation/PageFeedbackFormExpand.htm Completely satisfied with this page?]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Checkbox&amp;diff=28127</id>
		<title>Talk:Checkbox</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Checkbox&amp;diff=28127"/>
		<updated>2009-08-04T09:24:29Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: Checkbox label AFTER&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Checkbox label ==&lt;br /&gt;
&lt;br /&gt;
why AFTER (which is bolded in the text):&lt;br /&gt;
&amp;quot;Create a checkbox with an id attribute. Add a &amp;lt;label for=&amp;quot;id_of_checkbox&amp;quot;&amp;gt; element &#039;&#039;&#039;after&#039;&#039;&#039; the checkbox. As the text content of the label element, write the result of checking the box: &amp;quot;&lt;br /&gt;
&lt;br /&gt;
I seem to recall having placed a label so it includes both the checkbox and the text belonging to it. I have sometimes used that to put in a tooltip with a title=&amp;quot;when you put a check here, life will be wonderful ;-)&amp;quot; in the label tag and it would be good if that came up while hoovering over the checkbox itself. Isn&#039;t it also possible to make the checkbox &amp;quot;mouseclickable&amp;quot; even on the text which belongs to the checkbox?  [[User:Jeff Forssell|Jeff Forssell]] 09:24, 4 August 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=27997</id>
		<title>Talk:Setting up Netbeans</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=27997"/>
		<updated>2009-07-10T09:58:39Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CVS instructions ==&lt;br /&gt;
&lt;br /&gt;
I copied the instructions from [[User:Gary_Anderson| Gary Anderson]]&#039;s &#039;&#039;NetBeans for Moodle Development course&#039;&#039; (http://moodle2.seattleacademy.org/wiki/index.php/Get_the_Moodle_Software, http://moodle2.seattleacademy.org/course/view.php?id=5). There might be some redundancies which still have to be amended. --[[User:Frank Ralf|Frank Ralf]] 09:43, 20 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I was in the Gary Andersson course and there was a prepared package there with both NetBeans and Moodle. But Right now I can&#039;t get to that course at all. I am setting up on another computer and would like to have the latest NetBeans 6.7, and set up Moodle preferably both 1.9.5+ and HEAD 2.0. &lt;br /&gt;
&lt;br /&gt;
: When I see the instructions here I don&#039;t see anything about getting the xamp server setup. &lt;br /&gt;
&lt;br /&gt;
: I also wonder about if one should maybe use a complete install package first than connect that to NetBeans and after that try doing CVS updating through NetBeans. (I maybe wrong, but I assume that doing a complete install via CVS would take much longer.)  I also assume that I must than create an extra Moodle database in MySQL and of course a separate folder if I want to install 2.0 also.  [[User:Jeff Forssell|Jeff Forssell]] 13:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Hi Jeff, If you want to use CVS you should do a manual installation.&lt;br /&gt;
::* Setting up XAMPP is nothing more than downloading and unpacking it, really painless. The web server&#039;s directory will be \htdocs\.&lt;br /&gt;
::* Then you install NetBeans 6.7 and do separate CVS checkouts for HEAD (2.0) and 1.9.5 into separate directories (e.g. \htdocs\moodle19\ and \htdocs\moodle20\.&lt;br /&gt;
::* Then you can run Moodle 1.9.5 under &amp;quot;localhost/moodle19/&amp;quot; in your browser and Moodle &amp;quot;localhost/moodle20/&amp;quot;. &lt;br /&gt;
:: Further details for manually setting up Moodle you&#039;ll find under [[Windows installation using XAMPP]]. hth --[[User:Frank Ralf|Frank Ralf]] 13:42, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Thanx&lt;br /&gt;
&lt;br /&gt;
:::I&#039;ve done lots of xampp installs of the Moodle complete packages, but never just xampp alone. Should I interpret your answer as I have to install Moodle via CVS if I want to use CVS to keep it updated? And that it won&#039;t be ridiculously long time doing the original checkout? In the GA course we did a CVS update of the original install, but I don&#039;t know if he had done that package by doing a CVS checkout. (It just doesn&#039;t feel like that was what was going on!) &lt;br /&gt;
:::: The first checkout might take some time, but as far as I remember it&#039;s done in about 15 minutes. --[[User:Frank Ralf|Frank Ralf]] 16:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Oh well I suppose it&#039;s time to learn to create MySQL databases for Moodle without complete packages or Fantastico! [[User:Jeff Forssell|Jeff Forssell]] 15:04, 9 July 2009 (UTC)&lt;br /&gt;
:::: XAMPP comes with PHPMyAdmin for MySQL administration. That&#039;s a very useful tool and worth exploring. --[[User:Frank Ralf|Frank Ralf]] 16:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: Just another thing: Moodle 2.0 requires quite recent versions of PHP and MySQL. So for using HEAD I had to install a new version of XAMPP (I have two versions installed on my development machine which is no problem, you only should not run them at the same time). --[[User:Frank Ralf|Frank Ralf]] 16:14, 9 July 2009 (UTC)&lt;br /&gt;
::::: I have now CVSed moodle 1.9 with NetBeans - it took less than 10 mins. Created a new project. Then it started &amp;quot;scanning projects&amp;quot; - I didn&#039;t know what it is doing and it wasn&#039;t finished after more than 10 minutes. I see now that it has stopped. Anyhow now I\ve also done the same with HEAD / moodle20.&lt;br /&gt;
&lt;br /&gt;
:::::I have some hesitation about trying to &amp;quot;run&amp;quot; them. Anything one should do before that other than creating the projects?  [[User:Jeff Forssell|Jeff Forssell]] 08:55, 10 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: I see when trying to RUN that my moodle 2.0 is in http://localhost/moodle20/moodle/install.php while i thought it would be in http://localhost/moodle20/install.php. Maybe that&#039;s good because the NB proj files are in a folder there too. &lt;br /&gt;
&lt;br /&gt;
:::::When I get to the &amp;quot;web address&amp;quot; page that is greyed out. I was hoping to try out setting the computer name so I could access from others on my intranet. How can I change that (from &amp;quot;localhost&amp;quot;)?&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=27996</id>
		<title>Talk:Setting up Netbeans</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=27996"/>
		<updated>2009-07-10T08:55:52Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CVS instructions ==&lt;br /&gt;
&lt;br /&gt;
I copied the instructions from [[User:Gary_Anderson| Gary Anderson]]&#039;s &#039;&#039;NetBeans for Moodle Development course&#039;&#039; (http://moodle2.seattleacademy.org/wiki/index.php/Get_the_Moodle_Software, http://moodle2.seattleacademy.org/course/view.php?id=5). There might be some redundancies which still have to be amended. --[[User:Frank Ralf|Frank Ralf]] 09:43, 20 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I was in the Gary Andersson course and there was a prepared package there with both NetBeans and Moodle. But Right now I can&#039;t get to that course at all. I am setting up on another computer and would like to have the latest NetBeans 6.7, and set up Moodle preferably both 1.9.5+ and HEAD 2.0. &lt;br /&gt;
&lt;br /&gt;
: When I see the instructions here I don&#039;t see anything about getting the xamp server setup. &lt;br /&gt;
&lt;br /&gt;
: I also wonder about if one should maybe use a complete install package first than connect that to NetBeans and after that try doing CVS updating through NetBeans. (I maybe wrong, but I assume that doing a complete install via CVS would take much longer.)  I also assume that I must than create an extra Moodle database in MySQL and of course a separate folder if I want to install 2.0 also.  [[User:Jeff Forssell|Jeff Forssell]] 13:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Hi Jeff, If you want to use CVS you should do a manual installation.&lt;br /&gt;
::* Setting up XAMPP is nothing more than downloading and unpacking it, really painless. The web server&#039;s directory will be \htdocs\.&lt;br /&gt;
::* Then you install NetBeans 6.7 and do separate CVS checkouts for HEAD (2.0) and 1.9.5 into separate directories (e.g. \htdocs\moodle19\ and \htdocs\moodle20\.&lt;br /&gt;
::* Then you can run Moodle 1.9.5 under &amp;quot;localhost/moodle19/&amp;quot; in your browser and Moodle &amp;quot;localhost/moodle20/&amp;quot;. &lt;br /&gt;
:: Further details for manually setting up Moodle you&#039;ll find under [[Windows installation using XAMPP]]. hth --[[User:Frank Ralf|Frank Ralf]] 13:42, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Thanx&lt;br /&gt;
&lt;br /&gt;
:::I&#039;ve done lots of xampp installs of the Moodle complete packages, but never just xampp alone. Should I interpret your answer as I have to install Moodle via CVS if I want to use CVS to keep it updated? And that it won&#039;t be ridiculously long time doing the original checkout? In the GA course we did a CVS update of the original install, but I don&#039;t know if he had done that package by doing a CVS checkout. (It just doesn&#039;t feel like that was what was going on!) &lt;br /&gt;
:::: The first checkout might take some time, but as far as I remember it&#039;s done in about 15 minutes. --[[User:Frank Ralf|Frank Ralf]] 16:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Oh well I suppose it&#039;s time to learn to create MySQL databases for Moodle without complete packages or Fantastico! [[User:Jeff Forssell|Jeff Forssell]] 15:04, 9 July 2009 (UTC)&lt;br /&gt;
:::: XAMPP comes with PHPMyAdmin for MySQL administration. That&#039;s a very useful tool and worth exploring. --[[User:Frank Ralf|Frank Ralf]] 16:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: Just another thing: Moodle 2.0 requires quite recent versions of PHP and MySQL. So for using HEAD I had to install a new version of XAMPP (I have two versions installed on my development machine which is no problem, you only should not run them at the same time). --[[User:Frank Ralf|Frank Ralf]] 16:14, 9 July 2009 (UTC)&lt;br /&gt;
::::: I have now CVSed moodle 1.9 with NetBeans - it took less than 10 mins. Created a new project. Then it started &amp;quot;scanning projects&amp;quot; - I didn&#039;t know what it is doing and it wasn&#039;t finished after more than 10 minutes. I see now that it has stopped. Anyhow now I\ve also done the same with HEAD / moodle20.&lt;br /&gt;
&lt;br /&gt;
:::::I have some hesitation about trying to &amp;quot;run&amp;quot; them. Anything one should do before that other than creating the projects?  [[User:Jeff Forssell|Jeff Forssell]] 08:55, 10 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Setting_up_Netbeans&amp;diff=8947</id>
		<title>Setting up Netbeans</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Setting_up_Netbeans&amp;diff=8947"/>
		<updated>2009-07-10T07:48:02Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* CVS with NetBeans */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.netbeans.org/features/php/index.html NetBeans] has got a good PHP support. You find a host of information on the website (tutorials, developer blog, screen casts, etc.).&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* CVS integration: see all changes, lines deletion, diff in real time, show annotations, diff history...&lt;br /&gt;
* Ctrl+Click: Go to declaration&lt;br /&gt;
* Export/Import Diff Patch&lt;br /&gt;
* Easy navigation&lt;br /&gt;
* List of functions&lt;br /&gt;
* Code completion&lt;br /&gt;
* Instant rename&lt;br /&gt;
* HTML, CSS, JavaScript support&lt;br /&gt;
* MySQL manager&lt;br /&gt;
* Quick Search&lt;br /&gt;
* Very few bugs&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* I recommend to download the latest [http://www.netbeans.org/downloads/index.html 6.5 version with PHP support ]. It&#039;s only a 26 MB download.&lt;br /&gt;
* Install and run it.&lt;br /&gt;
&lt;br /&gt;
== Set up for Moodle development ==&lt;br /&gt;
&lt;br /&gt;
* Checkout your Moodle project with a &#039;&#039;&#039;CVS client&#039;&#039;&#039; - see [[CVS for Administrators]] or [[CVS for developers|CVS for Developers]]. I personally prefer to use an external client in order to realise the CVS Delete operation on my own. &lt;br /&gt;
&lt;br /&gt;
* Open File &amp;gt; New Project &amp;gt; PHP &amp;gt; PHP Application &amp;gt; Next &lt;br /&gt;
: You&#039;re going to set the project now. &#039;&#039;Name&#039;&#039;, &#039;&#039;Location&#039;&#039; and &#039;&#039;Folder&#039;&#039; are used by NetBeans and are not related to the source code. So you can choose whatever you like, except your source folder. &#039;&#039;Sources&#039;&#039; has to be your checked out Moodle branch/head folder. The rest is clear enough. Don&#039;t forget to choose UTF-8 for &#039;&#039;Default Encoding&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
: Example:&lt;br /&gt;
&lt;br /&gt;
 Project Name:        Moodle 1.9 Stable&lt;br /&gt;
 Project Location:    C:\Users\jerome\Documents\NetBeansProjects&lt;br /&gt;
 Project Folder:      C:\Users\jerome\Documents\NetBeansProjects\Moodle 1.9 Stable&lt;br /&gt;
 Project Sources:     C:\Users\jerome\Projects\branch19_STABLE\moodle&lt;br /&gt;
 Project URL:         http://localhost/moodle19/&lt;br /&gt;
 Index File:          index.php&lt;br /&gt;
 Create:              unchecked&lt;br /&gt;
 Default Encoding:    UTF-8&lt;br /&gt;
 Set as Main Project: unchecked&lt;br /&gt;
&lt;br /&gt;
* Click on Finish.&lt;br /&gt;
&lt;br /&gt;
* Start coding!&lt;br /&gt;
&lt;br /&gt;
== CVS with NetBeans ==&lt;br /&gt;
&lt;br /&gt;
NetBeans comes with &#039;&#039;&#039;integrated CVS support&#039;&#039;&#039; which might be the easiest way to check out Moodle.&lt;br /&gt;
&lt;br /&gt;
* In NetBeans, select Window-&amp;gt;Versioning-&amp;gt;CVS-&amp;gt;Checkout&lt;br /&gt;
* Select Team-&amp;gt;CVS-&amp;gt;Checkout&lt;br /&gt;
* Enter into CVS Root: &#039;&#039;:pserver:anonymous@us.cvs.moodle.org:/cvsroot/moodle&#039;&#039;&lt;br /&gt;
: (Non-US-residents might use one of the other [https://docs.moodle.org/en/CVS_for_Administrators#CVS_Servers Moodle CVS servers] nearer to them.)&lt;br /&gt;
* Click &#039;&#039;Next&#039;&#039;&lt;br /&gt;
* Browse or enter into &#039;&#039;Module:&#039;&#039; moodle&lt;br /&gt;
* Browse or enter into &#039;&#039;Branch:&#039;&#039; MOODLE_19_STABLE&lt;br /&gt;
* Browse or enter into &#039;&#039;Local Folder:&#039;&#039; C:\xampp\htdocs&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039; (and wait a few minutes for Moodle to be checked out)&lt;br /&gt;
* When you get the dialog box &amp;quot;Do you want to create an IDE project from the checked-out sources?&amp;quot;, Click &amp;quot;Create Project...&amp;quot;&lt;br /&gt;
* Select PHP Application with Existing Sources, and click Next&lt;br /&gt;
* Browse or enter into &#039;&#039;Sources Folder&#039;&#039; C:\xampp\htdocs\moodle&lt;br /&gt;
* Enter into &#039;&#039;Project Name:&#039;&#039; moodle&lt;br /&gt;
* Keep the other defaults and click next&lt;br /&gt;
* &#039;&#039;Run As:&#039;&#039; should have selected &#039;&#039;Local Web Site (running on local web server)&#039;&#039;&lt;br /&gt;
* Enter into Project URL http://localhost/moodle/&lt;br /&gt;
* Browse or enter into &#039;&#039;Index File:&#039;&#039; index.php&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Optimization ==&lt;br /&gt;
&lt;br /&gt;
1. You could want to run Netbeans with the Sun JDK. Netbeans seems to work a bit better with the Sun JDK. Download it from there: [http://java.sun.com/javase/downloads/index.jsp]. You&#039;ll have to edit Netbeans config file. Open netbeans/etc/netbeans.conf. Then uncomment and edit: &lt;br /&gt;
&lt;br /&gt;
 netbeans_jdkhome=&amp;quot;your_JDK_path&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. To change the Netbeans look and feel run netbeans in command line with this parameter:&lt;br /&gt;
 &amp;quot;netbeans&amp;quot;  --laf javax.swing.plaf.metal.MetalLookAndFeel &lt;br /&gt;
&lt;br /&gt;
3. If Netbeans starts to slow down, give it more memory&lt;br /&gt;
 &amp;quot;netbeans&amp;quot; -J-Xmx600m&lt;br /&gt;
&lt;br /&gt;
== See also: ==&lt;br /&gt;
* Moodle forum: [http://moodle.org/mod/forum/discuss.php?d=112972 NetBeans 6.5 for moodle/PHP/debugging is a better experience v.s Eclipse]&lt;br /&gt;
* [http://www.netbeans.org/kb/trails/php.html NetBeans PHP Learning Trail]&lt;br /&gt;
* [http://wiki.netbeans.org/PHP NetBeans PHP Wiki]&lt;br /&gt;
* [http://blogs.sun.com/netbeansphp/ NetBeans for PHP Blog]&lt;br /&gt;
&lt;br /&gt;
[[Category:NetBeans]]&lt;br /&gt;
[[Category:Developer tools|NetBeans]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=27993</id>
		<title>Talk:Setting up Netbeans</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=27993"/>
		<updated>2009-07-09T15:05:06Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* CVS instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CVS instructions ==&lt;br /&gt;
&lt;br /&gt;
I copied the instructions from [[User:Gary_Anderson| Gary Anderson]]&#039;s &#039;&#039;NetBeans for Moodle Development course&#039;&#039; (http://moodle2.seattleacademy.org/wiki/index.php/Get_the_Moodle_Software, http://moodle2.seattleacademy.org/course/view.php?id=5). There might be some redundancies which still have to be amended. --[[User:Frank Ralf|Frank Ralf]] 09:43, 20 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I was in the Gary Andersson course and there was a prepared package there with both NetBeans and Moodle. But Right now I can&#039;t get to that course at all. I am setting up on another computer and would like to have the latest NetBeans 6.7, and set up Moodle preferably both 1.9.5+ and HEAD 2.0. &lt;br /&gt;
&lt;br /&gt;
: When I see the instructions here I don&#039;t see anything about getting the xamp server setup. &lt;br /&gt;
&lt;br /&gt;
: I also wonder about if one should maybe use a complete install package first than connect that to NetBeans and after that try doing CVS updating through NetBeans. (I maybe wrong, but I assume that doing a complete install via CVS would take much longer.)  I also assume that I must than create an extra Moodle database in MySQL and of course a separate folder if I want to install 2.0 also.  [[User:Jeff Forssell|Jeff Forssell]] 13:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Hi Jeff, If you want to use CVS you should do a manual installation.&lt;br /&gt;
::* Setting up XAMPP is nothing more than downloading and unpacking it, really painless. The web server&#039;s directory will be \htdocs\.&lt;br /&gt;
::* Then you install NetBeans 6.7 and do separate CVS checkouts for HEAD (2.0) and 1.9.5 into separate directories (e.g. \htdocs\moodle19\ and \htdocs\moodle20\.&lt;br /&gt;
::* Then you can run Moodle 1.9.5 under &amp;quot;localhost/moodle19/&amp;quot; in your browser and Moodle &amp;quot;localhost/moodle20/&amp;quot;. &lt;br /&gt;
:: Further details for manually setting up Moodle you&#039;ll find under [[Windows installation using XAMPP]]. hth --[[User:Frank Ralf|Frank Ralf]] 13:42, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thanx&lt;br /&gt;
&lt;br /&gt;
I&#039;ve done lots of xampp installs of the Moodle complete packages, but never just xampp alone. Should I interpret your answer as I have to install Moodle via CVS if I want to use CVS to keep it updated? And that it won&#039;t be ridiculously long time doing the original checkout? In the GA course we did a CVS update of the original install, but I don&#039;t know if he had done that package by doing a CVS checkout. (It just doesn&#039;t feel like that was what was going on!) &lt;br /&gt;
&lt;br /&gt;
Oh well I suppose it&#039;s time to learn to create MySQL databases for Moodle without complete packages or Fantastico! [[User:Jeff Forssell|Jeff Forssell]] 15:04, 9 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=27992</id>
		<title>Talk:Setting up Netbeans</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=27992"/>
		<updated>2009-07-09T15:04:27Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* CVS instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CVS instructions ==&lt;br /&gt;
&lt;br /&gt;
I copied the instructions from [[User:Gary_Anderson| Gary Anderson]]&#039;s &#039;&#039;NetBeans for Moodle Development course&#039;&#039; (http://moodle2.seattleacademy.org/wiki/index.php/Get_the_Moodle_Software, http://moodle2.seattleacademy.org/course/view.php?id=5). There might be some redundancies which still have to be amended. --[[User:Frank Ralf|Frank Ralf]] 09:43, 20 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I was in the Gary Andersson course and there was a prepared package there with both NetBeans and Moodle. But Right now I can&#039;t get to that course at all. I am setting up on another computer and would like to have the latest NetBeans 6.7, and set up Moodle preferably both 1.9.5+ and HEAD 2.0. &lt;br /&gt;
&lt;br /&gt;
: When I see the instructions here I don&#039;t see anything about getting the xamp server setup. &lt;br /&gt;
&lt;br /&gt;
: I also wonder about if one should maybe use a complete install package first than connect that to NetBeans and after that try doing CVS updating through NetBeans. (I maybe wrong, but I assume that doing a complete install via CVS would take much longer.)  I also assume that I must than create an extra Moodle database in MySQL and of course a separate folder if I want to install 2.0 also.  [[User:Jeff Forssell|Jeff Forssell]] 13:02, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Hi Jeff, If you want to use CVS you should do a manual installation.&lt;br /&gt;
::* Setting up XAMPP is nothing more than downloading and unpacking it, really painless. The web server&#039;s directory will be \htdocs\.&lt;br /&gt;
::* Then you install NetBeans 6.7 and do separate CVS checkouts for HEAD (2.0) and 1.9.5 into separate directories (e.g. \htdocs\moodle19\ and \htdocs\moodle20\.&lt;br /&gt;
::* Then you can run Moodle 1.9.5 under &amp;quot;localhost/moodle19/&amp;quot; in your browser and Moodle &amp;quot;localhost/moodle20/&amp;quot;. &lt;br /&gt;
:: Further details for manually setting up Moodle you&#039;ll find under [[Windows installation using XAMPP]]. hth --[[User:Frank Ralf|Frank Ralf]] 13:42, 9 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thanx&lt;br /&gt;
&lt;br /&gt;
I&#039;ve done lots of xampp installs of the Moodle complete packages, but never just xampp alone. Should I interpret your answer as I have to install Moodle via CVS if I want to use CVS to keep it updated? And that it wou&#039;t be ridiculously long time doing the original checkout? In the GA course we did a CVS update of the original install, but I don&#039;t know if he had done that package by doing a CVS checkout. (It just doesn&#039;t feel like that was what was going on!) &lt;br /&gt;
&lt;br /&gt;
Oh well I suppose it&#039;s time to learn to create MySQL databases for Moodle without complete packages or Fantastico! [[User:Jeff Forssell|Jeff Forssell]] 15:04, 9 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=27989</id>
		<title>Talk:Setting up Netbeans</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Setting_up_Netbeans&amp;diff=27989"/>
		<updated>2009-07-09T13:02:12Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* CVS instructions */ including xamp and 2 Moodles?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CVS instructions ==&lt;br /&gt;
&lt;br /&gt;
I copied the instructions from [[User:Gary_Anderson| Gary Anderson]]&#039;s &#039;&#039;NetBeans for Moodle Development course&#039;&#039; (http://moodle2.seattleacademy.org/wiki/index.php/Get_the_Moodle_Software, http://moodle2.seattleacademy.org/course/view.php?id=5). There might be some redundancies which still have to be amended. --[[User:Frank Ralf|Frank Ralf]] 09:43, 20 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I was in the Gary Andersson course and there was a prepared package there with both NetBeans and Moodle. But Right now I can&#039;t get to that course at all. I am setting up on another computer and would like to have the latest NetBeans 6.7, and set up Moodle preferably both 1.9.5+ and HEAD 2.0. When I see the instructions here I don&#039;t see anything about getting the xamp server setup. I also wonder about if one should maybe use a complete install package first than connect that to NetBeans and after that try doing CVS updating through NetBeans. (I maybe wrong, but I assume that doing a complete install via CVS would take much longer.)  I also assume that I must than create an extra Moodle database in MySQL and of course a separate folder if I want to install 2.0 also.  [[User:Jeff Forssell|Jeff Forssell]] 13:02, 9 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Places_to_search_for_lang_strings&amp;diff=28077</id>
		<title>Talk:Places to search for lang strings</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Places_to_search_for_lang_strings&amp;diff=28077"/>
		<updated>2009-07-09T09:56:58Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Not sure where to put this, but here goes. Often a Moodle user will like to adjust a particular sting the he sees when using Moodle. It is often a problem to find WHICH PHP file is the one that it is associated with. I think I have even tried doing  a search in a local moodle install to try to find a string and I don&#039;t think that worked as well as I had hoped. The best thing would be a search option built into Moodle. Could a browser plugin like firebug or webdeveloper be of any assistance?&lt;br /&gt;
&lt;br /&gt;
Also the link to phpdocs at the bottom of the page doesn&#039;t work [[User:Jeff Forssell|Jeff Forssell]] 08:55, 8 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: You might like MDL-19467 - implemented in HEAD.--[[User:Tim Hunt|Tim Hunt]] 13:58, 8 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
That sounds good. But it is only for 2.0? Is there any sandbox to try it in? Or just by making a local 2.0 beta install?&lt;br /&gt;
I have spent an hour now trying to find what HEAD really means. I have a vague contextual feeling from many Using Moodle posts, but I would like to understand it. Could you put in something here: https://docs.moodle.org/en/index.php?title=HEAD&amp;amp;action=edit&amp;amp;redlink=1 [[User:Jeff Forssell|Jeff Forssell]] 09:31, 9 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Places_to_search_for_lang_strings&amp;diff=28076</id>
		<title>Talk:Places to search for lang strings</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Places_to_search_for_lang_strings&amp;diff=28076"/>
		<updated>2009-07-09T09:31:15Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Not sure where to put this, but here goes. Often a Moodle user will like to adjust a particular sting the he sees when using Moodle. It is often a problem to find WHICH PHP file is the one that it is associated with. I think I have even tried doing  a search in a local moodle install to try to find a string and I don&#039;t think that worked as well as I had hoped. The best thing would be a search option built into Moodle. Could a browser plugin like firebug or webdeveloper be of any assistance?&lt;br /&gt;
&lt;br /&gt;
Also the link to phpdocs at the bottom of the page doesn&#039;t work [[User:Jeff Forssell|Jeff Forssell]] 08:55, 8 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: You might like MDL-19467 - implemented in HEAD.--[[User:Tim Hunt|Tim Hunt]] 13:58, 8 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
That sounds good. But it is only for 2.0? Is there any sandbox to try it in? Or just by making a local 2.0 beta install?&lt;br /&gt;
I have spent an hour now trying to find what HEAD really means. I have a vagues contextual feeling from many Usin Moodle posts, but i would like to understand it. Could you puit in something here: https://docs.moodle.org/en/index.php?title=HEAD&amp;amp;action=edit&amp;amp;redlink=1 [[User:Jeff Forssell|Jeff Forssell]] 09:31, 9 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Developer_documentation&amp;diff=644</id>
		<title>Developer documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Developer_documentation&amp;diff=644"/>
		<updated>2009-07-09T08:27:41Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Resources */ wish for an explanation of what HEAD is&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This [[:Category:Developer|Developer]] section of Moodle Docs is aimed at developers who contribute to the Moodle code, plugins, themes, and so on.&lt;br /&gt;
* If you manage a Moodle site, [[Administrator documentation]] may suit your needs better. &lt;br /&gt;
* If you teach using Moodle, try [[Teacher documentation]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; New developer documentation pages should be added to the &#039;&#039;Development namespace&#039;&#039; by typing &amp;lt;code&amp;gt;Development:&amp;lt;/code&amp;gt; before the new page name i.e. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[New page name]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. If you are a developer, you probably want to change your [[Special:Preferences|preferences]] to include the Development namespace in searches.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A page may be added to the Developer category by adding the template &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{CategoryDeveloper}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to the bottom of the page. - If required, you can use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Sort key]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to provide a sort key other than the default page name.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How Moodle development works==&lt;br /&gt;
&lt;br /&gt;
The [[Overview|overview of the Moodle development process]] explains how Moodle development occurs and how people become Moodle developers. Current plans are listed on the [[Roadmap]].&lt;br /&gt;
&lt;br /&gt;
You can also enrol in one of the [http://dev.moodle.org Moodle Developer Courses].&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
&lt;br /&gt;
The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:&lt;br /&gt;
*[[Coding|Coding guidelines]] have to be followed by all Moodle developers&lt;br /&gt;
*[[Moodle design goals]] spells out the basic design goals behind Moodle&lt;br /&gt;
*[[Interface guidelines]] aim to provide a common feel to the Moodle user interface&lt;br /&gt;
*[[CVS (developer)|Moodle CVS for developers]] explains how to work with the Moodle code in CVS&lt;br /&gt;
*[[Tracker]] explains the Moodle Tracker for keeping track of bugs, issues, feature requests etc&lt;br /&gt;
*[[Working with the Community|Working with the Community]] explains how to engage with the dev community and discuss changes&lt;br /&gt;
*[[Unit tests|Unit tests]] explains how to run the unit tests, and how to write new test cases.&lt;br /&gt;
*[[Fast portable SQL]] shows SQL techniques that are fast, efficient, and known to work on all supported DBs.&lt;br /&gt;
&lt;br /&gt;
==Documentation for core components==&lt;br /&gt;
&lt;br /&gt;
This section is for documentation of specific components of the existing core Moodle code. Discussion of components that are under discussion or in development can be found in the [[Developer notes|developer notes]] or on the [[Roadmap|roadmap]].&lt;br /&gt;
&lt;br /&gt;
The documents below give a general overview. For detailed function-by-function documentation, see the [http://phpdocs.moodle.org/ phpDocumentor] documentation that is automatically generated from the comments in the code. &lt;br /&gt;
&lt;br /&gt;
And don&#039;t forget that the most up-to-date and detailed description of how the code works is the code itself, and you can [http://xref.moodle.org/nav.html?index.html browse the code online] using [[PHPXref|PHPXref]].&lt;br /&gt;
&lt;br /&gt;
===Core components that affect everything===&lt;br /&gt;
&lt;br /&gt;
*[[Database schema introduction|The database schema]]&lt;br /&gt;
*[[What happens when you require config.php|What happens when you require config.php]]&lt;br /&gt;
*lib/moodlelib.php &lt;br /&gt;
*[[lib/weblib.php|lib/weblib.php]] for outputting stuff&lt;br /&gt;
*[[JavaScript_functions|JavaScript function available on the client side]]&lt;br /&gt;
*[[XMLDB_Documentation|Database abstraction layer]] @ v[[1.7]]&lt;br /&gt;
*[[Roles|Roles and Capabilities system]] @ v[[1.7]] for controlling who can do what&lt;br /&gt;
*[[lib/formslib.php|Forms library]] @ v[[1.8]] for creating accessible and secure HTML forms that let users edit things&lt;br /&gt;
*[[Using_the_file_API|File API]] @ v[[2.0]] for managing files stored by Moodle&lt;br /&gt;
&lt;br /&gt;
===Core libraries with a more specific uses===&lt;br /&gt;
&lt;br /&gt;
*[[Authentication API]]&lt;br /&gt;
*[[Cookieless Sessions]]&lt;br /&gt;
*[[Email processing]]&lt;br /&gt;
*[[Environment checking|Environment checking]] before install, check the user&#039;s server to ensure Moodle will work there.&lt;br /&gt;
*[[Groups|Groups system]]&lt;br /&gt;
*[[Grades|Gradebook]]&lt;br /&gt;
*[[Moodle Network|Moodle Network]]&lt;br /&gt;
*[[Question engine]]&lt;br /&gt;
*[[Stats package]]&lt;br /&gt;
*[[UTF-8 migration|Migration to UTF-8]] @ v[[:Category:Moodle 1.6|1.6]]&lt;br /&gt;
*[http://developer.yahoo.com/yui YUI JavaScript library] - YUI was selected as the official AJAX library for Moodle.&lt;br /&gt;
*[[lib/graphlib|lib/graphlib]]&lt;br /&gt;
*[[Admin settings|Admin settings]]&lt;br /&gt;
&lt;br /&gt;
===Modules included in the standard distribution===&lt;br /&gt;
&lt;br /&gt;
*[[Lesson Specification|Lesson Specification]]&lt;br /&gt;
*[[Quiz developer docs|Quiz module]]&lt;br /&gt;
*[[SCORM schema|SCORM module 1.5 schema]]&lt;br /&gt;
&lt;br /&gt;
==How you can contribute==&lt;br /&gt;
&lt;br /&gt;
===Make a new plugin===&lt;br /&gt;
&lt;br /&gt;
The M in Moodle stands for modular, and the easiest, most maintainable way to add new functionality to Moodle is by using one of the many plugin APIs. There are many types of plugin you can write:&lt;br /&gt;
*[[Modules|Activity modules]], see also [[NEWMODULE Documentation]] (work in progress)&lt;br /&gt;
*[[Admin reports|Admin reports]]&lt;br /&gt;
*[[Assignment types|Assignment types]]&lt;br /&gt;
*[[Authentication plugins|Authentication plugins]]&lt;br /&gt;
*[[Blocks|Blocks]]&lt;br /&gt;
*[[Course formats]]&lt;br /&gt;
*[[Course Report Plugins|Course reports]]&lt;br /&gt;
*[[Database fields|Database fields]]&lt;br /&gt;
*[[Database presets|Database presets]]&lt;br /&gt;
*[[Enrolment plugins|Enrolment plugins]]&lt;br /&gt;
*[[Filters|Filters]]&lt;br /&gt;
*[[Gradebook plugins|Gradebook plugins]] (1.9 onwards)&lt;br /&gt;
**[[Gradebook_Report_Tutorial|Gradebook report]]&lt;br /&gt;
**[[Gradebook export|Gradebook export]]&lt;br /&gt;
**[[Gradebook import|Gradebook import]]&lt;br /&gt;
*[[Writing_a_Portfolio_Plugin|Portfolio plugins]] (2.0 onwards)&lt;br /&gt;
*[[Question_type_plugin_how_to|Question types]]&lt;br /&gt;
*[[Question import/export formats|Question import/export formats]]&lt;br /&gt;
*[[How to write a quiz report plugin|Quiz reports]]&lt;br /&gt;
*[[Repository plugins|Repository plugins]] (2.0 onwards)&lt;br /&gt;
*[[Resource types|Resource types]]&lt;br /&gt;
*[[Search engine adapters|Search engine adapters]]&lt;br /&gt;
&lt;br /&gt;
General information that applies to all types of plugins&lt;br /&gt;
*[[Places to search for lang strings|Where to put language strings for your plugin]]&lt;br /&gt;
*[[Installing and upgrading plugin database tables|Defining the database tables for your plugin]]&lt;br /&gt;
&lt;br /&gt;
Please see the [[Guidelines for contributed code|Guidelines for contributed code]] for an overview of how to contribute to the Moodle code.&lt;br /&gt;
&lt;br /&gt;
Sometimes it is not possible to write a proper plugin for what you want to do, in which case you may have to resort to using the [[Local_customisation|local customisations]] hook.&lt;br /&gt;
&lt;br /&gt;
===Change core code===&lt;br /&gt;
&lt;br /&gt;
Some types of change can only be made by editing the core Moodle code. Such changes are much harder to maintain than plugins. If you want your core change to be considered for inclusion in the official Moodle release, you need to create an issue in the [[Tracker|tracker]], and attach your change as a [[How_to_create_a_patch|patch]]. It is also a good idea to discuss your ideas in the forums first.  See [[Overview#Major_Development]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Ways to contribute that do not involve PHP programming===&lt;br /&gt;
&lt;br /&gt;
*[[Themes|Create Moodle themes]]&lt;br /&gt;
*[[Translation|Translate Moodle into other languages]]&lt;br /&gt;
*[[MoodleDocs:Guidelines for contributors|Help document Moodle]]&lt;br /&gt;
*[[Tests|Join the testing effort]], which involves [[Tracker|participating in the bug tracker]]&lt;br /&gt;
&lt;br /&gt;
==Plans for the future==&lt;br /&gt;
&lt;br /&gt;
Ideas for and details of planned future features of Moodle are initially discussed on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course at moodle.org. That developer discussions are intermixed with user discussions in the same forums may seem strange at first but is one of the reasons for the success of Moodle. It is important that both end-users and developers discuss the future features together.&lt;br /&gt;
&lt;br /&gt;
Once ideas begin to crystallize on the forums they can be summarized in this wiki, either as part of the [[Roadmap|roadmap]] or in the form of [[Developer notes|developer notes]]. These pages then form the basis for further discussion in the forums.&lt;br /&gt;
&lt;br /&gt;
*[[Roadmap]]&lt;br /&gt;
*[[Developer notes|Developer notes]]&lt;br /&gt;
*[[Student projects]]&lt;br /&gt;
*[[Developer meetings]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
*[[Developer FAQ]] - frequently asked questions, especially useful for newcomers to Moodle&lt;br /&gt;
*[[Finding_your_way_into_the_Moodle_code|Finding your way into the Moodle code]] - also aimed at newcomers&lt;br /&gt;
*[http://tracker.moodle.org/ Moodle tracker] - bug reports, feature requests and other tracked issues&lt;br /&gt;
**[[Firefox tracker search]] - How to setup a firefox quicksearch to easily navigate to moodle bugs&lt;br /&gt;
**[[Firefox tracker search#Firefox Search Plugins|Firefox Search Plugins]] - Find tracked issues even more easily&lt;br /&gt;
*[[Unmerged files]] - changes on the stable branch in CVS that have not been merged to [[HEAD]]&lt;br /&gt;
*Browse the code online:&lt;br /&gt;
**[http://cvs.moodle.org/moodle/ the code with a complete change history from CVS]&lt;br /&gt;
**[http://xref.moodle.org/index.html the code, with links generated by PHPXref]&lt;br /&gt;
*[http://phpdocs.moodle.org/ Moodle PHP doc reference] - compiled from the comment attached to each class and function in the code&lt;br /&gt;
*[[Database Schema|Database Schema]] - for recent releases&lt;br /&gt;
*[http://moodle.org/course/view.php?id=5#4 Development news and discussion] section of Using Moodle course&lt;br /&gt;
**especially the [http://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
**[[Filters used on the Moodle.org forums|cool tricks you can use in the moodle.org forums]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
Some tools people use when working on Moodle code:&lt;br /&gt;
&lt;br /&gt;
=== IDEs ===&lt;br /&gt;
&lt;br /&gt;
* [[Setting_up_Netbeans|Setting up NetBeans for Moodle development]] - NetBeans for PHP is a great out-of-the-box editor.&lt;br /&gt;
* [[Setting_up_Eclipse|Setting up Eclipse for Moodle development]] - Eclipse is a great editor to use for php development, if you can work out how to set it up.&lt;br /&gt;
* [[vim|Setting up Vim for Moodle development]]&lt;br /&gt;
&lt;br /&gt;
=== Browser add-ons ===&lt;br /&gt;
*[http://getfirebug.com Firebug], see [[Firebug]].&lt;br /&gt;
* [[Web developer extension]]&lt;br /&gt;
* [https://addons.mozilla.org/en-US/firefox/addon/394 ViewSourceWith] - The main goal is to view page source with external applications, but you can do a lot of other things as well.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous === &lt;br /&gt;
*[[ctags|Ctags]] - Using a tags file to navigate code&lt;br /&gt;
*[[W3C_validation|W3C HTML validator]] - Moodle has built in support to make using it easier.&lt;br /&gt;
*[[Windows Installer|Windows Installer]] - Windows Installer documentation for developer.&lt;br /&gt;
&lt;br /&gt;
See also: [http://dev.moodle.org/mod/forum/view.php?id=18 Useful Development Tools forum]in the [http://dev.moodle.org/course/view.php?id=2 Introduction to Moodle Programming course]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[http://security.moodle.org/ Moodle Security Centre]&lt;br /&gt;
*[http://moodle.com/partners/ Moodle Partners] - providers of custom Moodle development services&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer tools]]&lt;br /&gt;
&lt;br /&gt;
[[ru:Development:Краткий обзор]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Places_to_search_for_lang_strings&amp;diff=28074</id>
		<title>Talk:Places to search for lang strings</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Places_to_search_for_lang_strings&amp;diff=28074"/>
		<updated>2009-07-08T08:55:24Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Not sure where to put this, but here goes. Often a Moodle user will like to adjust a particular sting the he sees when using Moodle. It is often a problem to find WHICH PHP file is the one that it is associated with. I think I have even tried doing  a search in a local moodle install to try to find a string and I don&#039;t think that worked as well as I had hoped. The best thing would be a search option built into Moodle. Could a browser plugin like firebug or webdeveloper be of any assistance?&lt;br /&gt;
&lt;br /&gt;
Also the link to phpdocs at the bottom of the page doesn&#039;t work [[User:Jeff Forssell|Jeff Forssell]] 08:55, 8 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Places_to_search_for_lang_strings&amp;diff=28073</id>
		<title>Talk:Places to search for lang strings</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Places_to_search_for_lang_strings&amp;diff=28073"/>
		<updated>2009-07-08T08:54:20Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: New page: Not sure where to put this, but here goes. Often a Moodle user will like to adjust a particular sting the he sees when using Moodle. It is often a problem to find WHICH PHP file is the one...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Not sure where to put this, but here goes. Often a Moodle user will like to adjust a particular sting the he sees when using Moodle. It is often a problem to find WHICH PHP file is the one that it is associated with. I think I have even tried doing  a search in a local moodle install to try to find a string and I don&#039;t think that worked as well as I had hoped. The best thing would be a search option built into Moodle. Could a browser plugin like firebug or webdeveloper be of any assistance?&lt;br /&gt;
&lt;br /&gt;
Also the link to phpinfo at the bottom of the page doesn&#039;t work&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Coding_style&amp;diff=27948</id>
		<title>Talk:Coding style</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Coding_style&amp;diff=27948"/>
		<updated>2009-05-27T07:17:14Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: Trailing spaces to be left when they are in a CVS original??&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PHP5 constructor ==&lt;br /&gt;
&lt;br /&gt;
Should we enforce the PHP5 constructor __construct() instead of $classname() [[User:Nicolas Connault|Nicolas Connault]] 19:55, 19 May 2009 (UTC)&lt;br /&gt;
:+1. I think we agreed about that some time ago (when igniting some 2.0 developments) --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 00:03, 20 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Inline comments ==&lt;br /&gt;
&lt;br /&gt;
I have been using since ages ago &amp;quot;///&amp;quot; with outer alignment (I think that it was caused by some agreement long time ago, not my decision), for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
function check_moodle_environment(..., ..., ..., ...) {&lt;br /&gt;
&lt;br /&gt;
    $status = true;&lt;br /&gt;
&lt;br /&gt;
/// This are cached per request&lt;br /&gt;
    static $result = true;&lt;br /&gt;
    static $env_results;&lt;br /&gt;
    static $cache_exists = false;&lt;br /&gt;
&lt;br /&gt;
/// if we have results cached, use them&lt;br /&gt;
    if ($cache_exists) {&lt;br /&gt;
        $environment_results = $env_results;&lt;br /&gt;
/// No cache exists, calculate everything&lt;br /&gt;
    } else {&lt;br /&gt;
    /// Get the more recent version before the requested&lt;br /&gt;
        if (!$version = get_latest_version_available($version, $env_select)) {&lt;br /&gt;
            $status = false;&lt;br /&gt;
        }&lt;br /&gt;
        ....&lt;br /&gt;
        ....&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Is that allowed, or only the &amp;quot;//&amp;quot; with inner alignment as commented at [[Coding style#Inline comments|inline comments]] --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 00:03, 20 May 2009 (UTC)&lt;br /&gt;
==Trailing spaces==&lt;br /&gt;
&amp;quot;Lines should not contain trailing spaces. In order to facilitate this convention, most editors can be configured to strip trailing spaces, such as upon a save operation. However, if you are editing an existing Moodle file and are planning to submit your changes to CVS, please switch off that feature so that whitespace changes do not pollute CVS history (other developers will have trouble viewing what you&#039;ve done if every other line has been edited for whitespace).&amp;quot;&lt;br /&gt;
Wouldn&#039;t the CVS history only get &#039;polluted&#039; when someone fetched a file that DIDN&#039;T follow this principle and returned it following the principle? Isn&#039;t that the price that has to be paid to clean things up? Otherwise this is pretty scary for someone who feels: &amp;quot;Great I can turn on my editor to autostrip those when saving. BUT I have to remember to turn that off if submitting it! (Or become a &#039;polluter&#039;!)&amp;quot; &lt;br /&gt;
And what happens if I have already saved it locally while working on (and striped those trailing spaces) and later try to commit it. Maybe my ignorance about CVS is making me pose a &amp;quot;silly&amp;quot; question. [[User:Jeff Forssell|Jeff Forssell]] 07:17, 27 May 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Patching_forms_tutorial&amp;diff=9541</id>
		<title>Patching forms tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Patching_forms_tutorial&amp;diff=9541"/>
		<updated>2009-04-03T06:56:53Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: overflowing lines in pre block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;by Gary Anderson&lt;br /&gt;
&lt;br /&gt;
One of the easiest local modifications that an institution can make to customize their Moodle site is to make simple changes to the form elements that appear on pages.  This permits one to set different default values when creating new items, allows one to hide unused input elements to simplify the interface, and lets one identify certain more complicated elements as &amp;quot;advanced&amp;quot; so that features are still availale while simplifying the interface for most uses.&lt;br /&gt;
&lt;br /&gt;
This tutorial will demonstrate how to do such modifications.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Warning&#039;&#039;&#039;&lt;br /&gt;
 Making custom changes to the PHP scripting code in Moodle should be done carefully.&lt;br /&gt;
 You should always test your code before using it on your production site and should&lt;br /&gt;
 backup the  original scripts.&lt;br /&gt;
 You should always comment your code so you know what has been changed.&lt;br /&gt;
 Care should also be taken during upgrades in the code to make sure things are not&lt;br /&gt;
 broken  (like conflicts during a CVS update).&lt;br /&gt;
&lt;br /&gt;
Having said that, these patches are among the simplest and the recovery from an error is easy:  simply replace the file with original from the core distribution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle Forms Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rather than placing HTML form elements directly on the page, most well-written Moodle code will use the Forms Library.  This allows a standard way to create user input elements and also centralizes code making it easier to override certain behaviors creating a greater consistency.&lt;br /&gt;
&lt;br /&gt;
An entire form is an &amp;quot;object&amp;quot; with methods and attributes.  In many places in the Moodle code, the instance of the object is identified by the variable $mform, but you can use any variable.&lt;br /&gt;
&lt;br /&gt;
Common methods of the form object look like:&lt;br /&gt;
&lt;br /&gt;
* $mform-&amp;gt;addelement(&amp;lt;elementtype&amp;gt;,&amp;lt;elementidentifier&amp;gt;,&amp;lt;displayname&amp;gt;,&amp;lt;options&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
This creates a new input element on a page.&lt;br /&gt;
&lt;br /&gt;
While forms can be produced in any scripting page which outputs code, you will often find code for printing out forms in a file like mod_form.php or in index.php of the affected component.  The examine the URL of the page being viewed as a starting point for finding the file to be changed.&lt;br /&gt;
&lt;br /&gt;
Always comment your code so you can change or remove it later..  For single line modifications, considering putting in your new code, and then end it with //&amp;lt;yourusername&amp;gt; &amp;lt;date&amp;gt; &amp;lt;the old code&amp;gt;.  This allows for retention of existing line numbers.&lt;br /&gt;
&lt;br /&gt;
==Changing defaults==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;setDefault&#039;&#039;&#039; method is used to establish the initial value used in the form and allows you to to define the most common setting for use in your institution.&lt;br /&gt;
&lt;br /&gt;
Example:  Change the default number of points for a default assignment from 100 points to 10 points.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
In the file /mod/assignment/mod_form.php, find&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;grade&#039;, 100);&lt;br /&gt;
&lt;br /&gt;
Change the default to 10, and comment out the previous code with your initial and dates:&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;grade&#039;, 10); //GVA 20080608 $mform-&amp;gt;setDefault(&#039;grade&#039;, 100);&lt;br /&gt;
&lt;br /&gt;
==Hiding fields==&lt;br /&gt;
&lt;br /&gt;
Form elements are created for a page using the &#039;&#039;&#039;addElement&#039;&#039;&#039; method.  Various types of element are text, select, date_time_selector, htmleditor, etc.&lt;br /&gt;
&lt;br /&gt;
There is also the type &amp;quot;hidden&amp;quot; that defines the element on a page and allows you to set a default value, stores previous values from a submission etc.  To simplify your forms for you users, simply change the type of the field during when addElement is called to hidden.&lt;br /&gt;
&lt;br /&gt;
Example:  Your site does not want to use meta courses and you want to remove it from the course creation/edit page.  In the file /course/edit_form.php&lt;br /&gt;
&lt;br /&gt;
Change:&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;addElement(&#039;select&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta);&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;addElement(&#039;hidden&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta); //GVA 20080610 $mform-&amp;gt;addElement(&#039;select&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta);&lt;br /&gt;
&lt;br /&gt;
==Setting fields to &amp;quot;Advanced&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
For elements that are infrequently used in your institution, you can still simplify the interface while making options still available to your &#039;Power Users&#039; by marking elements as &amp;quot;advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These elements only appear to the user when they click the &amp;quot;Set Advanced&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
To identify the element as advanced, call the &#039;&#039;&#039;setAdvanced&#039;&#039;&#039; method after the element has been created.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Your typical user is local and hence it will be rare that they will use a different time zone.  To clean up the interface, set the option to change the user time zone so that it is shown only when the user clicks &amp;quot;Set Advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
In the file /user/editlib.php, find:&lt;br /&gt;
&lt;br /&gt;
  $mform-&amp;gt;addElement(&#039;select&#039;, &#039;timezone&#039;, get_string(&#039;timezone&#039;), $choices);&lt;br /&gt;
&lt;br /&gt;
Set the field to advanced using the setAdvanced method&lt;br /&gt;
&lt;br /&gt;
  $mform-&amp;gt;addElement(&#039;select&#039;, &#039;timezone&#039;, get_string(&#039;timezone&#039;), $choices);&lt;br /&gt;
  $mform-&amp;gt;setAdvanced(&#039;timezone&#039;);&lt;br /&gt;
&lt;br /&gt;
==Other Examples==&lt;br /&gt;
Here are some other example of making simple changes to forms&lt;br /&gt;
===Change the maximum allowed grade===&lt;br /&gt;
The maximum grade for a module is set in the standard form to 100.  To change this to a different value (such as 200) in version 1.9, make this change in the file &#039;&#039;&#039;/lib/form/modgrade.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Find: &lt;br /&gt;
&lt;br /&gt;
 for ($i=100; $i&amp;gt;=1; $i--) {&lt;br /&gt;
&lt;br /&gt;
Change to:&lt;br /&gt;
&lt;br /&gt;
 for ($i=200; $i&amp;gt;=1; $i--) { // GVA 20080616 for ($i=100; $i&amp;gt;=1; $i--) {&lt;br /&gt;
&lt;br /&gt;
===Set a standard start date and number of weeks for courses===&lt;br /&gt;
&lt;br /&gt;
By default, Moodle starts courses on the day following course creation and gives them a duration of 10 weeks.  As many institutions have standard terms, setting the default start date and duration will allow for more uniformity, fewer mistakes, and will ease course creation.&lt;br /&gt;
&lt;br /&gt;
In version 1.9, edit the file &#039;&#039;&#039;/course/edit_form.php&#039;&#039;&#039;.  Insert the following lines after the affected fields are defined (perhaps on lines just before $this-&amp;gt;add_action_buttons();)&lt;br /&gt;
&lt;br /&gt;
 //GVA 20080618 Number of weeks for default course.  Should go through final exam&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;numsections&#039;, 13);&lt;br /&gt;
 //GVA 20080618 Set default course start date.  Always start on a Monday to have weeks work right&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;startdate&#039;, strtotime(&amp;quot;1 Sep 2008&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Patching_forms_tutorial&amp;diff=27902</id>
		<title>Talk:Patching forms tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Patching_forms_tutorial&amp;diff=27902"/>
		<updated>2009-04-03T06:31:34Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: New page: the example:  Change the maximum allowed grade  The maximum grade for a module is set in the standard form to 100.  To change this to a different value (such as 200) in version 1.9,  make ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;the example:&lt;br /&gt;
 Change the maximum allowed grade&lt;br /&gt;
 The maximum grade for a module is set in the standard form to 100.&lt;br /&gt;
 To change this to a different value (such as 200) in version 1.9,&lt;br /&gt;
 make this change in the file /lib/form/modgrade.php&lt;br /&gt;
 Find:&lt;br /&gt;
 for ($i=100; $i&amp;gt;=1; $i--) {&lt;br /&gt;
&lt;br /&gt;
seems very strange, at least without seeing the code around it (which I haven&#039;t yet done).&lt;br /&gt;
I think it would be good to say something about how that works. The previous examples are easy to follow what they are doing.&lt;br /&gt;
--[[User:Jeff Forssell|Jeff Forssell]] 06:31, 3 April 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Patching_forms_tutorial&amp;diff=9540</id>
		<title>Patching forms tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Patching_forms_tutorial&amp;diff=9540"/>
		<updated>2009-04-03T06:24:19Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Setting fields to &amp;quot;Advanced&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;by Gary Anderson&lt;br /&gt;
&lt;br /&gt;
One of the easiest local modifications that an institution can make to customize their Moodle site is to make simple changes to the form elements that appear on pages.  This permits one to set different default values when creating new items, allows one to hide unused input elements to simplify the interface, and lets one identify certain more complicated elements as &amp;quot;advanced&amp;quot; so that features are still availale while simplifying the interface for most uses.&lt;br /&gt;
&lt;br /&gt;
This tutorial will demonstrate how to do such modifications.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Warning&#039;&#039;&#039;&lt;br /&gt;
 Making custom changes to the PHP scripting code in Moodle should be done carefully.&lt;br /&gt;
 You should always test your code before using it on your production site and should backup the  original scripts.&lt;br /&gt;
 You should always comment your code so you know what has been changed.&lt;br /&gt;
 Care should also be taken during upgrades in the code to make sure things are not broken  (like conflicts during a CVS update).&lt;br /&gt;
&lt;br /&gt;
Having said that, these patches are among the simplest and the recovery from an error is easy:  simply replace the file with original from the core distribution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle Forms Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rather than placing HTML form elements directly on the page, most well-written Moodle code will use the Forms Library.  This allows a standard way to create user input elements and also centralizes code making it easier to override certain behaviors creating a greater consistency.&lt;br /&gt;
&lt;br /&gt;
An entire form is an &amp;quot;object&amp;quot; with methods and attributes.  In many places in the Moodle code, the instance of the object is identified by the variable $mform, but you can use any variable.&lt;br /&gt;
&lt;br /&gt;
Common methods of the form object look like:&lt;br /&gt;
&lt;br /&gt;
* $mform-&amp;gt;addelement(&amp;lt;elementtype&amp;gt;,&amp;lt;elementidentifier&amp;gt;,&amp;lt;displayname&amp;gt;,&amp;lt;options&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
This creates a new input element on a page.&lt;br /&gt;
&lt;br /&gt;
While forms can be produced in any scripting page which outputs code, you will often find code for printing out forms in a file like mod_form.php or in index.php of the affected component.  The examine the URL of the page being viewed as a starting point for finding the file to be changed.&lt;br /&gt;
&lt;br /&gt;
Always comment your code so you can change or remove it later..  For single line modifications, considering putting in your new code, and then end it with //&amp;lt;yourusername&amp;gt; &amp;lt;date&amp;gt; &amp;lt;the old code&amp;gt;.  This allows for retention of existing line numbers.&lt;br /&gt;
&lt;br /&gt;
==Changing defaults==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;setDefault&#039;&#039;&#039; method is used to establish the initial value used in the form and allows you to to define the most common setting for use in your institution.&lt;br /&gt;
&lt;br /&gt;
Example:  Change the default number of points for a default assignment from 100 points to 10 points.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
In the file /mod/assignment/mod_form.php, find&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;grade&#039;, 100);&lt;br /&gt;
&lt;br /&gt;
Change the default to 10, and comment out the previous code with your initial and dates:&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;grade&#039;, 10); //GVA 20080608 $mform-&amp;gt;setDefault(&#039;grade&#039;, 100);&lt;br /&gt;
&lt;br /&gt;
==Hiding fields==&lt;br /&gt;
&lt;br /&gt;
Form elements are created for a page using the &#039;&#039;&#039;addElement&#039;&#039;&#039; method.  Various types of element are text, select, date_time_selector, htmleditor, etc.&lt;br /&gt;
&lt;br /&gt;
There is also the type &amp;quot;hidden&amp;quot; that defines the element on a page and allows you to set a default value, stores previous values from a submission etc.  To simplify your forms for you users, simply change the type of the field during when addElement is called to hidden.&lt;br /&gt;
&lt;br /&gt;
Example:  Your site does not want to use meta courses and you want to remove it from the course creation/edit page.  In the file /course/edit_form.php&lt;br /&gt;
&lt;br /&gt;
Change:&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;addElement(&#039;select&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta);&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;addElement(&#039;hidden&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta); //GVA 20080610 $mform-&amp;gt;addElement(&#039;select&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta);&lt;br /&gt;
&lt;br /&gt;
==Setting fields to &amp;quot;Advanced&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
For elements that are infrequently used in your institution, you can still simplify the interface while making options still available to your &#039;Power Users&#039; by marking elements as &amp;quot;advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These elements only appear to the user when they click the &amp;quot;Set Advanced&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
To identify the element as advanced, call the &#039;&#039;&#039;setAdvanced&#039;&#039;&#039; method after the element has been created.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Your typical user is local and hence it will be rare that they will use a different time zone.  To clean up the interface, set the option to change the user time zone so that it is shown only when the user clicks &amp;quot;Set Advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
In the file /user/editlib.php, find:&lt;br /&gt;
&lt;br /&gt;
  $mform-&amp;gt;addElement(&#039;select&#039;, &#039;timezone&#039;, get_string(&#039;timezone&#039;), $choices);&lt;br /&gt;
&lt;br /&gt;
Set the field to advanced using the setAdvanced method&lt;br /&gt;
&lt;br /&gt;
  $mform-&amp;gt;addElement(&#039;select&#039;, &#039;timezone&#039;, get_string(&#039;timezone&#039;), $choices);&lt;br /&gt;
  $mform-&amp;gt;setAdvanced(&#039;timezone&#039;);&lt;br /&gt;
&lt;br /&gt;
==Other Examples==&lt;br /&gt;
Here are some other example of making simple changes to forms&lt;br /&gt;
===Change the maximum allowed grade===&lt;br /&gt;
The maximum grade for a module is set in the standard form to 100.  To change this to a different value (such as 200) in version 1.9, make this change in the file &#039;&#039;&#039;/lib/form/modgrade.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Find: &lt;br /&gt;
&lt;br /&gt;
 for ($i=100; $i&amp;gt;=1; $i--) {&lt;br /&gt;
&lt;br /&gt;
Change to:&lt;br /&gt;
&lt;br /&gt;
 for ($i=200; $i&amp;gt;=1; $i--) { // GVA 20080616 for ($i=100; $i&amp;gt;=1; $i--) {&lt;br /&gt;
&lt;br /&gt;
===Set a standard start date and number of weeks for courses===&lt;br /&gt;
&lt;br /&gt;
By default, Moodle starts courses on the day following course creation and gives them a duration of 10 weeks.  As many institutions have standard terms, setting the default start date and duration will allow for more uniformity, fewer mistakes, and will ease course creation.&lt;br /&gt;
&lt;br /&gt;
In version 1.9, edit the file &#039;&#039;&#039;/course/edit_form.php&#039;&#039;&#039;.  Insert the following lines after the affected fields are defined (perhaps on lines just before $this-&amp;gt;add_action_buttons();)&lt;br /&gt;
&lt;br /&gt;
 //GVA 20080618 Number of weeks for default course.  Should go through final exam&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;numsections&#039;, 13);&lt;br /&gt;
 //GVA 20080618 Set default course start date.  Always start on a Monday to have weeks work right&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;startdate&#039;, strtotime(&amp;quot;1 Sep 2008&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Patching_forms_tutorial&amp;diff=9539</id>
		<title>Patching forms tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Patching_forms_tutorial&amp;diff=9539"/>
		<updated>2009-04-03T06:20:09Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: and to end  eisting existing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;by Gary Anderson&lt;br /&gt;
&lt;br /&gt;
One of the easiest local modifications that an institution can make to customize their Moodle site is to make simple changes to the form elements that appear on pages.  This permits one to set different default values when creating new items, allows one to hide unused input elements to simplify the interface, and lets one identify certain more complicated elements as &amp;quot;advanced&amp;quot; so that features are still availale while simplifying the interface for most uses.&lt;br /&gt;
&lt;br /&gt;
This tutorial will demonstrate how to do such modifications.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Warning&#039;&#039;&#039;&lt;br /&gt;
 Making custom changes to the PHP scripting code in Moodle should be done carefully.&lt;br /&gt;
 You should always test your code before using it on your production site and should backup the  original scripts.&lt;br /&gt;
 You should always comment your code so you know what has been changed.&lt;br /&gt;
 Care should also be taken during upgrades in the code to make sure things are not broken  (like conflicts during a CVS update).&lt;br /&gt;
&lt;br /&gt;
Having said that, these patches are among the simplest and the recovery from an error is easy:  simply replace the file with original from the core distribution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle Forms Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rather than placing HTML form elements directly on the page, most well-written Moodle code will use the Forms Library.  This allows a standard way to create user input elements and also centralizes code making it easier to override certain behaviors creating a greater consistency.&lt;br /&gt;
&lt;br /&gt;
An entire form is an &amp;quot;object&amp;quot; with methods and attributes.  In many places in the Moodle code, the instance of the object is identified by the variable $mform, but you can use any variable.&lt;br /&gt;
&lt;br /&gt;
Common methods of the form object look like:&lt;br /&gt;
&lt;br /&gt;
* $mform-&amp;gt;addelement(&amp;lt;elementtype&amp;gt;,&amp;lt;elementidentifier&amp;gt;,&amp;lt;displayname&amp;gt;,&amp;lt;options&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
This creates a new input element on a page.&lt;br /&gt;
&lt;br /&gt;
While forms can be produced in any scripting page which outputs code, you will often find code for printing out forms in a file like mod_form.php or in index.php of the affected component.  The examine the URL of the page being viewed as a starting point for finding the file to be changed.&lt;br /&gt;
&lt;br /&gt;
Always comment your code so you can change or remove it later..  For single line modifications, considering putting in your new code, and then end it with //&amp;lt;yourusername&amp;gt; &amp;lt;date&amp;gt; &amp;lt;the old code&amp;gt;.  This allows for retention of existing line numbers.&lt;br /&gt;
&lt;br /&gt;
==Changing defaults==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;setDefault&#039;&#039;&#039; method is used to establish the initial value used in the form and allows you to to define the most common setting for use in your institution.&lt;br /&gt;
&lt;br /&gt;
Example:  Change the default number of points for a default assignment from 100 points to 10 points.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
In the file /mod/assignment/mod_form.php, find&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;grade&#039;, 100);&lt;br /&gt;
&lt;br /&gt;
Change the default to 10, and comment out the previous code with your initial and dates:&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;grade&#039;, 10); //GVA 20080608 $mform-&amp;gt;setDefault(&#039;grade&#039;, 100);&lt;br /&gt;
&lt;br /&gt;
==Hiding fields==&lt;br /&gt;
&lt;br /&gt;
Form elements are created for a page using the &#039;&#039;&#039;addElement&#039;&#039;&#039; method.  Various types of element are text, select, date_time_selector, htmleditor, etc.&lt;br /&gt;
&lt;br /&gt;
There is also the type &amp;quot;hidden&amp;quot; that defines the element on a page and allows you to set a default value, stores previous values from a submission etc.  To simplify your forms for you users, simply change the type of the field during when addElement is called to hidden.&lt;br /&gt;
&lt;br /&gt;
Example:  Your site does not want to use meta courses and you want to remove it from the course creation/edit page.  In the file /course/edit_form.php&lt;br /&gt;
&lt;br /&gt;
Change:&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;addElement(&#039;select&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta);&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;addElement(&#039;hidden&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta); //GVA 20080610 $mform-&amp;gt;addElement(&#039;select&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta);&lt;br /&gt;
&lt;br /&gt;
==Setting fields to &amp;quot;Advanced&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
For elements that are infrequently used in your institution, you can still simplify the interface while making options still available to your &#039;Power Users&#039; by marking elements as &amp;quot;advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These elements only appear to the user when the click the &amp;quot;Set Advanced&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
To identify the element as advanced, call the &#039;&#039;&#039;setAdvanced&#039;&#039;&#039; method after the element has been created.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Your typical user is local and hence it will be rare that they will use a different time zone.  To clean up the interface, set the option to change the user time zone so that it is shown only when the user clicks &amp;quot;Set Advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
In the file /user/editlib.php, find:&lt;br /&gt;
&lt;br /&gt;
  $mform-&amp;gt;addElement(&#039;select&#039;, &#039;timezone&#039;, get_string(&#039;timezone&#039;), $choices);&lt;br /&gt;
&lt;br /&gt;
Set the field to advanced using the setAdvanced method&lt;br /&gt;
&lt;br /&gt;
  $mform-&amp;gt;addElement(&#039;select&#039;, &#039;timezone&#039;, get_string(&#039;timezone&#039;), $choices);&lt;br /&gt;
  $mform-&amp;gt;setAdvanced(&#039;timezone&#039;);&lt;br /&gt;
&lt;br /&gt;
==Other Examples==&lt;br /&gt;
Here are some other example of making simple changes to forms&lt;br /&gt;
===Change the maximum allowed grade===&lt;br /&gt;
The maximum grade for a module is set in the standard form to 100.  To change this to a different value (such as 200) in version 1.9, make this change in the file &#039;&#039;&#039;/lib/form/modgrade.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Find: &lt;br /&gt;
&lt;br /&gt;
 for ($i=100; $i&amp;gt;=1; $i--) {&lt;br /&gt;
&lt;br /&gt;
Change to:&lt;br /&gt;
&lt;br /&gt;
 for ($i=200; $i&amp;gt;=1; $i--) { // GVA 20080616 for ($i=100; $i&amp;gt;=1; $i--) {&lt;br /&gt;
&lt;br /&gt;
===Set a standard start date and number of weeks for courses===&lt;br /&gt;
&lt;br /&gt;
By default, Moodle starts courses on the day following course creation and gives them a duration of 10 weeks.  As many institutions have standard terms, setting the default start date and duration will allow for more uniformity, fewer mistakes, and will ease course creation.&lt;br /&gt;
&lt;br /&gt;
In version 1.9, edit the file &#039;&#039;&#039;/course/edit_form.php&#039;&#039;&#039;.  Insert the following lines after the affected fields are defined (perhaps on lines just before $this-&amp;gt;add_action_buttons();)&lt;br /&gt;
&lt;br /&gt;
 //GVA 20080618 Number of weeks for default course.  Should go through final exam&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;numsections&#039;, 13);&lt;br /&gt;
 //GVA 20080618 Set default course start date.  Always start on a Monday to have weeks work right&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;startdate&#039;, strtotime(&amp;quot;1 Sep 2008&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Patching_forms_tutorial&amp;diff=9538</id>
		<title>Patching forms tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Patching_forms_tutorial&amp;diff=9538"/>
		<updated>2009-04-03T06:17:24Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: my to by&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;by Gary Anderson&lt;br /&gt;
&lt;br /&gt;
One of the easiest local modifications that an institution can make to customize their Moodle site is to make simple changes to the form elements that appear on pages.  This permits one to set different default values when creating new items, allows one to hide unused input elements to simplify the interface, and lets one identify certain more complicated elements as &amp;quot;advanced&amp;quot; so that features are still availale while simplifying the interface for most uses.&lt;br /&gt;
&lt;br /&gt;
This tutorial will demonstrate how to do such modifications.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Warning&#039;&#039;&#039;&lt;br /&gt;
 Making custom changes to the PHP scripting code in Moodle should be done carefully.&lt;br /&gt;
 You should always test your code before using it on your production site and should backup the  original scripts.&lt;br /&gt;
 You should always comment your code so you know what has been changed.&lt;br /&gt;
 Care should also be taken during upgrades in the code to make sure things are not broken  (like conflicts during a CVS update).&lt;br /&gt;
&lt;br /&gt;
Having said that, these patches are among the simplest and the recovery from an error is easy:  simply replace the file with original from the core distribution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle Forms Overview&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rather than placing HTML form elements directly on the page, most well-written Moodle code will use the Forms Library.  This allows a standard way to create user input elements and also centralizes code making it easier to override certain behaviors creating a greater consistency.&lt;br /&gt;
&lt;br /&gt;
An entire form is an &amp;quot;object&amp;quot; with methods and attributes.  In many places in the Moodle code, the instance of the object is identified by the variable $mform, but you can use any variable.&lt;br /&gt;
&lt;br /&gt;
Common methods of the form object look like:&lt;br /&gt;
&lt;br /&gt;
* $mform-&amp;gt;addelement(&amp;lt;elementtype&amp;gt;,&amp;lt;elementidentifier&amp;gt;,&amp;lt;displayname&amp;gt;,&amp;lt;options&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
This creates a new input element on a page.&lt;br /&gt;
&lt;br /&gt;
While forms can be produced in any scripting page which outputs code, you will often find code for printing out forms in a file like mod_form.php or in index.php of the affected component.  The examine the URL of the page being viewed as a starting point for finding the file to be changed.&lt;br /&gt;
&lt;br /&gt;
Always comment your code so you can change or remove it later..  For single line modifications, considering putting in your new code, and then and it with //&amp;lt;yourusername&amp;gt; &amp;lt;date&amp;gt; &amp;lt;the old code&amp;gt;.  This allows for retention of eisting line numbers.&lt;br /&gt;
&lt;br /&gt;
==Changing defaults==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;setDefault&#039;&#039;&#039; method is used to establish the initial value used in the form and allows you to to define the most common setting for use in your institution.&lt;br /&gt;
&lt;br /&gt;
Example:  Change the default number of points for a default assignment from 100 points to 10 points.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
In the file /mod/assignment/mod_form.php, find&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;grade&#039;, 100);&lt;br /&gt;
&lt;br /&gt;
Change the default to 10, and comment out the previous code with your initial and dates:&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;grade&#039;, 10); //GVA 20080608 $mform-&amp;gt;setDefault(&#039;grade&#039;, 100);&lt;br /&gt;
&lt;br /&gt;
==Hiding fields==&lt;br /&gt;
&lt;br /&gt;
Form elements are created for a page using the &#039;&#039;&#039;addElement&#039;&#039;&#039; method.  Various types of element are text, select, date_time_selector, htmleditor, etc.&lt;br /&gt;
&lt;br /&gt;
There is also the type &amp;quot;hidden&amp;quot; that defines the element on a page and allows you to set a default value, stores previous values from a submission etc.  To simplify your forms for you users, simply change the type of the field during when addElement is called to hidden.&lt;br /&gt;
&lt;br /&gt;
Example:  Your site does not want to use meta courses and you want to remove it from the course creation/edit page.  In the file /course/edit_form.php&lt;br /&gt;
&lt;br /&gt;
Change:&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;addElement(&#039;select&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta);&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 $mform-&amp;gt;addElement(&#039;hidden&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta); //GVA 20080610 $mform-&amp;gt;addElement(&#039;select&#039;, &#039;metacourse&#039;, get_string(&#039;managemeta&#039;), $meta);&lt;br /&gt;
&lt;br /&gt;
==Setting fields to &amp;quot;Advanced&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
For elements that are infrequently used in your institution, you can still simplify the interface while making options still available to your &#039;Power Users&#039; by marking elements as &amp;quot;advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These elements only appear to the user when the click the &amp;quot;Set Advanced&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
To identify the element as advanced, call the &#039;&#039;&#039;setAdvanced&#039;&#039;&#039; method after the element has been created.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Your typical user is local and hence it will be rare that they will use a different time zone.  To clean up the interface, set the option to change the user time zone so that it is shown only when the user clicks &amp;quot;Set Advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
In the file /user/editlib.php, find:&lt;br /&gt;
&lt;br /&gt;
  $mform-&amp;gt;addElement(&#039;select&#039;, &#039;timezone&#039;, get_string(&#039;timezone&#039;), $choices);&lt;br /&gt;
&lt;br /&gt;
Set the field to advanced using the setAdvanced method&lt;br /&gt;
&lt;br /&gt;
  $mform-&amp;gt;addElement(&#039;select&#039;, &#039;timezone&#039;, get_string(&#039;timezone&#039;), $choices);&lt;br /&gt;
  $mform-&amp;gt;setAdvanced(&#039;timezone&#039;);&lt;br /&gt;
&lt;br /&gt;
==Other Examples==&lt;br /&gt;
Here are some other example of making simple changes to forms&lt;br /&gt;
===Change the maximum allowed grade===&lt;br /&gt;
The maximum grade for a module is set in the standard form to 100.  To change this to a different value (such as 200) in version 1.9, make this change in the file &#039;&#039;&#039;/lib/form/modgrade.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Find: &lt;br /&gt;
&lt;br /&gt;
 for ($i=100; $i&amp;gt;=1; $i--) {&lt;br /&gt;
&lt;br /&gt;
Change to:&lt;br /&gt;
&lt;br /&gt;
 for ($i=200; $i&amp;gt;=1; $i--) { // GVA 20080616 for ($i=100; $i&amp;gt;=1; $i--) {&lt;br /&gt;
&lt;br /&gt;
===Set a standard start date and number of weeks for courses===&lt;br /&gt;
&lt;br /&gt;
By default, Moodle starts courses on the day following course creation and gives them a duration of 10 weeks.  As many institutions have standard terms, setting the default start date and duration will allow for more uniformity, fewer mistakes, and will ease course creation.&lt;br /&gt;
&lt;br /&gt;
In version 1.9, edit the file &#039;&#039;&#039;/course/edit_form.php&#039;&#039;&#039;.  Insert the following lines after the affected fields are defined (perhaps on lines just before $this-&amp;gt;add_action_buttons();)&lt;br /&gt;
&lt;br /&gt;
 //GVA 20080618 Number of weeks for default course.  Should go through final exam&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;numsections&#039;, 13);&lt;br /&gt;
 //GVA 20080618 Set default course start date.  Always start on a Monday to have weeks work right&lt;br /&gt;
 $mform-&amp;gt;setDefault(&#039;startdate&#039;, strtotime(&amp;quot;1 Sep 2008&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Filter_enable/disable_by_context&amp;diff=12513</id>
		<title>Filter enable/disable by context</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Filter_enable/disable_by_context&amp;diff=12513"/>
		<updated>2009-03-13T07:44:29Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* New settings page in each context */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&lt;br /&gt;
&lt;br /&gt;
We want to make configuration of filters more flexible, so, for example, you can do things like&lt;br /&gt;
* Disable the glossary auto-linking filter in a quiz.&lt;br /&gt;
* Enable the TeX filter only in the Maths course category.&lt;br /&gt;
&lt;br /&gt;
Please discuss this proposal in [http://moodle.org/mod/forum/discuss.php?d=118580 this General Developer Forum thread].&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
Most filter settings will still be controlled at the system level. Administrators will still choose which filters enabled for the whole site, and, more importantly, which ones are not available at all. Also, any filter settings (for example which media types for the multimedia filter, and the paths for the TeX filter) will also still be set globally for the whole site by the administrator.&lt;br /&gt;
&lt;br /&gt;
However, in addition to the overall on/off switch for each filter, we will store a separate active/inactive state for each filter in each context. (Don&#039;t worry, we don&#039;t actually store a row in the database for each context, mostly we use inheritance.)&lt;br /&gt;
&lt;br /&gt;
This proposal relies on some of the proposed navigation changes for Moodle 2.0, to give us a place to add a new &#039;Text filtering&#039; setting link for each context.&lt;br /&gt;
&lt;br /&gt;
==Detailed design==&lt;br /&gt;
&lt;br /&gt;
===Changes to the filter admin screen===&lt;br /&gt;
&lt;br /&gt;
On Administration ► Plugins ► Filters ► Manage filters, the existing Disable/Enable column will be split into two.&lt;br /&gt;
* &#039;&#039;&#039;Enabled?&#039;&#039;&#039; will control whether this filter can be used at all on this site.&lt;br /&gt;
* &#039;&#039;&#039;Active?&#039;&#039;&#039; controls whether this filter is in use globally. (If the plugin in not enabled, you cannot activate it.)&lt;br /&gt;
&lt;br /&gt;
(A filter may need to be enabled, but not active globally, for example in the &amp;quot;TeX filter only in the maths course&amp;quot; use case.)&lt;br /&gt;
&lt;br /&gt;
We will also add a Delete column to this table, to let administrators delete all the related configuration from the database if they uninstall a plugin.&lt;br /&gt;
&lt;br /&gt;
===New settings page in each context===&lt;br /&gt;
&lt;br /&gt;
There will be a &amp;quot;Text filtering&amp;quot; settings page for each context (apart from block contexts), just like there are Assign roles and Override permissions pages.&lt;br /&gt;
&lt;br /&gt;
The page will have a title something like &amp;quot;Text filtering in Course: Maths 101&amp;quot;. It will contain a table with one row for each filter that the administrator has enabled. For each filter, there will be a drop-down with three choices: Inherit, Active and Inactive. For the inherit choice, it will display the value that would be inherited in brackets, for example &amp;quot;Inherit (Active)&amp;quot;. (Would these be better as radio buttons?) There will be a Save changes button at the bottom.&lt;br /&gt;
&lt;br /&gt;
[[Image:Filters_example_1.png]] [[Image:Filters_example_2.png]]&lt;br /&gt;
&lt;br /&gt;
===New capability moodle/filter:manage===&lt;br /&gt;
&lt;br /&gt;
This controls access to the Text filtering settings page.&lt;br /&gt;
&lt;br /&gt;
By default Administrators, Course creators and Teachers will have this capability.&lt;br /&gt;
&lt;br /&gt;
===New database table filter_active===&lt;br /&gt;
&lt;br /&gt;
This table replaces $CFG-&amp;gt;textfilters.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Column !! Type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| id || INT(10) AUTO-INCREMENT || Unique id&lt;br /&gt;
|-&lt;br /&gt;
| filter || VARCHAR(32) || e.g. &#039;filter/tex&#039; or &#039;mod/glossary&#039;&lt;br /&gt;
|-&lt;br /&gt;
| contextid || INT(10) || Foreign key references context.id&lt;br /&gt;
|-&lt;br /&gt;
| active || INT(4) || 1 = active, -1 = inactive. As a special case, if contextid == $systemcontext-&amp;gt;id, then -9999 is used to mean that the administrator has disabled this filter.&lt;br /&gt;
|- &lt;br /&gt;
| sortorder || INT(10) || This is only used when contextid == $systemcontext-&amp;gt;id. It stores the filter sort-order, numbering from 1. In other contexts, this column should contain 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Whenever a context is deleted, we must delete the corresponding rows from this table.&lt;br /&gt;
&lt;br /&gt;
We will not delete data from here when a filter is disabled globally, so that if the administrator disables then re-enables the filter, the setting in all the different contexts are not lost.&lt;br /&gt;
&lt;br /&gt;
===Retrieving the active filters for a page===&lt;br /&gt;
&lt;br /&gt;
One of the Navigation 2.0 changes is that each page will be linked to a specific context. (That is, $PAGE-&amp;gt;context will always to set to something sensible.)&lt;br /&gt;
&lt;br /&gt;
Text will be filtered according to the page it appears on, not the context it belongs to. This is normally fine. For example, we want question text to be filtered according to the quiz that the question appears in.&lt;br /&gt;
&lt;br /&gt;
With that in mind, suppose $contextids is the list of ids of this context and all its parents. Then the list of active filters is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code sql&amp;gt;&lt;br /&gt;
SELECT f.filter&lt;br /&gt;
FROM filter_active f&lt;br /&gt;
JOIN context ctx ON f.contextid = cxt.id&lt;br /&gt;
WHERE ctx.id IN ($contextids)&lt;br /&gt;
GROUP BY filter&lt;br /&gt;
HAVING MAX(f.active * ctx.depth) &amp;gt; -MIN(f.active * ctx.depth)&lt;br /&gt;
ORDER BY MAX(f.sortorder)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Why does this work?====&lt;br /&gt;
&lt;br /&gt;
To understand what that query is doing, you need to look at the results of&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code sql&amp;gt;&lt;br /&gt;
SELECT f.filter, f.contextid, ctx.depth, f.active, ctx.depth * f.active AS active_x_depth, f.sortorder&lt;br /&gt;
FROM filter_active f&lt;br /&gt;
JOIN context ctx ON f.contextid = cxt.id&lt;br /&gt;
WHERE ctx.id IN ($contextids)&lt;br /&gt;
ORDER BY f.filter, ctx.depth&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That shows the data that is being aggregated by the GROUP BY and HAVING clauses. I will explain with reference to a specific example:&lt;br /&gt;
&lt;br /&gt;
Suppose we are in a Quiz in the Maths 101 course in the Maths category in the system. $contextids = 1,3,10,22 (order reversed relative to the previous sentence - system context first). Then suppose that the above query returns&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! filter !! contextid !! depth !! active !! active_x_depth !! f.sortorder&lt;br /&gt;
|-&lt;br /&gt;
| filter/mediaplugin ||  1 || 1 ||     1 ||     1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| filter/multilang   ||  1 || 1 ||    -1 ||    -1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| filter/tex         ||  1 || 1 ||    -1 ||    -1 || 3&lt;br /&gt;
|-&lt;br /&gt;
| filter/tex         ||  3 || 2 ||     1 ||     2 || 0&lt;br /&gt;
|-&lt;br /&gt;
| filter/tidy        ||  1 || 1 || -9999 || -9999 || 4&lt;br /&gt;
|-&lt;br /&gt;
| filter/tidy        || 22 || 4 ||     1 ||     4 || 0&lt;br /&gt;
|-&lt;br /&gt;
| mod/glossary       ||  1 || 1 ||     1 ||     1 || 2&lt;br /&gt;
|-&lt;br /&gt;
| mod/glossary       ||  3 || 2 ||    -1 ||    -2 || 0&lt;br /&gt;
|-&lt;br /&gt;
| mod/glossary       || 10 || 3 ||     1 ||     3 || 0&lt;br /&gt;
|-&lt;br /&gt;
| mod/glossary       || 22 || 4 ||    -1 ||    -4 || 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
; filter/mediaplugin&lt;br /&gt;
: This is enabled, and active globally, and there are no overrides.&lt;br /&gt;
:* MAX(f.active * ctx.depth) = 1&lt;br /&gt;
:* MIN(f.active * ctx.depth) = 1&lt;br /&gt;
: 1 &amp;gt; -1, so this filter will be returned by the get active filters query.&lt;br /&gt;
&lt;br /&gt;
; filter/multilang&lt;br /&gt;
: This is enabled, but not active globally, and there are no overrides.&lt;br /&gt;
:* MAX(f.active * ctx.depth) = -1&lt;br /&gt;
:* MIN(f.active * ctx.depth) = -1&lt;br /&gt;
: -1 ≯ 1, so this filter will &#039;&#039;&#039;not&#039;&#039;&#039; be returned by the get active filters query.&lt;br /&gt;
&lt;br /&gt;
; filter/tex&lt;br /&gt;
: This is enabled, but not active globally. However, it has been activated in the Maths category.&lt;br /&gt;
:* MAX(f.active * ctx.depth) = 2&lt;br /&gt;
:* MIN(f.active * ctx.depth) = -1&lt;br /&gt;
: 2 &amp;gt; 1, so this filter will be returned by the get active filters query.&lt;br /&gt;
&lt;br /&gt;
; filter/tidy&lt;br /&gt;
: This is &#039;&#039;&#039;not&#039;&#039;&#039; enabled, but there is an old override in the database&lt;br /&gt;
:* MAX(f.active * ctx.depth) = 4&lt;br /&gt;
:* MIN(f.active * ctx.depth) = -9999&lt;br /&gt;
: 4 ≯ 9999, so this filter will &#039;&#039;&#039;not&#039;&#039;&#039; be returned by the get active filters query.&lt;br /&gt;
&lt;br /&gt;
; filter/glossary&lt;br /&gt;
: A slightly silly example with the maximum number of overrides possible. The most specific override is the one that says that the filter is not active in the quiz.&lt;br /&gt;
:* MAX(f.active * ctx.depth) = 3&lt;br /&gt;
:* MIN(f.active * ctx.depth) = -4&lt;br /&gt;
: 3 ≯ 4, so this filter will &#039;&#039;&#039;not&#039;&#039;&#039; be returned by the get active filters query.&lt;br /&gt;
&lt;br /&gt;
; filter/myfilter&lt;br /&gt;
: What! there is no filter/myfilter in the data above. What is going on? This is the situation when the administrator has just installed the myfilter plugin, but has not yet been to the manage filters administration page to update the filter settings. What happens?&lt;br /&gt;
: Since there is nothing in the database, this filter is &#039;&#039;&#039;not&#039;&#039;&#039; returned by the get active filters query. That is, a newly installed filter is not active until the administrator explicitly activates it. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sort order&#039;&#039;&#039;: Note that sortorder is zero except when contextid = 1. So MAX(f.sortorder) is just a clever trick to pull out the sortorder from the system context, ignoring all the zeros. There are other tricks that could be used instead, but this one is probably quite efficient.&lt;br /&gt;
&lt;br /&gt;
===Changes to text caching===&lt;br /&gt;
&lt;br /&gt;
The md5key used in the cache_text table will be changed to user the contextid, rather than the courseid, in $hashstr. See format_text in weblib.php.&lt;br /&gt;
&lt;br /&gt;
===Backup and restore===&lt;br /&gt;
&lt;br /&gt;
This will be similar in some ways to the roles backup and restore code, in that it needs to do work for every context in the backup file.&lt;br /&gt;
&lt;br /&gt;
On backup (in lib/backuplib.php), everywhere it does write_role_overrides_xml and write_role_assignments_xml we need to add a call to a new function write_filter_actives_xml. (I think we need a write_context_data_xml function to avoid duplicating the calls to those three functions in lots of places.) That function can write XML like&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;FILTERACTIVES&amp;gt;&lt;br /&gt;
    &amp;lt;FILTERACTIVE&amp;gt;&lt;br /&gt;
        &amp;lt;FILTER&amp;gt;filter/tex&amp;lt;/FILTER&amp;gt;&lt;br /&gt;
        &amp;lt;ACTIVE&amp;gt;+1&amp;lt;/ACTIVE&amp;gt;&lt;br /&gt;
    &amp;lt;FILTERACTIVE&amp;gt;&lt;br /&gt;
    &amp;lt;FILTERACTIVE&amp;gt;&lt;br /&gt;
        &amp;lt;FILTER&amp;gt;mod/glossary&amp;lt;/FILTER&amp;gt;&lt;br /&gt;
        &amp;lt;ACTIVE&amp;gt;-1&amp;lt;/ACTIVE&amp;gt;&lt;br /&gt;
    &amp;lt;FILTERACTIVE&amp;gt;&lt;br /&gt;
&amp;lt;/FILTERACTIVES&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the function restore_execute in backup/restorelib.php, probably just after the bit that calls restore_roles_settings, add a call to restore_filter_actives. This needs to read each FILTERACTIVE record from the backup file, check whether the corresponding filters in installed on this Moodle site, and if it is, write the record to the filter_active table using the recoded contextid.&lt;br /&gt;
&lt;br /&gt;
==Possible problems==&lt;br /&gt;
&lt;br /&gt;
===Terminology===&lt;br /&gt;
&lt;br /&gt;
I have been using enabled/disabled for the on-off switch that the administrator had, and active/inactive for the setting that can be inherited or changed in each context. However, it is confusing. Does anyone have a better suggestion?&lt;br /&gt;
&lt;br /&gt;
===Is filtering by page context really the right thing===&lt;br /&gt;
&lt;br /&gt;
Filtering according to page context might cause strange results on pages that aggregate content from different contexts. &lt;br /&gt;
&lt;br /&gt;
For example, we normally think that the user&#039;s profile page is in the user context. That would mean that the Recent activity report there will be filtered according to the filter settings for the user context. (These will almost certainly inherit unmodified from the System context.) That would be strange if the TeX filter was only enabled in the Maths course. However, it may work better (both here and elsewhere) if we set $PAGE-&amp;gt;context to the course context for profile pages like this.&lt;br /&gt;
&lt;br /&gt;
On the other hand, if the parent looking at their child&#039;s recent activity does not have access to the course, it is good that they do not see the effects of the glossary auto-linking filter, which would like them to glossary entries they do not have permission to see.&lt;br /&gt;
&lt;br /&gt;
The real problem page, would, of course, be the My Moodle page. That could aggregate content from any number of different contexts.&lt;br /&gt;
&lt;br /&gt;
Or, we may find that we have to add a $contextid parameter to the format_text function, and find some way to avoid the performance problems that causes. (It would be really bad to query the database with a query like the one above for each call to format_text. Or even for each context that contributes content to the My Moodle page.)&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Navigation_2.0]]&lt;br /&gt;
* MDL-7336&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=118580 this General Developer Forum thread].&lt;br /&gt;
&lt;br /&gt;
{{CategoryDeveloper}}&lt;br /&gt;
[[Category:Filter]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Background&amp;diff=9372</id>
		<title>Quiz UI redesign scenarios - Background</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Background&amp;diff=9372"/>
		<updated>2009-03-12T10:19:05Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Paul Pedagogue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Quiz_UI_redesign_scenarios_-_Scenarios_index|Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=99351 Discussion thread, where scenarios were commented. Now inactive, please edit this wiki directly or create a new thread]. &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=hyfLOSadJW4 Introductory video]&lt;br /&gt;
== Background/Personas ==&lt;br /&gt;
&lt;br /&gt;
An exam can be used at the beginning of a course to evaluate the initial level of the students&#039; understanding, during the course to provide checkpoints for students, or at the end of the course. In any case, quizzes/exams often have a dual role: they give the teacher information about the student&#039;s skills, but more &#039;&#039;&#039;importantly they are a pedagogical tool: while answering, a student generates knowledge and learns in the process&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If it seems to you that your idea of using exam is very different from any of the current personas, you may add a new one or [http://moodle.org/mod/forum/discuss.php?d=99351 tell us about this in the forum thread dedicated for persona/scenario discussion]&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Key questions for this part of the exam making:&lt;br /&gt;
&lt;br /&gt;
* What are the pedagogigal goals for the teacher? &lt;br /&gt;
* Does the exam use essay questions or automatically evaluated (or what)?&lt;br /&gt;
* What initiates the lifecycle of an exam?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Mack Marketing ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mack&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Mack_Marketing|Mack: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Mack_Marketing|Mack: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;Mack&#039;&#039; is a marketing teacher. He likes golf, but not on rainy days. &lt;br /&gt;
* He has quite a bit of experience using the internet, mainly for webmail&lt;br /&gt;
&lt;br /&gt;
He also teaches online a bit, but mostly he has normal classes. In addition to regular, time-limited exams, he also uses take-home exams (with deadlines for the questions/case assignments) and group exams (a group works together on a a case and the work is evaluated). &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
&lt;br /&gt;
While defining the goals of his course, he ends up with the conclusion that an exam with essay questions is needed at the end of the course for evaluating students&#039; learning. He does not think exams are a very good way of evaluating learning, since they mostly evaluate what students happen to remember. And even though he considers grading essay answers an extra workload, he still sees this as the only way &#039;&#039;&#039;to effectively evaluate students&#039; conceptual understanding&#039;&#039;&#039;, especially on his basic courses where there are more students.  &lt;br /&gt;
&lt;br /&gt;
He uses quite similar exams on different courses, our focus is on a Introduction to Marketing  exam, which is about:&lt;br /&gt;
&lt;br /&gt;
* Evaluating conceptual learning; can apply what they have learned to real-life cases&lt;br /&gt;
* Essay questions&lt;br /&gt;
* Qualitative feedback; using templates as basis&lt;br /&gt;
&lt;br /&gt;
Hypothesis: Since his exams are so specialized, Mack is afraid that if another teacher takes up his courses, that teacher will not understand all the nuances he has taken into account while designing his exams. That is why he writes notes about each exam whole and archives these notes that explain the choices he has made in the exam design.&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
He plans &#039;&#039;&#039;to give feedback about students&#039; answers: for him, this enables the exam to work as a pedagogical tool&#039;&#039;&#039; and he does not require the exam results to be absolutely comparable with the exam results of courses of previous semesters. He uses some templates for feedback, and based on that he then writes feedback for each student personally.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ida Informatics ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ida&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Ida_Informatics|Ida: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Ida_Informatics|Ida: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
&lt;br /&gt;
Moodle community contributors to Ida: [http://moodle.org/user/view.php?id=81449&amp;amp;course=5 Gary Anderson]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ida&#039;&#039; is a teacher in her fifties, still likes teaching but is more-or-less secretly already anticipating her retirement. She teaches informatics. Her teaching responsibilities include lecturing a couple of basic courses with dozens or even some hundreds of students at a time. &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
A lot of her time is spent planning &#039;&#039;&#039;a course of basic information retrieval to 200 first year students each semester&#039;&#039;&#039;. &lt;br /&gt;
The exam is about:&lt;br /&gt;
* Evaluating learning of basic factual knowledge of her field&lt;br /&gt;
* Multiple choice questions&lt;br /&gt;
* for &#039;&#039;&#039;testing students&#039; basic factual knowledge of her field&#039;&#039;&#039; automatically graded questions, such as multiple questions, suffice well enough (versus Mack&#039;s essay questions for testing conceptual understanding).&lt;br /&gt;
* Automatically graded questions are especially beneficial when students immediately get feedback on their answers and have a chance to give it a second or third try. It also significantly reduces the teacher load while giving better feedback on the progress of individuals and the whole class on topics covered.&lt;br /&gt;
&lt;br /&gt;
Ida sees exams beneficial since they provide &#039;&#039;&#039;measurable grounds on which to compare and grade learning&#039;&#039;&#039; on a &#039;&#039;&#039;numerical (quantitative) scale&#039;&#039;&#039; and for quick feedback to students. She wants to have her exam as automated as possible. She does not think exams have much pedagogical purpose, and would actually rather not even grade her students, but since the educational system demands comparable grades, she does it this way. &lt;br /&gt;
&lt;br /&gt;
(In an ideal world, she would instantly start using a tool that would analyze her course material automatically, generate essay questions and then even grade them using linguistic analysis or some other method.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Harvey Historian===&lt;br /&gt;
* &#039;&#039;&#039;Harvey&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Harvey_Historian|Harvey: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Harvey_Historian|Harvey: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Harvey is a history professor in a university. He mostly concentrates on his research, but also does some teaching of basic courses he knows by heart, since he has been doing it for a couple of decades. &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
He uses exams to test the students&#039; understanding of specific eras from different points of view, and students&#039; ability to see the connections between different events in history.&lt;br /&gt;
&lt;br /&gt;
Sometimes Harvey also takes a year off, and the exam bank is an excellent resource for a less experienced teacher to refer to for finding out what is essential to teach about a course.&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
Harvey gives brief feedback to students about what would have made a better grade. Since he has seen most things in the past already, he does not use any feedbacks for template since he has all of it pretty much in the back of his head.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Paul Pedagogue===&lt;br /&gt;
* &#039;&#039;&#039;Paul&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Paul_Pedagogue|Paul: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Paul_Pedagogue|Paul: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
Moodle community contributors to Paul: [https://docs.moodle.org/en/User:Jeff_Forssell Jeff Forssell]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Paul is almost 60 years old and is interested in all kinds of fields: science, gardening, languages, politics and music. He spends a lot of time on Internet and is delighted that it is now possible for everyone to contribute. He isn&#039;t a trained programmer, but is not afraid to dabble in code to fine tune things to the way he wants to work. Though he loves discussing directly with students, he feels that in a dynamic Internet distance course he can have very personal contact with the students. Good interactive questions can give him freedom from repetitious correcting while giving good guidance to students. He has many distance students, but still has some classroom students.&lt;br /&gt;
&lt;br /&gt;
====Grading hinders learning====&lt;br /&gt;
Paul uses interactive questions, in &amp;quot;quizzes&amp;quot;, primarily as a learning tool. He actually would prefer to have &amp;quot;official evaluation&amp;quot; (grading) done by some other instance, like the higher school or workplace that the student is aspiring to. This would free the teacher from the schizophrenic Helper/Judge dichotomy that prevents students and teachers from really working together in trust toward the common goal: lasting knowledge and methods for the student that will help him/er reach his/er goals. Grading in a class can also lead to diminished student interest in helping one&#039;s classmates, though this is one of the best ways to really learn something.&lt;br /&gt;
&lt;br /&gt;
====Questions are seeds for dialogue====&lt;br /&gt;
Questions for learning have been the prime tool for many teachers from Socrates to Martin D! Questions usually don&#039;t have one RIGHT answer, so it is very important to allow for many alternative answers and this can make pattern matching (like &amp;quot;regular expressions&amp;quot;) a high priority. Since the question is used for teaching it is important to make it provide as much dialog as possible. He will generally not like a simplified interface that doesn&#039;t have possibilities for rich feedback for varied answers. If possible he will try to give some kind of encouragement/understanding, for common mistakes as well a some &#039;&#039;&#039;clue to help&#039;&#039;&#039; the student in his &#039;&#039;&#039;processing of the problem&#039;&#039;&#039; (preferably without giving the &amp;quot;right answer&amp;quot;). His quizzes give students ways they can assess their own learning and, in a problem-based learning style, build up their understanding. If he has distance pupils, he will create many &amp;quot;&#039;&#039;&#039;interactive question exercise follow-ups&#039;&#039;&#039;&amp;quot; (using quizzes) as soon as he notices things that are common pitfalls. For an answer that isn&#039;t the &amp;quot;right one&amp;quot; his &#039;&#039;&#039;feedback will tend to be cautious&#039;&#039;&#039;: &amp;quot;We didn&#039;t recognize your answer as being one that we expected. Could you describe how you reached this answer?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Organic growth&amp;quot; of interactive questions====&lt;br /&gt;
Since he sees the questions as part of a developing dialog he values any characteristics that increase the dynamics. Since he&#039;s not usually interested in &amp;quot;objective grading&amp;quot;, he doesn&#039;t like the case that a &amp;quot;quiz&amp;quot; can not have new questions added once someone has &amp;quot;done the test&amp;quot;. On the other hand possibilities of increasing the feedback/input of the students are exciting. Students should always be able to [[https://docs.moodle.org/en/Feedback_link_for_all_elements#Quiz_questions_.28even_lesson_and_feedback_and_questionnaire.3F.29 comment on the questions]] and ideally be able to suggest other answer alternatives (with their motivations) that could be, ideally, automatically, on teacher review, added to the questions. As a help in emphasizing that his interactive questions are a  &amp;quot;work in progress&amp;quot;, the student interface should be able to turn off or play down points (example: &#039;&#039;&#039;&#039;&#039;preliminary&#039;&#039;&#039; points 0.6 of 1.0&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Even if his interest in grades is minimal, a CBG, &amp;quot;certainty based grading&amp;quot;, system is an exciting way of getting certainty feedback about the things that students are unsure of (in spite of giving what they think/hope is the right answer) as well as pointing out the seriousness of being very sure of something wrong. This kind of information is important for developing the teaching (including new interactive questions).  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Fred ===&lt;br /&gt;
* &#039;&#039;&#039;Fred&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Fred|Fred: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Fred|Fred: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We are still missing quite a few details about Fred. If you are or know a Fred, please tell us about him.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fred is an teacher of an advanced computer sciences course. Several other courses are prerequisites for his course.&lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
Fred&#039;s exams are:&lt;br /&gt;
* At the beginning of a course, &lt;br /&gt;
* for evaluating the starting level of the students on his course; &lt;br /&gt;
** formative assessment of understanding of the meaning of basic concepts&lt;br /&gt;
** Multiple choice&lt;br /&gt;
* given periodically to assess the class&#039;s ability to grasp new concepts&lt;br /&gt;
** multiple choice&lt;br /&gt;
** free response (code response)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fred &#039;&#039;&#039;uses an exam  to &#039;&#039;&#039;evaluate the starting level for his students&#039;&#039;&#039;. Some students are given a grade for the whole course just for the exam if they do well enough.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Susan Support===&lt;br /&gt;
* &#039;&#039;&#039;Susan&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Susan_Support|Susan: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Susan_Support|Susan: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Susan works in the IT support of her school. &lt;br /&gt;
&lt;br /&gt;
She does introductory lectures about Moodle and other learning environments. She also tutors teachers hand-by-hand, and the drill is roughly as follows:&lt;br /&gt;
* Explain basic principles of Quiz&lt;br /&gt;
* Go through the help material&lt;br /&gt;
* Teach the question bank separately at first, before looking at the Quiz, it is easier to digest this way (Since Moodle 1.6) &lt;br /&gt;
* Make an sample exam&lt;br /&gt;
&lt;br /&gt;
Teachers also send her their exams so that she would make the exam for them.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Grace Grader===&lt;br /&gt;
* &#039;&#039;&#039;Grace&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Grace_Grader|Grace: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Grace_Grader|Grace: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is a trainee and only does [[Quiz UI redesign scenarios - Grading et Feedback|grading]] according to instructions.&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam&amp;diff=9494</id>
		<title>Quiz UI redesign scenarios - Entering questions into an exam</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam&amp;diff=9494"/>
		<updated>2009-03-12T09:48:05Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Paul Pedagogue */ first draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Quiz_UI_redesign_scenarios_-_Scenarios_index|Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=99351 Discussion thread, where you can comment on the scenarios] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=hyfLOSadJW4 Introductory video]&lt;br /&gt;
&lt;br /&gt;
==Organizing questions and adding them into an exam==&lt;br /&gt;
&lt;br /&gt;
Unless exams are very simple, teachers often have a natural set of categories to organize questions in, from course curriculum or from the actual material of the course. In tech-speak, this can be regarded as metadata of the actual questions. &lt;br /&gt;
----&lt;br /&gt;
=== Mack Marketing ===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Mack_Marketing|Mack&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Mack_Marketing|Mack: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Mack: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
* carefully crafted, can&#039;t reuse the questions (but may be able to use for reference)&lt;br /&gt;
&lt;br /&gt;
Mack primarily creates just exams. For him, exams are one-time wholes and each question is a part of the whole, tightly bound to that one exam. &lt;br /&gt;
&lt;br /&gt;
However, Mack can use his questions as templates, or at least sources for inspiration when creating new exams. Thus he keeps a copy all his exams, sorted by date. If he had time, he sometimes wonders, he would also create an thematical index of all the questions, so that whenever he needed a question from a certain theme, he could just look at the index and see which exams contained a question he needs.&lt;br /&gt;
&lt;br /&gt;
Sometimes Mack finds himself in a real hurry when a student wants a renewal (another try or another, separate date for taking the exam for the first time) for an exam, since  some, even the more rarely taken exams he has don&#039;t have question banks. In this case, he might be willing to compromise how unique wholes his exams are, so that he can have a question bank full of spare questions, ready for use for surprising renewal exams.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ida Informatics ===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Ida_Informatics|Ida&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Ida_Informatics|Ida: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Ida: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
Based on the themes that come from course curriculum, Ida has organized her questions in categories. Under most themes she has further divided the questions into different difficulty levels and for most a given exam, she usually has about 60% of easier and 40% of more difficult questions. Since she has a lot (i.e. dozens ... thousands) of questions for each course, she would find it useful to categorize questions based on different criterias – that is, to be capable of tagging questions, as well as searching for particular questions based on their content, tags or other properties.&lt;br /&gt;
&lt;br /&gt;
To distribute questions according to a formula, Ida would like to be able to create a test of 100 questions dispersed something like the following: 10% of questions from category 1, 15% of questions from category 2, 25% of questions from category 3, etc. The questions would randomly appear on the exam. BUT on the other hand, there are times when Ida wants to select the exact questions for the exam and even place them in exact spots on the exam. OR select the exact questions but have Moodle randomly distribute them on the exam. (Do you think she&#039;ll ever be satisfied???)&lt;br /&gt;
&lt;br /&gt;
=== Harvey Historian ===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Harvey_Historian|Harvey&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Harvey_Historian|Harvey: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Harvey: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
Each time the exam is taken, Harvey picks one or two questions for each exam book from his comprehensive selection of questions.&lt;br /&gt;
----&lt;br /&gt;
===Grace Grader===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Grace_Grader|Grace&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Grace_Grader|Grace: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Grace: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
===Susan Support===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Susan_Support|Susan&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Susan_Support|Susan: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Susan: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
--------&lt;br /&gt;
&lt;br /&gt;
=== Fred ===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Fred|Fred&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Fred|Fred: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Fred: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
===Paul Pedagogue===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Paul_Pedagogue|Paul&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Paul_Pedagogue|Paul: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Paul: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
&lt;br /&gt;
====National Exam====&lt;br /&gt;
As I&#039;ve pointed out on other pages, Paul uses National Central Exams on paper for grading. He doesn&#039;t change them unless there is some unusual imbalance in material coverage that would be unfair to his students.&lt;br /&gt;
&lt;br /&gt;
====Organizing Interactive (&amp;quot;quiz&amp;quot;) Questions====&lt;br /&gt;
He and several other colleagues like to share resources like quiz questions. They try to organize them in categories that will help. But being able to tag them would be much more flexible. There are many questions that can be useful in many different subjects and levels. A good search function and a meta marking system would also be valuable.&lt;br /&gt;
&lt;br /&gt;
====Random questions====&lt;br /&gt;
Since Paul&#039;s big interest is not absolute grading he is not especially interested in random questions (which are usually used to making cheating more difficult). He might have some training quizzes toward the end of sections/courses that could randomly choose some questions out of a larger bank.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Preparing_questions&amp;diff=9451</id>
		<title>Quiz UI redesign scenarios - Preparing questions</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Preparing_questions&amp;diff=9451"/>
		<updated>2009-03-12T09:32:28Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Paul Pedagogue */ first draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Quiz_UI_redesign_scenarios_-_Scenarios_index|Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=hyfLOSadJW4 Introductory video]&lt;br /&gt;
&lt;br /&gt;
== Preparing questions ==&lt;br /&gt;
Users of various question types: your feedback is especially needed at this point. Which goals, pedagogical or other kinds, make you choose different question types for your exams?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mack Marketing===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Mack_Marketing|Mack&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Mack: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Mack_Marketing|Mack: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* Questions come from a common question bank&lt;br /&gt;
&lt;br /&gt;
====Prepreparation: sketching questions====&lt;br /&gt;
Sketching: While designing the course itself and its topics, at least for the first time, Mack often does &#039;&#039;&#039;early &amp;quot;sketching&amp;quot; of his marketing exam questions&#039;&#039;&#039; for at least some of the topics. When a new course instance starts to which new themes have been added, he may return to this sketching phase.&lt;br /&gt;
&lt;br /&gt;
====Material for questions====&lt;br /&gt;
The exam is &#039;&#039;&#039;structured according to the curriculum&#039;&#039;&#039;, making sure that every essential subject field has been covered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To determine a reasonable difficulty level for the exam&#039;&#039;&#039; (and to get feedback about his classroom teaching), he also uses assignments during the course. The exam content also varies based on which themes Mack has had time for/covered during a given course instance. &lt;br /&gt;
&lt;br /&gt;
When designing the exam and its questions, Mack then takes &lt;br /&gt;
* Literary on course themes; &lt;br /&gt;
** scientific articles, textbooks etc.&lt;br /&gt;
** Web pages (does multitasking while having the exam making application, such as Word, open in another window)&lt;br /&gt;
** Current, topical articles from newspapers&lt;br /&gt;
* Question sketches (see above)&lt;br /&gt;
* The course curriculum which &lt;br /&gt;
**lists course literature&lt;br /&gt;
**gives a broad structure of the course.   &lt;br /&gt;
* Question metadata (see below)&lt;br /&gt;
&lt;br /&gt;
He will use some of these also as &#039;&#039;&#039;material students need to read before or during the exam&#039;&#039;&#039; and refer to in their exam answers. &lt;br /&gt;
&lt;br /&gt;
=====Questions from students=====&lt;br /&gt;
Mack has also asked students to create relevant exam questions during the course, and some of the questions he has gotten have proven surprisingly good. He then has taken the best ones and imported them to his question bank (which is a Word document).&lt;br /&gt;
&lt;br /&gt;
=====Question metadata=====&lt;br /&gt;
To make decisions about what to actually use in his exam, Mack uses any information about the past usefulness of individual questions. &lt;br /&gt;
&lt;br /&gt;
The school Mack teaches in has a common question bank and thus some of the &#039;&#039;&#039;questions he uses may have been written by someone else&#039;&#039;&#039; than him so any background information to understand the motives behind the question and how it has worked is needed.&lt;br /&gt;
&lt;br /&gt;
With old/existing exams, questions, exercises, Mack uses the following kinds of metadata (information &#039;&#039;about&#039;&#039; questions) &lt;br /&gt;
* Feedback about issues &#039;&#039;&#039;from students&#039;&#039;&#039; (for example, in understanding a question) &lt;br /&gt;
**As some exams occur only once per semester or sometimes even more rarely, he tends to forget to  take into account student feedback, which he reseives currently usually by email or in the classroom. Sometimes students also give feedback about questions in their exam answers. &lt;br /&gt;
* &#039;&#039;&#039;issues&#039;&#039;&#039; discovered while reading students&#039; exam answers (for example, the student has misunderstood the question and answered to a different question or from a wrong point of view)&lt;br /&gt;
* &#039;&#039;&#039;statistical data&#039;&#039;&#039; about how students have done in previous exams replying a certain question&lt;br /&gt;
**In addition to written feedback, Mack has also graded students&#039; answers to his own questions from previous semesters numerically, so he can use &#039;&#039;&#039;statistical tools to get an idea about which questions have worked before&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
While creating a question, Mack notes down two more pieces of metadata: &lt;br /&gt;
* &#039;&#039;&#039;a model/template answer&#039;&#039;&#039; to use as grading criteria when he gets the exam answers from students.&lt;br /&gt;
* &#039;&#039;&#039;feedback templates&#039;&#039;&#039;, which he can easily customize in order to give qualitative feedback to students about their exam answers&lt;br /&gt;
&lt;br /&gt;
This information about the questions (metadata) would need to be stored with the questions themselves so that they would be easy to find where they are needed.&lt;br /&gt;
&lt;br /&gt;
====Writing questions====&lt;br /&gt;
&lt;br /&gt;
When Mack has all the material there, he starts to write questions for each of the course themes/topics based on them. He does this category by category, trying to balance each category appropriately. Mack&#039;s questions are often based on real-world cases, which the student needs to apply his knowledge to.&lt;br /&gt;
&lt;br /&gt;
Based on how the course has gone that time, he looks at what has seemed relevant that time around - the courses themselves can be very dynamic. He then makes the selection of some of the questions based on that.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;While creating a question, Mack notes down another piece of metadata: &#039;&#039;&#039;a model/template answer to use as grading criteria when he gets the exam answers from students&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Ida Informatics ===&lt;br /&gt;
&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Ida_Informatics|Ida&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Ida: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Ida_Informatics|Ida: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Material==== &lt;br /&gt;
To create her extensive question banks, Ida uses &lt;br /&gt;
* existing questions as templates, &lt;br /&gt;
** she has written notes (metadata) about the usefulness of those questions alongside the questions&lt;br /&gt;
* the material she has covered during the lectures, which is a fairly &#039;&#039;&#039;standardized selection of themes&#039;&#039;&#039; since the exam results need to be comparable across semesters. &lt;br /&gt;
&lt;br /&gt;
Ida needs to, however, adjust the selections of questions in different themes, as well as the number of questions from different categories, based on also the statistics she can see about how well students have done with different questions. &lt;br /&gt;
&lt;br /&gt;
=====Question metadata=====&lt;br /&gt;
Ida also edits her question material outside Moodle - exporting and importing questions as needed – since the web interface does not provide functionality such as question bank wide text search and replace. It is thus crucial for her that the import/export mechanism works without error, or at least reports to her when some part of her data could not be preserved. It would be important to preserve question metadata even when it is exported and imported. &lt;br /&gt;
&lt;br /&gt;
Even though her questions are selected randomly from categories to exams, she sometimes wants to primarily use questions that have not been seen by students before, to gather data about how well those questions work. For this, she needs to know when a question has been used.&lt;br /&gt;
&lt;br /&gt;
She gets feedback about the exam from students, but since she does not use any question types where students could freely type their answers, he has not gotten feedback about exam questions with the exams. Also feedback about how a student has understood a question in the first place is useful, since if a student has answered incorrectly but the answer makes sense in relation to how the student has understood the question, it might still be just to give him/her a good grade for that question.&lt;br /&gt;
&lt;br /&gt;
====Writing questions==== &lt;br /&gt;
Ida considers exam and question design very intensive and solitary work, where she wants to lock herself out from the world around her for one or more days, possibly not even answering the phone.&lt;br /&gt;
&lt;br /&gt;
As a consequence, does this fairly seldom, once per year or possibly not even that often, and wants to get a fairly finalized set of questions as a result. &lt;br /&gt;
&lt;br /&gt;
She takes her early ideas about the course themes and possible multiple choice answer options she may have come to think of while designing the course content. She then tries to create a sufficient amount of multiple choices for each theme, one theme at a time, for the different difficulty levels. The most important considerations are to make sure the questions are &#039;&#039;&#039;not obvious or ambiguous&#039;&#039;&#039; and that they &#039;&#039;&#039;are valid, actually test the understanding they are designed to test&#039;&#039;&#039;. She also needs to check for any typos or wrong/imprecise terms, since they can affect how well students understand questions.&lt;br /&gt;
&lt;br /&gt;
For Ida, the central resource is the question bank, which she tries to complete at once and then refine later. However, since the work demands full attention, she finds it hard to find time, in the middle of everyday work, to orient herself to this refining and editing the questions based on feedback. Here, the tools she uses could perhaps support her memory so that there would be less of a barrier to get the refining done.&lt;br /&gt;
&lt;br /&gt;
For Ida, an essential goal is to be capable to perceive all of the questions of a given theme at once, in order to evaluate whether the theme has been covered to a sufficient degree. If she decides it hasn&#039;t, she can then add new questions from a new angle to her collection.&lt;br /&gt;
&lt;br /&gt;
====Conclusions==== &lt;br /&gt;
Teachers could have an option to have a “give feedback about this question” button in the exam with each/some of the questions which would give a separate writing area for the student to write in. This would allow student-entered metadata to be stored with the questions and presented to the teacher in context.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Harvey Historian===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Harvey_Historian|Harvey&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Harvey: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Harvey_Historian|Harvey: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Harvey has a history exam that every student needs to take at some point of their studies. The exam covers five books, which are all in the status of a classic in Harvey&#039;s subject field. There are only so many questions that can be made from each of these books, and as Harvey has taught the course for two decades, he has managed to gather pretty much all variations of them.&lt;br /&gt;
&lt;br /&gt;
Harvey has also given some of his courses in other languages than his native one, while doing teacher exchange. For those exams, he has translated and adapted his questions to fit the local cultural context. However, the information about the questions (metadata) is shared between different exams, and also the grading is made comparable between different-language exams. The students choose when they come to the exam, which language they want to take the language in.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Fred ===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Fred|Fred&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Fred: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Fred|Fred: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
As Fred&#039;s course is an advanced one with other courses as prerequisites, he has a test at the beginning of a course to see what is the general level of a given year&#039;s students. In this test, he uses some of the more difficult questions of the exams of the prerequisite courses.  &lt;br /&gt;
&lt;br /&gt;
He also uses the prerequisite courses&#039; exams for reference, since those exams demonstrate quite well which subjects have been taught on those courses - he is painfully aware that the official curriculum often does not correspond tightly with the actual course content.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Grace Grader===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Grace_Grader|Grace&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Grace: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Grace_Grader|Grace: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Susan Support===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Susan_Support|Susan&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Susan: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Susan_Support|Susan: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Paul Pedagogue===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Paul_Pedagogue|Paul&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Paul: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Paul_Pedagogue|Paul: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
&lt;br /&gt;
====National Exam grading cop-out====&lt;br /&gt;
If Paul were to use his own high goals, too many students would get low grades compared to if they went to other teachers, but he doesn&#039;t want to just give arbitrary &amp;quot;nice grades&amp;quot;. Since Paul finds grading to be &amp;quot;not his thing&amp;quot;, he chooses to use the National Central Exams as the basis for his grading. They have a well-defined grading scheme and the questions are often quite varied and interesting (to him, though students tend to prefer the usual &amp;quot;cook book problems&amp;quot;). The exams are given on paper, in a controlled room at the end of the course and he grades them according to the official scheme and uses that grade for the whole course unless some other interaction with the student has given him reason to adjust that grade. He saves notes on various student answers so that he can give tutorial feedback when these tests are not longer secret and can be used for practice. He always offers to students to have an oral session after the exam if the student wishes it. (Some students can get exam black-outs, be better at talking than writing etc.) He hopes that there will be acceptably secure on line testing alternatives in the future, since he finds correcting work uninspiring.&lt;br /&gt;
&lt;br /&gt;
====Practice past National Exams====&lt;br /&gt;
Since both he and the students want them to perform well on the National exams, he starts by making practice questions based on the previous exams. He tries to provide tutorial process feedback for as many answers as  possible.  Multiple choice questions are easy. More open questions can be more challenging to make into automatic correction questions. Sometimes they have to be broken up into a suite of questions checking whether the student can do the various steps in the process. Though he presents the whole (previous) exams as a package to accustom the students to how the exams work, he would like to be able to tag the questions to be easily found and used in different parts of the course.&lt;br /&gt;
&lt;br /&gt;
====Preparing for laboratory====&lt;br /&gt;
His distance students have to do a large number of laboratory exercises during a single day at the school. To make sure that they can get as much as possible out of the economically limited time, there are some things they must do before coming to a lab day. They must read descriptions about safety routines, how to make and record measurements. There are also some laboratory videos and Java and FLASH simulations they are to do some exercises on. To make sure they have understood the reading and the simulations they have to do a quiz. It will even include screenshots from the videos/simulations in the follow-up questions. There can be some theoretical readings and exercises that should best be mastered before the labs also. The questions following up these things would typically have feedback with links back to the materials/simulations to be mastered. Students would be encouraged to contact the teacher if the material isn&#039;t helping. (The teacher has a channel through the quiz statistics to see where the weaknesses are otherwise.)&lt;br /&gt;
&lt;br /&gt;
====General Follow-ups====&lt;br /&gt;
Especially for distance students it is important to give many checkpoints to see if the steps toward the goal are being met. Paul will try to have a couple questions on each Internet page that the student can use to check that. They will usually just have a popup answer. It would be really nice to be able to &#039;&#039;&#039;pull in a couple of Moodle quiz questions into any page&#039;&#039;&#039;. Then you could have a rich feedback opportunity and be able to collect student answers so you can improve the material.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Preparing_questions&amp;diff=9450</id>
		<title>Quiz UI redesign scenarios - Preparing questions</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Preparing_questions&amp;diff=9450"/>
		<updated>2009-03-12T07:25:11Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Material for questions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Quiz_UI_redesign_scenarios_-_Scenarios_index|Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=hyfLOSadJW4 Introductory video]&lt;br /&gt;
&lt;br /&gt;
== Preparing questions ==&lt;br /&gt;
Users of various question types: your feedback is especially needed at this point. Which goals, pedagogical or other kinds, make you choose different question types for your exams?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mack Marketing===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Mack_Marketing|Mack&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Mack: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Mack_Marketing|Mack: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* Questions come from a common question bank&lt;br /&gt;
&lt;br /&gt;
====Prepreparation: sketching questions====&lt;br /&gt;
Sketching: While designing the course itself and its topics, at least for the first time, Mack often does &#039;&#039;&#039;early &amp;quot;sketching&amp;quot; of his marketing exam questions&#039;&#039;&#039; for at least some of the topics. When a new course instance starts to which new themes have been added, he may return to this sketching phase.&lt;br /&gt;
&lt;br /&gt;
====Material for questions====&lt;br /&gt;
The exam is &#039;&#039;&#039;structured according to the curriculum&#039;&#039;&#039;, making sure that every essential subject field has been covered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To determine a reasonable difficulty level for the exam&#039;&#039;&#039; (and to get feedback about his classroom teaching), he also uses assignments during the course. The exam content also varies based on which themes Mack has had time for/covered during a given course instance. &lt;br /&gt;
&lt;br /&gt;
When designing the exam and its questions, Mack then takes &lt;br /&gt;
* Literary on course themes; &lt;br /&gt;
** scientific articles, textbooks etc.&lt;br /&gt;
** Web pages (does multitasking while having the exam making application, such as Word, open in another window)&lt;br /&gt;
** Current, topical articles from newspapers&lt;br /&gt;
* Question sketches (see above)&lt;br /&gt;
* The course curriculum which &lt;br /&gt;
**lists course literature&lt;br /&gt;
**gives a broad structure of the course.   &lt;br /&gt;
* Question metadata (see below)&lt;br /&gt;
&lt;br /&gt;
He will use some of these also as &#039;&#039;&#039;material students need to read before or during the exam&#039;&#039;&#039; and refer to in their exam answers. &lt;br /&gt;
&lt;br /&gt;
=====Questions from students=====&lt;br /&gt;
Mack has also asked students to create relevant exam questions during the course, and some of the questions he has gotten have proven surprisingly good. He then has taken the best ones and imported them to his question bank (which is a Word document).&lt;br /&gt;
&lt;br /&gt;
=====Question metadata=====&lt;br /&gt;
To make decisions about what to actually use in his exam, Mack uses any information about the past usefulness of individual questions. &lt;br /&gt;
&lt;br /&gt;
The school Mack teaches in has a common question bank and thus some of the &#039;&#039;&#039;questions he uses may have been written by someone else&#039;&#039;&#039; than him so any background information to understand the motives behind the question and how it has worked is needed.&lt;br /&gt;
&lt;br /&gt;
With old/existing exams, questions, exercises, Mack uses the following kinds of metadata (information &#039;&#039;about&#039;&#039; questions) &lt;br /&gt;
* Feedback about issues &#039;&#039;&#039;from students&#039;&#039;&#039; (for example, in understanding a question) &lt;br /&gt;
**As some exams occur only once per semester or sometimes even more rarely, he tends to forget to  take into account student feedback, which he reseives currently usually by email or in the classroom. Sometimes students also give feedback about questions in their exam answers. &lt;br /&gt;
* &#039;&#039;&#039;issues&#039;&#039;&#039; discovered while reading students&#039; exam answers (for example, the student has misunderstood the question and answered to a different question or from a wrong point of view)&lt;br /&gt;
* &#039;&#039;&#039;statistical data&#039;&#039;&#039; about how students have done in previous exams replying a certain question&lt;br /&gt;
**In addition to written feedback, Mack has also graded students&#039; answers to his own questions from previous semesters numerically, so he can use &#039;&#039;&#039;statistical tools to get an idea about which questions have worked before&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
While creating a question, Mack notes down two more pieces of metadata: &lt;br /&gt;
* &#039;&#039;&#039;a model/template answer&#039;&#039;&#039; to use as grading criteria when he gets the exam answers from students.&lt;br /&gt;
* &#039;&#039;&#039;feedback templates&#039;&#039;&#039;, which he can easily customize in order to give qualitative feedback to students about their exam answers&lt;br /&gt;
&lt;br /&gt;
This information about the questions (metadata) would need to be stored with the questions themselves so that they would be easy to find where they are needed.&lt;br /&gt;
&lt;br /&gt;
====Writing questions====&lt;br /&gt;
&lt;br /&gt;
When Mack has all the material there, he starts to write questions for each of the course themes/topics based on them. He does this category by category, trying to balance each category appropriately. Mack&#039;s questions are often based on real-world cases, which the student needs to apply his knowledge to.&lt;br /&gt;
&lt;br /&gt;
Based on how the course has gone that time, he looks at what has seemed relevant that time around - the courses themselves can be very dynamic. He then makes the selection of some of the questions based on that.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;While creating a question, Mack notes down another piece of metadata: &#039;&#039;&#039;a model/template answer to use as grading criteria when he gets the exam answers from students&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Ida Informatics ===&lt;br /&gt;
&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Ida_Informatics|Ida&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Ida: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Ida_Informatics|Ida: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Material==== &lt;br /&gt;
To create her extensive question banks, Ida uses &lt;br /&gt;
* existing questions as templates, &lt;br /&gt;
** she has written notes (metadata) about the usefulness of those questions alongside the questions&lt;br /&gt;
* the material she has covered during the lectures, which is a fairly &#039;&#039;&#039;standardized selection of themes&#039;&#039;&#039; since the exam results need to be comparable across semesters. &lt;br /&gt;
&lt;br /&gt;
Ida needs to, however, adjust the selections of questions in different themes, as well as the number of questions from different categories, based on also the statistics she can see about how well students have done with different questions. &lt;br /&gt;
&lt;br /&gt;
=====Question metadata=====&lt;br /&gt;
Ida also edits her question material outside Moodle - exporting and importing questions as needed – since the web interface does not provide functionality such as question bank wide text search and replace. It is thus crucial for her that the import/export mechanism works without error, or at least reports to her when some part of her data could not be preserved. It would be important to preserve question metadata even when it is exported and imported. &lt;br /&gt;
&lt;br /&gt;
Even though her questions are selected randomly from categories to exams, she sometimes wants to primarily use questions that have not been seen by students before, to gather data about how well those questions work. For this, she needs to know when a question has been used.&lt;br /&gt;
&lt;br /&gt;
She gets feedback about the exam from students, but since she does not use any question types where students could freely type their answers, he has not gotten feedback about exam questions with the exams. Also feedback about how a student has understood a question in the first place is useful, since if a student has answered incorrectly but the answer makes sense in relation to how the student has understood the question, it might still be just to give him/her a good grade for that question.&lt;br /&gt;
&lt;br /&gt;
====Writing questions==== &lt;br /&gt;
Ida considers exam and question design very intensive and solitary work, where she wants to lock herself out from the world around her for one or more days, possibly not even answering the phone.&lt;br /&gt;
&lt;br /&gt;
As a consequence, does this fairly seldom, once per year or possibly not even that often, and wants to get a fairly finalized set of questions as a result. &lt;br /&gt;
&lt;br /&gt;
She takes her early ideas about the course themes and possible multiple choice answer options she may have come to think of while designing the course content. She then tries to create a sufficient amount of multiple choices for each theme, one theme at a time, for the different difficulty levels. The most important considerations are to make sure the questions are &#039;&#039;&#039;not obvious or ambiguous&#039;&#039;&#039; and that they &#039;&#039;&#039;are valid, actually test the understanding they are designed to test&#039;&#039;&#039;. She also needs to check for any typos or wrong/imprecise terms, since they can affect how well students understand questions.&lt;br /&gt;
&lt;br /&gt;
For Ida, the central resource is the question bank, which she tries to complete at once and then refine later. However, since the work demands full attention, she finds it hard to find time, in the middle of everyday work, to orient herself to this refining and editing the questions based on feedback. Here, the tools she uses could perhaps support her memory so that there would be less of a barrier to get the refining done.&lt;br /&gt;
&lt;br /&gt;
For Ida, an essential goal is to be capable to perceive all of the questions of a given theme at once, in order to evaluate whether the theme has been covered to a sufficient degree. If she decides it hasn&#039;t, she can then add new questions from a new angle to her collection.&lt;br /&gt;
&lt;br /&gt;
====Conclusions==== &lt;br /&gt;
Teachers could have an option to have a “give feedback about this question” button in the exam with each/some of the questions which would give a separate writing area for the student to write in. This would allow student-entered metadata to be stored with the questions and presented to the teacher in context.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Harvey Historian===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Harvey_Historian|Harvey&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Harvey: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Harvey_Historian|Harvey: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Harvey has a history exam that every student needs to take at some point of their studies. The exam covers five books, which are all in the status of a classic in Harvey&#039;s subject field. There are only so many questions that can be made from each of these books, and as Harvey has taught the course for two decades, he has managed to gather pretty much all variations of them.&lt;br /&gt;
&lt;br /&gt;
Harvey has also given some of his courses in other languages than his native one, while doing teacher exchange. For those exams, he has translated and adapted his questions to fit the local cultural context. However, the information about the questions (metadata) is shared between different exams, and also the grading is made comparable between different-language exams. The students choose when they come to the exam, which language they want to take the language in.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Fred ===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Fred|Fred&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Fred: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Fred|Fred: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
As Fred&#039;s course is an advanced one with other courses as prerequisites, he has a test at the beginning of a course to see what is the general level of a given year&#039;s students. In this test, he uses some of the more difficult questions of the exams of the prerequisite courses.  &lt;br /&gt;
&lt;br /&gt;
He also uses the prerequisite courses&#039; exams for reference, since those exams demonstrate quite well which subjects have been taught on those courses - he is painfully aware that the official curriculum often does not correspond tightly with the actual course content.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Grace Grader===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Grace_Grader|Grace&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Grace: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Grace_Grader|Grace: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Susan Support===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Susan_Support|Susan&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Susan: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Susan_Support|Susan: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Paul Pedagogue===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Paul_Pedagogue|Paul&#039;s persona]]&lt;br /&gt;
* &#039;&#039;&#039;Paul: Preparing questions&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Paul_Pedagogue|Paul: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam&amp;diff=9493</id>
		<title>Quiz UI redesign scenarios - Entering questions into an exam</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam&amp;diff=9493"/>
		<updated>2009-03-12T07:11:53Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Ida Informatics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Quiz_UI_redesign_scenarios_-_Scenarios_index|Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=99351 Discussion thread, where you can comment on the scenarios] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=hyfLOSadJW4 Introductory video]&lt;br /&gt;
&lt;br /&gt;
==Organizing questions and adding them into an exam==&lt;br /&gt;
&lt;br /&gt;
Unless exams are very simple, teachers often have a natural set of categories to organize questions in, from course curriculum or from the actual material of the course. In tech-speak, this can be regarded as metadata of the actual questions. &lt;br /&gt;
----&lt;br /&gt;
=== Mack Marketing ===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Mack_Marketing|Mack&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Mack_Marketing|Mack: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Mack: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
* carefully crafted, can&#039;t reuse the questions (but may be able to use for reference)&lt;br /&gt;
&lt;br /&gt;
Mack primarily creates just exams. For him, exams are one-time wholes and each question is a part of the whole, tightly bound to that one exam. &lt;br /&gt;
&lt;br /&gt;
However, Mack can use his questions as templates, or at least sources for inspiration when creating new exams. Thus he keeps a copy all his exams, sorted by date. If he had time, he sometimes wonders, he would also create an thematical index of all the questions, so that whenever he needed a question from a certain theme, he could just look at the index and see which exams contained a question he needs.&lt;br /&gt;
&lt;br /&gt;
Sometimes Mack finds himself in a real hurry when a student wants a renewal (another try or another, separate date for taking the exam for the first time) for an exam, since  some, even the more rarely taken exams he has don&#039;t have question banks. In this case, he might be willing to compromise how unique wholes his exams are, so that he can have a question bank full of spare questions, ready for use for surprising renewal exams.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ida Informatics ===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Ida_Informatics|Ida&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Ida_Informatics|Ida: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Ida: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
Based on the themes that come from course curriculum, Ida has organized her questions in categories. Under most themes she has further divided the questions into different difficulty levels and for most a given exam, she usually has about 60% of easier and 40% of more difficult questions. Since she has a lot (i.e. dozens ... thousands) of questions for each course, she would find it useful to categorize questions based on different criterias – that is, to be capable of tagging questions, as well as searching for particular questions based on their content, tags or other properties.&lt;br /&gt;
&lt;br /&gt;
To distribute questions according to a formula, Ida would like to be able to create a test of 100 questions dispersed something like the following: 10% of questions from category 1, 15% of questions from category 2, 25% of questions from category 3, etc. The questions would randomly appear on the exam. BUT on the other hand, there are times when Ida wants to select the exact questions for the exam and even place them in exact spots on the exam. OR select the exact questions but have Moodle randomly distribute them on the exam. (Do you think she&#039;ll ever be satisfied???)&lt;br /&gt;
&lt;br /&gt;
=== Harvey Historian ===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Harvey_Historian|Harvey&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Harvey_Historian|Harvey: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Harvey: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
Each time the exam is taken, Harvey picks one or two questions for each exam book from his comprehensive selection of questions.&lt;br /&gt;
----&lt;br /&gt;
===Grace Grader===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Grace_Grader|Grace&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Grace_Grader|Grace: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Grace: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
===Susan Support===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Susan_Support|Susan&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Susan_Support|Susan: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Susan: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
--------&lt;br /&gt;
&lt;br /&gt;
=== Fred ===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Fred|Fred&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Fred|Fred: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Fred: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
===Paul Pedagogue===&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Background#Paul_Pedagogue|Paul&#039;s persona]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Paul_Pedagogue|Paul: Preparing questions]]&lt;br /&gt;
* &#039;&#039;&#039;Paul: Organizing questions and adding them into an exam&#039;&#039;&#039;&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jeff_Forssell&amp;diff=19786</id>
		<title>User:Jeff Forssell</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jeff_Forssell&amp;diff=19786"/>
		<updated>2009-03-12T07:03:37Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I was Born In Buffalo NY USA 1945. I have lived in Sweden since 1964.&lt;br /&gt;
&lt;br /&gt;
I have a Swedish Fil. Lic. (about Masters degree) in physics and have been a Math Physics teacher for many years. I worked with adult distant education at the [[http://web.archive.org/web/20041009224241/http://www.cfl.se/?sid=60 Swedish Agency for Flexible Learning]], in Härnösand from 1996-2008. After that I&#039;ve taken Moodle certification 100, 101 and 200 and am starting to learn PHP. Any interesting jobs, especially in English-speaking countries, especially involving Moodle, would be interesting to hear about!)&lt;br /&gt;
&lt;br /&gt;
I have also worked 2*2 years in Tanzania. (see: http://biphome.spray.se/jeff.forssell/index.html but I&#039;ve learned a lot of html since I made that.) I speak (Am.) English, Swedish and Swahili (and rusty German in an emergency)&lt;br /&gt;
&lt;br /&gt;
I have a site at http://www.tupo.biz&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Background&amp;diff=9371</id>
		<title>Quiz UI redesign scenarios - Background</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Background&amp;diff=9371"/>
		<updated>2009-03-12T06:52:48Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Paul Pedagogue */ link to jeff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Quiz_UI_redesign_scenarios_-_Scenarios_index|Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=99351 Discussion thread, where scenarios were commented. Now inactive, please edit this wiki directly or create a new thread]. &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=hyfLOSadJW4 Introductory video]&lt;br /&gt;
== Background/Personas ==&lt;br /&gt;
&lt;br /&gt;
An exam can be used at the beginning of a course to evaluate the initial level of the students&#039; understanding, during the course to provide checkpoints for students, or at the end of the course. In any case, quizzes/exams often have a dual role: they give the teacher information about the student&#039;s skills, but more &#039;&#039;&#039;importantly they are a pedagogical tool: while answering, a student generates knowledge and learns in the process&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If it seems to you that your idea of using exam is very different from any of the current personas, you may add a new one or [http://moodle.org/mod/forum/discuss.php?d=99351 tell us about this in the forum thread dedicated for persona/scenario discussion]&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Key questions for this part of the exam making:&lt;br /&gt;
&lt;br /&gt;
* What are the pedagogigal goals for the teacher? &lt;br /&gt;
* Does the exam use essay questions or automatically evaluated (or what)?&lt;br /&gt;
* What initiates the lifecycle of an exam?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Mack Marketing ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mack&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Mack_Marketing|Mack: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Mack_Marketing|Mack: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;Mack&#039;&#039; is a marketing teacher. He likes golf, but not on rainy days. &lt;br /&gt;
* He has quite a bit of experience using the internet, mainly for webmail&lt;br /&gt;
&lt;br /&gt;
He also teaches online a bit, but mostly he has normal classes. In addition to regular, time-limited exams, he also uses take-home exams (with deadlines for the questions/case assignments) and group exams (a group works together on a a case and the work is evaluated). &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
&lt;br /&gt;
While defining the goals of his course, he ends up with the conclusion that an exam with essay questions is needed at the end of the course for evaluating students&#039; learning. He does not think exams are a very good way of evaluating learning, since they mostly evaluate what students happen to remember. And even though he considers grading essay answers an extra workload, he still sees this as the only way &#039;&#039;&#039;to effectively evaluate students&#039; conceptual understanding&#039;&#039;&#039;, especially on his basic courses where there are more students.  &lt;br /&gt;
&lt;br /&gt;
He uses quite similar exams on different courses, our focus is on a Introduction to Marketing  exam, which is about:&lt;br /&gt;
&lt;br /&gt;
* Evaluating conceptual learning; can apply what they have learned to real-life cases&lt;br /&gt;
* Essay questions&lt;br /&gt;
* Qualitative feedback; using templates as basis&lt;br /&gt;
&lt;br /&gt;
Hypothesis: Since his exams are so specialized, Mack is afraid that if another teacher takes up his courses, that teacher will not understand all the nuances he has taken into account while designing his exams. That is why he writes notes about each exam whole and archives these notes that explain the choices he has made in the exam design.&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
He plans &#039;&#039;&#039;to give feedback about students&#039; answers: for him, this enables the exam to work as a pedagogical tool&#039;&#039;&#039; and he does not require the exam results to be absolutely comparable with the exam results of courses of previous semesters. He uses some templates for feedback, and based on that he then writes feedback for each student personally.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ida Informatics ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ida&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Ida_Informatics|Ida: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Ida_Informatics|Ida: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
&lt;br /&gt;
Moodle community contributors to Ida: [http://moodle.org/user/view.php?id=81449&amp;amp;course=5 Gary Anderson]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ida&#039;&#039; is a teacher in her fifties, still likes teaching but is more-or-less secretly already anticipating her retirement. She teaches informatics. Her teaching responsibilities include lecturing a couple of basic courses with dozens or even some hundreds of students at a time. &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
A lot of her time is spent planning &#039;&#039;&#039;a course of basic information retrieval to 200 first year students each semester&#039;&#039;&#039;. &lt;br /&gt;
The exam is about:&lt;br /&gt;
* Evaluating learning of basic factual knowledge of her field&lt;br /&gt;
* Multiple choice questions&lt;br /&gt;
* for &#039;&#039;&#039;testing students&#039; basic factual knowledge of her field&#039;&#039;&#039; automatically graded questions, such as multiple questions, suffice well enough (versus Mack&#039;s essay questions for testing conceptual understanding).&lt;br /&gt;
* Automatically graded questions are especially beneficial when students immediately get feedback on their answers and have a chance to give it a second or third try. It also significantly reduces the teacher load while giving better feedback on the progress of individuals and the whole class on topics covered.&lt;br /&gt;
&lt;br /&gt;
Ida sees exams beneficial since they provide &#039;&#039;&#039;measurable grounds on which to compare and grade learning&#039;&#039;&#039; on a &#039;&#039;&#039;numerical (quantitative) scale&#039;&#039;&#039; and for quick feedback to students. She wants to have her exam as automated as possible. She does not think exams have much pedagogical purpose, and would actually rather not even grade her students, but since the educational system demands comparable grades, she does it this way. &lt;br /&gt;
&lt;br /&gt;
(In an ideal world, she would instantly start using a tool that would analyze her course material automatically, generate essay questions and then even grade them using linguistic analysis or some other method.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Harvey Historian===&lt;br /&gt;
* &#039;&#039;&#039;Harvey&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Harvey_Historian|Harvey: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Harvey_Historian|Harvey: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Harvey is a history professor in a university. He mostly concentrates on his research, but also does some teaching of basic courses he knows by heart, since he has been doing it for a couple of decades. &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
He uses exams to test the students&#039; understanding of specific eras from different points of view, and students&#039; ability to see the connections between different events in history.&lt;br /&gt;
&lt;br /&gt;
Sometimes Harvey also takes a year off, and the exam bank is an excellent resource for a less experienced teacher to refer to for finding out what is essential to teach about a course.&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
Harvey gives brief feedback to students about what would have made a better grade. Since he has seen most things in the past already, he does not use any feedbacks for template since he has all of it pretty much in the back of his head.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Paul Pedagogue===&lt;br /&gt;
* &#039;&#039;&#039;Paul&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
Moodle community contributors to Paul: [https://docs.moodle.org/en/User:Jeff_Forssell Jeff Forssell]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Paul is almost 60 years old and is interested in all kinds of fields: science, gardening, languages, politics and music. He spends a lot of time on Internet and is delighted that it is now possible for everyone to contribute. He isn&#039;t a trained programmer, but is not afraid to dabble in code to fine tune things to the way he wants to work. Though he loves discussing directly with students, he feels that in a dynamic Internet distance course he can have very personal contact with the students. Good interactive questions can give him freedom from repetitious correcting while giving good guidance to students. He has many distance students, but still has some classroom students.&lt;br /&gt;
&lt;br /&gt;
====Grading hinders learning====&lt;br /&gt;
Paul uses interactive questions, in &amp;quot;quizzes&amp;quot;, primarily as a learning tool. He actually would prefer to have &amp;quot;official evaluation&amp;quot; (grading) done by some other instance, like the higher school or workplace that the student is aspiring to. This would free the teacher from the schizophrenic Helper/Judge dichotomy that prevents students and teachers from really working together in trust toward the common goal: lasting knowledge and methods for the student that will help him/er reach his/er goals. Grading in a class can also lead to diminished student interest in helping one&#039;s classmates, though this is one of the best ways to really learn something.&lt;br /&gt;
&lt;br /&gt;
====Questions are seeds for dialogue====&lt;br /&gt;
Questions for learning have been the prime tool for many teachers from Socrates to Martin D! Questions usually don&#039;t have one RIGHT answer, so it is very important to allow for many alternative answers and this can make pattern matching (like &amp;quot;regular expressions&amp;quot;) a high priority. Since the question is used for teaching it is important to make it provide as much dialog as possible. He will generally not like a simplified interface that doesn&#039;t have possibilities for rich feedback for varied answers. If possible he will try to give some kind of encouragement/understanding, for common mistakes as well a some &#039;&#039;&#039;clue to help&#039;&#039;&#039; the student in his &#039;&#039;&#039;processing of the problem&#039;&#039;&#039; (preferably without giving the &amp;quot;right answer&amp;quot;). His quizzes give students ways they can assess their own learning and, in a problem-based learning style, build up their understanding. If he has distance pupils, he will create many &amp;quot;&#039;&#039;&#039;interactive question exercise follow-ups&#039;&#039;&#039;&amp;quot; (using quizzes) as soon as he notices things that are common pitfalls. For an answer that isn&#039;t the &amp;quot;right one&amp;quot; his &#039;&#039;&#039;feedback will tend to be cautious&#039;&#039;&#039;: &amp;quot;We didn&#039;t recognize your answer as being one that we expected. Could you describe how you reached this answer?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Organic growth&amp;quot; of interactive questions====&lt;br /&gt;
Since he sees the questions as part of a developing dialog he values any characteristics that increase the dynamics. Since he&#039;s not usually interested in &amp;quot;objective grading&amp;quot;, he doesn&#039;t like the case that a &amp;quot;quiz&amp;quot; can not have new questions added once someone has &amp;quot;done the test&amp;quot;. On the other hand possibilities of increasing the feedback/input of the students are exciting. Students should always be able to [[https://docs.moodle.org/en/Feedback_link_for_all_elements#Quiz_questions_.28even_lesson_and_feedback_and_questionnaire.3F.29 comment on the questions]] and ideally be able to suggest other answer alternatives (with their motivations) that could be, ideally, automatically, on teacher review, added to the questions. As a help in emphasizing that his interactive questions are a  &amp;quot;work in progress&amp;quot;, the student interface should be able to turn off or play down points (example: &#039;&#039;&#039;&#039;&#039;preliminary&#039;&#039;&#039; points 0.6 of 1.0&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Even if his interest in grades is minimal, a CBG, &amp;quot;certainty based grading&amp;quot;, system is an exciting way of getting certainty feedback about the things that students are unsure of (in spite of giving what they think/hope is the right answer) as well as pointing out the seriousness of being very sure of something wrong. This kind of information is important for developing the teaching (including new interactive questions).  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Fred ===&lt;br /&gt;
* &#039;&#039;&#039;Fred&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Fred|Fred: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Fred|Fred: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We are still missing quite a few details about Fred. If you are or know a Fred, please tell us about him.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fred is an teacher of an advanced computer sciences course. Several other courses are prerequisites for his course.&lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
Fred&#039;s exams are:&lt;br /&gt;
* At the beginning of a course, &lt;br /&gt;
* for evaluating the starting level of the students on his course; &lt;br /&gt;
** formative assessment of understanding of the meaning of basic concepts&lt;br /&gt;
** Multiple choice&lt;br /&gt;
* given periodically to assess the class&#039;s ability to grasp new concepts&lt;br /&gt;
** multiple choice&lt;br /&gt;
** free response (code response)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fred &#039;&#039;&#039;uses an exam  to &#039;&#039;&#039;evaluate the starting level for his students&#039;&#039;&#039;. Some students are given a grade for the whole course just for the exam if they do well enough.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Susan Support===&lt;br /&gt;
* &#039;&#039;&#039;Susan&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Susan_Support|Susan: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Susan_Support|Susan: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Susan works in the IT support of her school. &lt;br /&gt;
&lt;br /&gt;
She does introductory lectures about Moodle and other learning environments. She also tutors teachers hand-by-hand, and the drill is roughly as follows:&lt;br /&gt;
* Explain basic principles of Quiz&lt;br /&gt;
* Go through the help material&lt;br /&gt;
* Teach the question bank separately at first, before looking at the Quiz, it is easier to digest this way (Since Moodle 1.6) &lt;br /&gt;
* Make an sample exam&lt;br /&gt;
&lt;br /&gt;
Teachers also send her their exams so that she would make the exam for them.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Grace Grader===&lt;br /&gt;
* &#039;&#039;&#039;Grace&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Grace_Grader|Grace: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Grace_Grader|Grace: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is a trainee and only does [[Quiz UI redesign scenarios - Grading et Feedback|grading]] according to instructions.&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Background&amp;diff=9370</id>
		<title>Quiz UI redesign scenarios - Background</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Background&amp;diff=9370"/>
		<updated>2009-03-12T06:50:10Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Paul Pedagogue */ persona draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Quiz_UI_redesign_scenarios_-_Scenarios_index|Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=99351 Discussion thread, where scenarios were commented. Now inactive, please edit this wiki directly or create a new thread]. &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=hyfLOSadJW4 Introductory video]&lt;br /&gt;
== Background/Personas ==&lt;br /&gt;
&lt;br /&gt;
An exam can be used at the beginning of a course to evaluate the initial level of the students&#039; understanding, during the course to provide checkpoints for students, or at the end of the course. In any case, quizzes/exams often have a dual role: they give the teacher information about the student&#039;s skills, but more &#039;&#039;&#039;importantly they are a pedagogical tool: while answering, a student generates knowledge and learns in the process&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If it seems to you that your idea of using exam is very different from any of the current personas, you may add a new one or [http://moodle.org/mod/forum/discuss.php?d=99351 tell us about this in the forum thread dedicated for persona/scenario discussion]&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Key questions for this part of the exam making:&lt;br /&gt;
&lt;br /&gt;
* What are the pedagogigal goals for the teacher? &lt;br /&gt;
* Does the exam use essay questions or automatically evaluated (or what)?&lt;br /&gt;
* What initiates the lifecycle of an exam?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Mack Marketing ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mack&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Mack_Marketing|Mack: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Mack_Marketing|Mack: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;Mack&#039;&#039; is a marketing teacher. He likes golf, but not on rainy days. &lt;br /&gt;
* He has quite a bit of experience using the internet, mainly for webmail&lt;br /&gt;
&lt;br /&gt;
He also teaches online a bit, but mostly he has normal classes. In addition to regular, time-limited exams, he also uses take-home exams (with deadlines for the questions/case assignments) and group exams (a group works together on a a case and the work is evaluated). &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
&lt;br /&gt;
While defining the goals of his course, he ends up with the conclusion that an exam with essay questions is needed at the end of the course for evaluating students&#039; learning. He does not think exams are a very good way of evaluating learning, since they mostly evaluate what students happen to remember. And even though he considers grading essay answers an extra workload, he still sees this as the only way &#039;&#039;&#039;to effectively evaluate students&#039; conceptual understanding&#039;&#039;&#039;, especially on his basic courses where there are more students.  &lt;br /&gt;
&lt;br /&gt;
He uses quite similar exams on different courses, our focus is on a Introduction to Marketing  exam, which is about:&lt;br /&gt;
&lt;br /&gt;
* Evaluating conceptual learning; can apply what they have learned to real-life cases&lt;br /&gt;
* Essay questions&lt;br /&gt;
* Qualitative feedback; using templates as basis&lt;br /&gt;
&lt;br /&gt;
Hypothesis: Since his exams are so specialized, Mack is afraid that if another teacher takes up his courses, that teacher will not understand all the nuances he has taken into account while designing his exams. That is why he writes notes about each exam whole and archives these notes that explain the choices he has made in the exam design.&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
He plans &#039;&#039;&#039;to give feedback about students&#039; answers: for him, this enables the exam to work as a pedagogical tool&#039;&#039;&#039; and he does not require the exam results to be absolutely comparable with the exam results of courses of previous semesters. He uses some templates for feedback, and based on that he then writes feedback for each student personally.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ida Informatics ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ida&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Ida_Informatics|Ida: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Ida_Informatics|Ida: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
&lt;br /&gt;
Moodle community contributors to Ida: [http://moodle.org/user/view.php?id=81449&amp;amp;course=5 Gary Anderson]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ida&#039;&#039; is a teacher in her fifties, still likes teaching but is more-or-less secretly already anticipating her retirement. She teaches informatics. Her teaching responsibilities include lecturing a couple of basic courses with dozens or even some hundreds of students at a time. &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
A lot of her time is spent planning &#039;&#039;&#039;a course of basic information retrieval to 200 first year students each semester&#039;&#039;&#039;. &lt;br /&gt;
The exam is about:&lt;br /&gt;
* Evaluating learning of basic factual knowledge of her field&lt;br /&gt;
* Multiple choice questions&lt;br /&gt;
* for &#039;&#039;&#039;testing students&#039; basic factual knowledge of her field&#039;&#039;&#039; automatically graded questions, such as multiple questions, suffice well enough (versus Mack&#039;s essay questions for testing conceptual understanding).&lt;br /&gt;
* Automatically graded questions are especially beneficial when students immediately get feedback on their answers and have a chance to give it a second or third try. It also significantly reduces the teacher load while giving better feedback on the progress of individuals and the whole class on topics covered.&lt;br /&gt;
&lt;br /&gt;
Ida sees exams beneficial since they provide &#039;&#039;&#039;measurable grounds on which to compare and grade learning&#039;&#039;&#039; on a &#039;&#039;&#039;numerical (quantitative) scale&#039;&#039;&#039; and for quick feedback to students. She wants to have her exam as automated as possible. She does not think exams have much pedagogical purpose, and would actually rather not even grade her students, but since the educational system demands comparable grades, she does it this way. &lt;br /&gt;
&lt;br /&gt;
(In an ideal world, she would instantly start using a tool that would analyze her course material automatically, generate essay questions and then even grade them using linguistic analysis or some other method.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Harvey Historian===&lt;br /&gt;
* &#039;&#039;&#039;Harvey&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Harvey_Historian|Harvey: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Harvey_Historian|Harvey: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Harvey is a history professor in a university. He mostly concentrates on his research, but also does some teaching of basic courses he knows by heart, since he has been doing it for a couple of decades. &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
He uses exams to test the students&#039; understanding of specific eras from different points of view, and students&#039; ability to see the connections between different events in history.&lt;br /&gt;
&lt;br /&gt;
Sometimes Harvey also takes a year off, and the exam bank is an excellent resource for a less experienced teacher to refer to for finding out what is essential to teach about a course.&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
Harvey gives brief feedback to students about what would have made a better grade. Since he has seen most things in the past already, he does not use any feedbacks for template since he has all of it pretty much in the back of his head.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Paul Pedagogue===&lt;br /&gt;
* &#039;&#039;&#039;Paul&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
* Moodle community contributor for Paul Pedagogue  Jeff Forssell&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Paul is almost 60 years old and is interested in all kinds of fields: science, gardening, languages, politics and music. He spends a lot of time on Internet and is delighted that it is now possible for everyone to contribute. He isn&#039;t a trained programmer, but is not afraid to dabble in code to fine tune things to the way he wants to work. Though he loves discussing directly with students, he feels that in a dynamic Internet distance course he can have very personal contact with the students. Good interactive questions can give him freedom from repetitious correcting while giving good guidance to students. He has many distance students, but still has some classroom students.&lt;br /&gt;
&lt;br /&gt;
====Grading hinders learning====&lt;br /&gt;
Paul uses interactive questions, in &amp;quot;quizzes&amp;quot;, primarily as a learning tool. He actually would prefer to have &amp;quot;official evaluation&amp;quot; (grading) done by some other instance, like the higher school or workplace that the student is aspiring to. This would free the teacher from the schizophrenic Helper/Judge dichotomy that prevents students and teachers from really working together in trust toward the common goal: lasting knowledge and methods for the student that will help him/er reach his/er goals. Grading in a class can also lead to diminished student interest in helping one&#039;s classmates, though this is one of the best ways to really learn something.&lt;br /&gt;
&lt;br /&gt;
====Questions are seeds for dialogue====&lt;br /&gt;
Questions for learning have been the prime tool for many teachers from Socrates to Martin D! Questions usually don&#039;t have one RIGHT answer, so it is very important to allow for many alternative answers and this can make pattern matching (like &amp;quot;regular expressions&amp;quot;) a high priority. Since the question is used for teaching it is important to make it provide as much dialog as possible. He will generally not like a simplified interface that doesn&#039;t have possibilities for rich feedback for varied answers. If possible he will try to give some kind of encouragement/understanding, for common mistakes as well a some &#039;&#039;&#039;clue to help&#039;&#039;&#039; the student in his &#039;&#039;&#039;processing of the problem&#039;&#039;&#039; (preferably without giving the &amp;quot;right answer&amp;quot;). His quizzes give students ways they can assess their own learning and, in a problem-based learning style, build up their understanding. If he has distance pupils, he will create many &amp;quot;&#039;&#039;&#039;interactive question exercise follow-ups&#039;&#039;&#039;&amp;quot; (using quizzes) as soon as he notices things that are common pitfalls. For an answer that isn&#039;t the &amp;quot;right one&amp;quot; his &#039;&#039;&#039;feedback will tend to be cautious&#039;&#039;&#039;: &amp;quot;We didn&#039;t recognize your answer as being one that we expected. Could you describe how you reached this answer?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Organic growth&amp;quot; of interactive questions====&lt;br /&gt;
Since he sees the questions as part of a developing dialog he values any characteristics that increase the dynamics. Since he&#039;s not usually interested in &amp;quot;objective grading&amp;quot;, he doesn&#039;t like the case that a &amp;quot;quiz&amp;quot; can not have new questions added once someone has &amp;quot;done the test&amp;quot;. On the other hand possibilities of increasing the feedback/input of the students are exciting. Students should always be able to [[https://docs.moodle.org/en/Feedback_link_for_all_elements#Quiz_questions_.28even_lesson_and_feedback_and_questionnaire.3F.29 comment on the questions]] and ideally be able to suggest other answer alternatives (with their motivations) that could be, ideally, automatically, on teacher review, added to the questions. As a help in emphasizing that his interactive questions are a  &amp;quot;work in progress&amp;quot;, the student interface should be able to turn off or play down points (example: &#039;&#039;&#039;&#039;&#039;preliminary&#039;&#039;&#039; points 0.6 of 1.0&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Even if his interest in grades is minimal, a CBG, &amp;quot;certainty based grading&amp;quot;, system is an exciting way of getting certainty feedback about the things that students are unsure of (in spite of giving what they think/hope is the right answer) as well as pointing out the seriousness of being very sure of something wrong. This kind of information is important for developing the teaching (including new interactive questions).  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Fred ===&lt;br /&gt;
* &#039;&#039;&#039;Fred&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Fred|Fred: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Fred|Fred: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We are still missing quite a few details about Fred. If you are or know a Fred, please tell us about him.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fred is an teacher of an advanced computer sciences course. Several other courses are prerequisites for his course.&lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
Fred&#039;s exams are:&lt;br /&gt;
* At the beginning of a course, &lt;br /&gt;
* for evaluating the starting level of the students on his course; &lt;br /&gt;
** formative assessment of understanding of the meaning of basic concepts&lt;br /&gt;
** Multiple choice&lt;br /&gt;
* given periodically to assess the class&#039;s ability to grasp new concepts&lt;br /&gt;
** multiple choice&lt;br /&gt;
** free response (code response)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fred &#039;&#039;&#039;uses an exam  to &#039;&#039;&#039;evaluate the starting level for his students&#039;&#039;&#039;. Some students are given a grade for the whole course just for the exam if they do well enough.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Susan Support===&lt;br /&gt;
* &#039;&#039;&#039;Susan&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Susan_Support|Susan: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Susan_Support|Susan: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Susan works in the IT support of her school. &lt;br /&gt;
&lt;br /&gt;
She does introductory lectures about Moodle and other learning environments. She also tutors teachers hand-by-hand, and the drill is roughly as follows:&lt;br /&gt;
* Explain basic principles of Quiz&lt;br /&gt;
* Go through the help material&lt;br /&gt;
* Teach the question bank separately at first, before looking at the Quiz, it is easier to digest this way (Since Moodle 1.6) &lt;br /&gt;
* Make an sample exam&lt;br /&gt;
&lt;br /&gt;
Teachers also send her their exams so that she would make the exam for them.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Grace Grader===&lt;br /&gt;
* &#039;&#039;&#039;Grace&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Grace_Grader|Grace: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Grace_Grader|Grace: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is a trainee and only does [[Quiz UI redesign scenarios - Grading et Feedback|grading]] according to instructions.&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Background&amp;diff=9369</id>
		<title>Quiz UI redesign scenarios - Background</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Background&amp;diff=9369"/>
		<updated>2009-03-12T05:47:10Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Paul Pedagogue */ headings and other changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Quiz_UI_redesign_scenarios_-_Scenarios_index|Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=99351 Discussion thread, where scenarios were commented. Now inactive, please edit this wiki directly or create a new thread]. &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=hyfLOSadJW4 Introductory video]&lt;br /&gt;
== Background/Personas ==&lt;br /&gt;
&lt;br /&gt;
An exam can be used at the beginning of a course to evaluate the initial level of the students&#039; understanding, during the course to provide checkpoints for students, or at the end of the course. In any case, quizzes/exams often have a dual role: they give the teacher information about the student&#039;s skills, but more &#039;&#039;&#039;importantly they are a pedagogical tool: while answering, a student generates knowledge and learns in the process&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If it seems to you that your idea of using exam is very different from any of the current personas, you may add a new one or [http://moodle.org/mod/forum/discuss.php?d=99351 tell us about this in the forum thread dedicated for persona/scenario discussion]&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Key questions for this part of the exam making:&lt;br /&gt;
&lt;br /&gt;
* What are the pedagogigal goals for the teacher? &lt;br /&gt;
* Does the exam use essay questions or automatically evaluated (or what)?&lt;br /&gt;
* What initiates the lifecycle of an exam?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Mack Marketing ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mack&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Mack_Marketing|Mack: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Mack_Marketing|Mack: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;Mack&#039;&#039; is a marketing teacher. He likes golf, but not on rainy days. &lt;br /&gt;
* He has quite a bit of experience using the internet, mainly for webmail&lt;br /&gt;
&lt;br /&gt;
He also teaches online a bit, but mostly he has normal classes. In addition to regular, time-limited exams, he also uses take-home exams (with deadlines for the questions/case assignments) and group exams (a group works together on a a case and the work is evaluated). &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
&lt;br /&gt;
While defining the goals of his course, he ends up with the conclusion that an exam with essay questions is needed at the end of the course for evaluating students&#039; learning. He does not think exams are a very good way of evaluating learning, since they mostly evaluate what students happen to remember. And even though he considers grading essay answers an extra workload, he still sees this as the only way &#039;&#039;&#039;to effectively evaluate students&#039; conceptual understanding&#039;&#039;&#039;, especially on his basic courses where there are more students.  &lt;br /&gt;
&lt;br /&gt;
He uses quite similar exams on different courses, our focus is on a Introduction to Marketing  exam, which is about:&lt;br /&gt;
&lt;br /&gt;
* Evaluating conceptual learning; can apply what they have learned to real-life cases&lt;br /&gt;
* Essay questions&lt;br /&gt;
* Qualitative feedback; using templates as basis&lt;br /&gt;
&lt;br /&gt;
Hypothesis: Since his exams are so specialized, Mack is afraid that if another teacher takes up his courses, that teacher will not understand all the nuances he has taken into account while designing his exams. That is why he writes notes about each exam whole and archives these notes that explain the choices he has made in the exam design.&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
He plans &#039;&#039;&#039;to give feedback about students&#039; answers: for him, this enables the exam to work as a pedagogical tool&#039;&#039;&#039; and he does not require the exam results to be absolutely comparable with the exam results of courses of previous semesters. He uses some templates for feedback, and based on that he then writes feedback for each student personally.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ida Informatics ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ida&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Ida_Informatics|Ida: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Ida_Informatics|Ida: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
&lt;br /&gt;
Moodle community contributors to Ida: [http://moodle.org/user/view.php?id=81449&amp;amp;course=5 Gary Anderson]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ida&#039;&#039; is a teacher in her fifties, still likes teaching but is more-or-less secretly already anticipating her retirement. She teaches informatics. Her teaching responsibilities include lecturing a couple of basic courses with dozens or even some hundreds of students at a time. &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
A lot of her time is spent planning &#039;&#039;&#039;a course of basic information retrieval to 200 first year students each semester&#039;&#039;&#039;. &lt;br /&gt;
The exam is about:&lt;br /&gt;
* Evaluating learning of basic factual knowledge of her field&lt;br /&gt;
* Multiple choice questions&lt;br /&gt;
* for &#039;&#039;&#039;testing students&#039; basic factual knowledge of her field&#039;&#039;&#039; automatically graded questions, such as multiple questions, suffice well enough (versus Mack&#039;s essay questions for testing conceptual understanding).&lt;br /&gt;
* Automatically graded questions are especially beneficial when students immediately get feedback on their answers and have a chance to give it a second or third try. It also significantly reduces the teacher load while giving better feedback on the progress of individuals and the whole class on topics covered.&lt;br /&gt;
&lt;br /&gt;
Ida sees exams beneficial since they provide &#039;&#039;&#039;measurable grounds on which to compare and grade learning&#039;&#039;&#039; on a &#039;&#039;&#039;numerical (quantitative) scale&#039;&#039;&#039; and for quick feedback to students. She wants to have her exam as automated as possible. She does not think exams have much pedagogical purpose, and would actually rather not even grade her students, but since the educational system demands comparable grades, she does it this way. &lt;br /&gt;
&lt;br /&gt;
(In an ideal world, she would instantly start using a tool that would analyze her course material automatically, generate essay questions and then even grade them using linguistic analysis or some other method.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Harvey Historian===&lt;br /&gt;
* &#039;&#039;&#039;Harvey&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Harvey_Historian|Harvey: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Harvey_Historian|Harvey: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Harvey is a history professor in a university. He mostly concentrates on his research, but also does some teaching of basic courses he knows by heart, since he has been doing it for a couple of decades. &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
He uses exams to test the students&#039; understanding of specific eras from different points of view, and students&#039; ability to see the connections between different events in history.&lt;br /&gt;
&lt;br /&gt;
Sometimes Harvey also takes a year off, and the exam bank is an excellent resource for a less experienced teacher to refer to for finding out what is essential to teach about a course.&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
Harvey gives brief feedback to students about what would have made a better grade. Since he has seen most things in the past already, he does not use any feedbacks for template since he has all of it pretty much in the back of his head.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Paul Pedagogue===&lt;br /&gt;
* &#039;&#039;&#039;Paul&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Paul_Pedagogue|Paul: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Paul_Pedagogue|Paul: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Paul&#039;s profile was proposed by [http://moodle.org/mod/forum/discuss.php?d=99351#p439124 Joseph Rézeau in the forums].&lt;br /&gt;
&lt;br /&gt;
====Grading hinders learning====&lt;br /&gt;
Paul uses interactive questions, in &amp;quot;quizzes&amp;quot;, primarily as a learning tool. He actually would prefer to have &amp;quot;official evaluation&amp;quot; (grading) done by some other instance, like the higher school or workplace that the student is aspiring to. This would free the teacher from the schizophrenic Helper/Judge dichotomy that prevents students and teachers from really working together in trust toward the common goal: lasting knowledge and methods for the student that will help him/er reach his/er goals. Grading in a class can also lead to diminished student interest in helping one&#039;s classmates, though this is one of the best ways to really learn something.&lt;br /&gt;
&lt;br /&gt;
====Questions are seeds for dialogue====&lt;br /&gt;
Questions for learning have been the prime tool for many teachers from Socrates to Martin D! Questions usually don&#039;t have one RIGHT answer, so it is very important to allow for many alternative answers and this can make pattern matching (like &amp;quot;regular expressions&amp;quot;) a high priority. Since the question is used for teaching it is important to make it provide as much dialog as possible. He will generally not like a simplified interface that doesn&#039;t have possibilities for rich feedback for varied answers. If possible he will try to give some kind of encouragement/understanding, for common mistakes as well a some &#039;&#039;&#039;clue to help&#039;&#039;&#039; the student in his &#039;&#039;&#039;processing of the problem&#039;&#039;&#039; (preferably without giving the &amp;quot;right answer&amp;quot;). His quizzes give students ways they can assess their own learning and, in a problem-based learning style, build up their understanding. If he has distance pupils, he will create many &amp;quot;&#039;&#039;&#039;interactive question exercise follow-ups&#039;&#039;&#039;&amp;quot; (using quizzes) as soon as he notices things that are common pitfalls. For an answer that isn&#039;t the &amp;quot;right one&amp;quot; his &#039;&#039;&#039;feedback will tend to be cautious&#039;&#039;&#039;: &amp;quot;We didn&#039;t recognize your answer as being one that we expected. Could you describe how you reached this answer?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Organic growth&amp;quot; of interactive questions====&lt;br /&gt;
Since he sees the questions as part of a developing dialog he values any characteristics that increase the dynamics. Since he&#039;s not usually interested in &amp;quot;objective grading&amp;quot;, he doesn&#039;t like the case that a &amp;quot;quiz&amp;quot; can not have new questions added once someone has &amp;quot;done the test&amp;quot;. On the other hand possibilities of increasing the feedback/input of the students are exciting. Students should always be able to [[https://docs.moodle.org/en/Feedback_link_for_all_elements#Quiz_questions_.28even_lesson_and_feedback_and_questionnaire.3F.29 comment on the questions]] and ideally be able to suggest other answer alternatives (with their motivations) that could be, ideally, automatically, on teacher review, added to the questions. As a help in emphasizing that his interactive questions are a  &amp;quot;work in progress&amp;quot;, the student interface should be able to turn off or play down points (example: &#039;&#039;&#039;&#039;&#039;preliminary&#039;&#039;&#039; points 0.6 of 1.0&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Even if his interest in grades is minimal, a CBG, &amp;quot;certainty based grading&amp;quot;, system is an exciting way of getting certainty feedback about the things that students are unsure of (in spite of giving what they think/hope is the right answer) as well as pointing out the seriousness of being very sure of something wrong. This kind of information is important for developing the teaching (including new interactive questions).  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Fred ===&lt;br /&gt;
* &#039;&#039;&#039;Fred&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Fred|Fred: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Fred|Fred: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We are still missing quite a few details about Fred. If you are or know a Fred, please tell us about him.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fred is an teacher of an advanced computer sciences course. Several other courses are prerequisites for his course.&lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
Fred&#039;s exams are:&lt;br /&gt;
* At the beginning of a course, &lt;br /&gt;
* for evaluating the starting level of the students on his course; &lt;br /&gt;
** formative assessment of understanding of the meaning of basic concepts&lt;br /&gt;
** Multiple choice&lt;br /&gt;
* given periodically to assess the class&#039;s ability to grasp new concepts&lt;br /&gt;
** multiple choice&lt;br /&gt;
** free response (code response)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fred &#039;&#039;&#039;uses an exam  to &#039;&#039;&#039;evaluate the starting level for his students&#039;&#039;&#039;. Some students are given a grade for the whole course just for the exam if they do well enough.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Susan Support===&lt;br /&gt;
* &#039;&#039;&#039;Susan&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Susan_Support|Susan: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Susan_Support|Susan: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Susan works in the IT support of her school. &lt;br /&gt;
&lt;br /&gt;
She does introductory lectures about Moodle and other learning environments. She also tutors teachers hand-by-hand, and the drill is roughly as follows:&lt;br /&gt;
* Explain basic principles of Quiz&lt;br /&gt;
* Go through the help material&lt;br /&gt;
* Teach the question bank separately at first, before looking at the Quiz, it is easier to digest this way (Since Moodle 1.6) &lt;br /&gt;
* Make an sample exam&lt;br /&gt;
&lt;br /&gt;
Teachers also send her their exams so that she would make the exam for them.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Grace Grader===&lt;br /&gt;
* &#039;&#039;&#039;Grace&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Grace_Grader|Grace: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Grace_Grader|Grace: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is a trainee and only does [[Quiz UI redesign scenarios - Grading et Feedback|grading]] according to instructions.&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Background&amp;diff=9368</id>
		<title>Quiz UI redesign scenarios - Background</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_scenarios_-_Background&amp;diff=9368"/>
		<updated>2009-03-11T13:52:24Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Paul Pedagogue */ feedback, dialog, student process support, grading not his favorite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Quiz_UI_redesign_scenarios_-_Scenarios_index|Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=99351 Discussion thread, where scenarios were commented. Now inactive, please edit this wiki directly or create a new thread]. &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=hyfLOSadJW4 Introductory video]&lt;br /&gt;
== Background/Personas ==&lt;br /&gt;
&lt;br /&gt;
An exam can be used at the beginning of a course to evaluate the initial level of the students&#039; understanding, during the course to provide checkpoints for students, or at the end of the course. In any case, quizzes/exams often have a dual role: they give the teacher information about the student&#039;s skills, but more &#039;&#039;&#039;importantly they are a pedagogical tool: while answering, a student generates knowledge and learns in the process&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If it seems to you that your idea of using exam is very different from any of the current personas, you may add a new one or [http://moodle.org/mod/forum/discuss.php?d=99351 tell us about this in the forum thread dedicated for persona/scenario discussion]&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Key questions for this part of the exam making:&lt;br /&gt;
&lt;br /&gt;
* What are the pedagogigal goals for the teacher? &lt;br /&gt;
* Does the exam use essay questions or automatically evaluated (or what)?&lt;br /&gt;
* What initiates the lifecycle of an exam?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Mack Marketing ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mack&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Mack_Marketing|Mack: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Mack_Marketing|Mack: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;Mack&#039;&#039; is a marketing teacher. He likes golf, but not on rainy days. &lt;br /&gt;
* He has quite a bit of experience using the internet, mainly for webmail&lt;br /&gt;
&lt;br /&gt;
He also teaches online a bit, but mostly he has normal classes. In addition to regular, time-limited exams, he also uses take-home exams (with deadlines for the questions/case assignments) and group exams (a group works together on a a case and the work is evaluated). &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
&lt;br /&gt;
While defining the goals of his course, he ends up with the conclusion that an exam with essay questions is needed at the end of the course for evaluating students&#039; learning. He does not think exams are a very good way of evaluating learning, since they mostly evaluate what students happen to remember. And even though he considers grading essay answers an extra workload, he still sees this as the only way &#039;&#039;&#039;to effectively evaluate students&#039; conceptual understanding&#039;&#039;&#039;, especially on his basic courses where there are more students.  &lt;br /&gt;
&lt;br /&gt;
He uses quite similar exams on different courses, our focus is on a Introduction to Marketing  exam, which is about:&lt;br /&gt;
&lt;br /&gt;
* Evaluating conceptual learning; can apply what they have learned to real-life cases&lt;br /&gt;
* Essay questions&lt;br /&gt;
* Qualitative feedback; using templates as basis&lt;br /&gt;
&lt;br /&gt;
Hypothesis: Since his exams are so specialized, Mack is afraid that if another teacher takes up his courses, that teacher will not understand all the nuances he has taken into account while designing his exams. That is why he writes notes about each exam whole and archives these notes that explain the choices he has made in the exam design.&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
He plans &#039;&#039;&#039;to give feedback about students&#039; answers: for him, this enables the exam to work as a pedagogical tool&#039;&#039;&#039; and he does not require the exam results to be absolutely comparable with the exam results of courses of previous semesters. He uses some templates for feedback, and based on that he then writes feedback for each student personally.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ida Informatics ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ida&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Ida_Informatics|Ida: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Ida_Informatics|Ida: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
&lt;br /&gt;
Moodle community contributors to Ida: [http://moodle.org/user/view.php?id=81449&amp;amp;course=5 Gary Anderson]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ida&#039;&#039; is a teacher in her fifties, still likes teaching but is more-or-less secretly already anticipating her retirement. She teaches informatics. Her teaching responsibilities include lecturing a couple of basic courses with dozens or even some hundreds of students at a time. &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
A lot of her time is spent planning &#039;&#039;&#039;a course of basic information retrieval to 200 first year students each semester&#039;&#039;&#039;. &lt;br /&gt;
The exam is about:&lt;br /&gt;
* Evaluating learning of basic factual knowledge of her field&lt;br /&gt;
* Multiple choice questions&lt;br /&gt;
* for &#039;&#039;&#039;testing students&#039; basic factual knowledge of her field&#039;&#039;&#039; automatically graded questions, such as multiple questions, suffice well enough (versus Mack&#039;s essay questions for testing conceptual understanding).&lt;br /&gt;
* Automatically graded questions are especially beneficial when students immediately get feedback on their answers and have a chance to give it a second or third try. It also significantly reduces the teacher load while giving better feedback on the progress of individuals and the whole class on topics covered.&lt;br /&gt;
&lt;br /&gt;
Ida sees exams beneficial since they provide &#039;&#039;&#039;measurable grounds on which to compare and grade learning&#039;&#039;&#039; on a &#039;&#039;&#039;numerical (quantitative) scale&#039;&#039;&#039; and for quick feedback to students. She wants to have her exam as automated as possible. She does not think exams have much pedagogical purpose, and would actually rather not even grade her students, but since the educational system demands comparable grades, she does it this way. &lt;br /&gt;
&lt;br /&gt;
(In an ideal world, she would instantly start using a tool that would analyze her course material automatically, generate essay questions and then even grade them using linguistic analysis or some other method.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Harvey Historian===&lt;br /&gt;
* &#039;&#039;&#039;Harvey&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Harvey_Historian|Harvey: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Harvey_Historian|Harvey: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Harvey is a history professor in a university. He mostly concentrates on his research, but also does some teaching of basic courses he knows by heart, since he has been doing it for a couple of decades. &lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
He uses exams to test the students&#039; understanding of specific eras from different points of view, and students&#039; ability to see the connections between different events in history.&lt;br /&gt;
&lt;br /&gt;
Sometimes Harvey also takes a year off, and the exam bank is an excellent resource for a less experienced teacher to refer to for finding out what is essential to teach about a course.&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
Harvey gives brief feedback to students about what would have made a better grade. Since he has seen most things in the past already, he does not use any feedbacks for template since he has all of it pretty much in the back of his head.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Paul Pedagogue===&lt;br /&gt;
* &#039;&#039;&#039;Paul&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Paul_Pedagogue|Paul: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Paul_Pedagogue|Paul: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Paul&#039;s profile was proposed by [http://moodle.org/mod/forum/discuss.php?d=99351#p439124 Joseph Rézeau in the forums].&lt;br /&gt;
&lt;br /&gt;
Paul uses interactive questions, in &amp;quot;quizzes&amp;quot;, primarily as a learning tool. He actually would prefer to have &amp;quot;official evaluation&amp;quot; (grading) done by some other instance, like the higher school or workplace that the student is aspiring to. This would free the teacher from the schizophrenic Helper/Judge dichotomy that prevents students and teachers from really working together in trust toward the common goal: lasting knowledge and methods for the student that will help him/er reach his/er goals. &lt;br /&gt;
&lt;br /&gt;
Questions for learning have been the prime tool for many teachers from Socrates to Martin D! Questions usually don&#039;t have one RIGHT answer, so it is very important to allow for many alternative answers and this can make pattern matching (like &amp;quot;regular expressions&amp;quot;) a high priority. Since the question is used for teaching it is important to make it provide as much dialog as possible. He will generally not like a simplified interface that doesn&#039;t have possibilities for rich feedback for varied answers. If possible he will try to give some kind of encouragement/understanding, for common mistakes as well a some clue to help the student in his processing of the problem (preferably without giving the &amp;quot;right answer&amp;quot;). His quizzes give students ways they can assess their own learning and, in a problem-based learning style, build up their understanding. If he has distance pupils, he will create many &amp;quot;interactive question exercise follow-ups&amp;quot; (using quizzes) as soon as he notices things that are common pitfalls. For an answer that isn&#039;t the &amp;quot;right one&amp;quot; his feedback will tend to be cautious: &amp;quot;We didn&#039;t recognize your answer as being one that we expected. Could you describe how you reached this answer?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Since he sees the questions as part of a developing dialog he values any characteristics that increase the dynamics. Since he&#039;s not usually interested in &amp;quot;objective grading&amp;quot;, he doesn&#039;t like the case that a &amp;quot;quiz&amp;quot; can not have new questions added once someone has &amp;quot;done the test&amp;quot;. On the other hand possibilities of increasing the feedback/input of the students are exciting. Students should always be able to [[https://docs.moodle.org/en/Feedback_link_for_all_elements#Quiz_questions_.28even_lesson_and_feedback_and_questionnaire.3F.29 comment on the questions]] and ideally be able to suggest other answer alternatives (with their motivations) that could be, ideally, automatically, on teacher review, added to the questions. Even if his interest in grades is minimal, a CBG, &amp;quot;certainty based grading&amp;quot;, system is an exciting way of getting feedback about the things that students are unsure of (in spite of giving what they think/hope is the right answer) as well as pointing out the seriousness of being very sure of something wrong.      &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Fred ===&lt;br /&gt;
* &#039;&#039;&#039;Fred&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Fred|Fred: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Fred|Fred: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We are still missing quite a few details about Fred. If you are or know a Fred, please tell us about him.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fred is an teacher of an advanced computer sciences course. Several other courses are prerequisites for his course.&lt;br /&gt;
&lt;br /&gt;
====Exams: why and what====&lt;br /&gt;
Fred&#039;s exams are:&lt;br /&gt;
* At the beginning of a course, &lt;br /&gt;
* for evaluating the starting level of the students on his course; &lt;br /&gt;
** formative assessment of understanding of the meaning of basic concepts&lt;br /&gt;
** Multiple choice&lt;br /&gt;
* given periodically to assess the class&#039;s ability to grasp new concepts&lt;br /&gt;
** multiple choice&lt;br /&gt;
** free response (code response)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fred &#039;&#039;&#039;uses an exam  to &#039;&#039;&#039;evaluate the starting level for his students&#039;&#039;&#039;. Some students are given a grade for the whole course just for the exam if they do well enough.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Susan Support===&lt;br /&gt;
* &#039;&#039;&#039;Susan&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Susan_Support|Susan: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Susan_Support|Susan: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Susan works in the IT support of her school. &lt;br /&gt;
&lt;br /&gt;
She does introductory lectures about Moodle and other learning environments. She also tutors teachers hand-by-hand, and the drill is roughly as follows:&lt;br /&gt;
* Explain basic principles of Quiz&lt;br /&gt;
* Go through the help material&lt;br /&gt;
* Teach the question bank separately at first, before looking at the Quiz, it is easier to digest this way (Since Moodle 1.6) &lt;br /&gt;
* Make an sample exam&lt;br /&gt;
&lt;br /&gt;
Teachers also send her their exams so that she would make the exam for them.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Grace Grader===&lt;br /&gt;
* &#039;&#039;&#039;Grace&#039;s persona&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Preparing_questions#Grace_Grader|Grace: Preparing questions]]&lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Entering_questions_into_an_exam#Grace_Grader|Grace: Organizing questions and adding them into an exam]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351 Forum discussion to comment on scenarios]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is a trainee and only does [[Quiz UI redesign scenarios - Grading et Feedback|grading]] according to instructions.&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Flagging_questions_during_a_quiz_attempt&amp;diff=11060</id>
		<title>Flagging questions during a quiz attempt</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Flagging_questions_during_a_quiz_attempt&amp;diff=11060"/>
		<updated>2009-02-13T08:22:17Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: missing word&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&lt;br /&gt;
&lt;br /&gt;
We want students to be able to mark certain questions as they are doing them for whatever purpose, for example:&lt;br /&gt;
* because they want to go back and check their answer before submitting the quiz.&lt;br /&gt;
* because the results will only be released later, and they particularly want to remember to check whether they got this question right.&lt;br /&gt;
* because they want to ask their friend or teacher something relating to that question later.&lt;br /&gt;
This should be a simple toggleable marker, so a question is either flagged or not. The flag is controlled by  the person attempting the quiz. Other people (for example a teacher reviewing the quiz) can see but not change the state.&lt;br /&gt;
&lt;br /&gt;
Teachers should be able to configure whether flags are used on a particular quiz.&lt;br /&gt;
&lt;br /&gt;
This is MDL-16263. Please [http://moodle.org/mod/forum/discuss.php?d=104487 discuss this proposal in the Quiz forum].&lt;br /&gt;
&lt;br /&gt;
==Code organisation==&lt;br /&gt;
&lt;br /&gt;
Flagging of questions actually be implemented as a feature of the question engine, because it is potentially useful shared functionality. However any user of the question engine will have control over whether the flagging interface appears using the $cmoptions parameter to the print_question function.&lt;br /&gt;
&lt;br /&gt;
In addition, some other parts of the quiz interface will be enhanced to show the flagged state of questions.&lt;br /&gt;
&lt;br /&gt;
We will just store the current state of the flag for each attempt at a question (per question session), so there will not be any history kept.&lt;br /&gt;
&lt;br /&gt;
==Interface within questions==&lt;br /&gt;
&lt;br /&gt;
The flags will be displayed to the left of the questions, under the question number and marks, if the $cmoptions-&amp;gt;flags is set in the call to print_question. There are three modes: QUESTION_FLAGSHIDDEN, QUESTION_FLAGSSHOWN and QUESTION_FLAGSEDITABLE. QUESTION_FLAGSSHOWN means display the current state of the flag, but don&#039;t let it be changed. QUESTION_FLAGSEDITABLE means show the flag with UI to change it.&lt;br /&gt;
&lt;br /&gt;
If JavaScript is on, the flag state will be toggled using an Ajax interface when it is clicked on. If JavaScript is off, there will be a check-box to show the state, which will be saved when that page of the quiz is submitted. Even with Ajax on, there will be a checkbox, and the flag image will be in its &amp;amp;lt;label&amp;gt;, but the checkbox will be hidden.&lt;br /&gt;
&lt;br /&gt;
==Configuration options within the quiz==&lt;br /&gt;
&lt;br /&gt;
There will be a new capability moodle/question:flag, which can be overridden in the quiz context to control whether a particular quiz uses flagging.&lt;br /&gt;
&lt;br /&gt;
==Interface within the quiz==&lt;br /&gt;
&lt;br /&gt;
If flags are on, the quiz will use QUESTION_FLAGSEDITABLE in attempt.php, and on the review.php and reviewquestion.php page when a user is reviewing their own attempt. It will use QUESTION_FLAGSSHOWN on the two review pages when you are reviewing someone else&#039;s attempt.&lt;br /&gt;
&lt;br /&gt;
In addition, if flags are in use&lt;br /&gt;
* they will be shown on summary.php.&lt;br /&gt;
* they may also be shown in the navigation block. (I will try it, is see if it looks good or if it is just confusing.)&lt;br /&gt;
&lt;br /&gt;
==Database changes==&lt;br /&gt;
&lt;br /&gt;
There will be a new column&lt;br /&gt;
 flagged INT(2) NOT NULL DEFAULT 0&lt;br /&gt;
in the question_sessions table.&lt;br /&gt;
&lt;br /&gt;
This will be accessed and updated through a few functions in questionlib.php.&lt;br /&gt;
&lt;br /&gt;
==Recording state changes==&lt;br /&gt;
&lt;br /&gt;
If JavaScript is on, there will be a new script question/toggleflag.php to receive the Ajax state update requests.&lt;br /&gt;
&lt;br /&gt;
Also, in the standard response processing (question_process_responses) there will be additional code to get the state of the flag checkbox and store it. &#039;&#039;&#039;TODO&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
However, for the review page, with JavaScript off, we need a &#039;Save flags&#039; button, which will need a script to go to. &#039;&#039;&#039;TODO&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Security of the Ajax interface==&lt;br /&gt;
&lt;br /&gt;
One difficulty with the Ajax interface is that the flags are managed by the question bank, but the question bank does not associate the question session with a particular user. (This is to give maximum flexibility to the quiz and other modules using the question engine.) So, when the question bank receives a request saying update the flag for session 12345 from a particular user, how does it know whether to allow it?&lt;br /&gt;
&lt;br /&gt;
We use two techniques to ensure that a call to question/toggleflag.php is valid.&lt;br /&gt;
&lt;br /&gt;
First, question_session has an id column as a primary key, but the pair (attemptid, questionid) also uniquely identifies the row. toggleflag.php requires all three ids to be sent, and checks that they are consistent. That makes it harder to forge requests. However it does not really check that the user sending the request should be allowed to change the flag on this question session.&lt;br /&gt;
&lt;br /&gt;
Second, toggleflag.php requires a checksum parameter to be sent. This must be&lt;br /&gt;
 md5($attemptid . &amp;quot;_&amp;quot; . $user-&amp;gt;secret . &amp;quot;_&amp;quot; . $questionid . &amp;quot;_&amp;quot; . $sessionid);&lt;br /&gt;
This can be computed when the flag is being output in the calling page, and in toggleflag.php we can check it against the same quantity for $USER, after require_login(). ($user-&amp;gt;secret is a random string stored for each user that is not accessible anywhere.)&lt;br /&gt;
&lt;br /&gt;
(This problem does not arise with the normal response processing because the quiz only asks the question bank to process responses after checking the user&#039;s identity.)&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Developer_notes#Quiz_.26_question_types|Other quiz &amp;amp; question bank developer notes]]&lt;br /&gt;
* MDL-16263.&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=104487 The forum thread to discuss this proposal]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=97196 Previous forum thread requesting this feature]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Quiz]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File_API&amp;diff=11506</id>
		<title>File API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File_API&amp;diff=11506"/>
		<updated>2009-02-02T05:34:23Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Moving files around */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&lt;br /&gt;
The file API is for managing all the files stored by Moodle. If you are interested in how the file API works internally, see [[File_API]]. The page is just about what you need to know to use the file API. Related is the [[Repository API]], which lets users get files into Moodle.&lt;br /&gt;
&lt;br /&gt;
==Overview of how it works==&lt;br /&gt;
&lt;br /&gt;
===File areas===&lt;br /&gt;
&lt;br /&gt;
===Serving files to users===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting files from the user==&lt;br /&gt;
&lt;br /&gt;
===Getting a file from a Moodle form===&lt;br /&gt;
&lt;br /&gt;
===Getting a file with content from the HTML editor===&lt;br /&gt;
&lt;br /&gt;
==Giving a file to the user==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moving files around==&lt;br /&gt;
&lt;br /&gt;
For example, if you have just built a file at the path&lt;br /&gt;
&lt;br /&gt;
 $from_zip_file =&lt;br /&gt;
 $CFG-&amp;gt;dataroot.&amp;quot;/temp/backup/&amp;quot;.$preferences-&amp;gt;backup_unique_code.&amp;quot;/&amp;quot;.$preferences-&amp;gt;backup_name;&lt;br /&gt;
&lt;br /&gt;
And you want to move it into the course_backup file area, do&lt;br /&gt;
&lt;br /&gt;
 $context = get_context_instance(CONTEXT_COURSE, $preferences-&amp;gt;backup_course);&lt;br /&gt;
 $fs = get_file_storage();&lt;br /&gt;
 $file_record = array(&#039;contextid&#039;=&amp;gt;$context-&amp;gt;id, &#039;filearea&#039;=&amp;gt;&#039;course_backup&#039;,&lt;br /&gt;
         &#039;itemid&#039;=&amp;gt;0, &#039;filepath&#039;=&amp;gt;&#039;/&#039;, &#039;filename&#039;=&amp;gt;$preferences-&amp;gt;backup_name,&lt;br /&gt;
         &#039;timecreated&#039;=&amp;gt;time(), &#039;timemodified&#039;=&amp;gt;time());&lt;br /&gt;
 $fs-&amp;gt;create_file_from_pathname($file_record, $from_zip_file);&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[File_API]] how the File API works internally.&lt;br /&gt;
* [[Roadmap|Moodle 2.0 roadmap]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Files]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Changing_the_Moodle_Question_Engine&amp;diff=12105</id>
		<title>Changing the Moodle Question Engine</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Changing_the_Moodle_Question_Engine&amp;diff=12105"/>
		<updated>2009-01-29T18:27:53Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Code flow */ missing word&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
The Question Engine is the part of the question code in Moodle that deals with what happens when a question is attempted by a Student, or later reviewed by the Teacher or the student themselves or included in reports. Roughly speaking this is half the question code, the other part being the Question Bank, which allows people to create, edit, organise, import, export and share questions. The Question Engine is the part that has to perform when you have a large class of students taking a quiz simultaneously.&lt;br /&gt;
&lt;br /&gt;
[[Image:Sydney_harbour.jpg|frame|An irrelevant but pretty picture of Sydney, taken from the hotel room where most of this was written.]]This document is a by-product of three years working on the Moodle quiz and question code. During that time I have fixed hundreds of bugs and feature requests. Some of the bugs with the Question Engine have requried careful fixing in order to avoid regressions, and there are other issues that are hard to do anything about at the moment.&lt;br /&gt;
&lt;br /&gt;
As well as bug fixes, I have also overseen major developments in the quiz/question system. For example Jamie&#039;s changes to the Question Bank, Ollie&#039;s new quiz editing interface, and Mahmoud&#039;s new quiz navigation that I added to Core Moodle while refactoring the quiz attempt code.&lt;br /&gt;
&lt;br /&gt;
Over the three years, I have also followed the Moodle quiz forum and seen what it is that people struggle with, complain about, want to change (and also what they like!). For example, having coached some people when writing new question types I realise that creating a new questions type is more difficult than it needs to be.&lt;br /&gt;
&lt;br /&gt;
The changes proposed here fix parts of the question engine code that I have been dissatisfied with since about the first time I looked at it. There are several reasons why I have not addressed them before now.&lt;br /&gt;
&lt;br /&gt;
# To fix them properly, we must change how the data is stored in some of the key question tables. In some sites, these tables contain millions of rows, and the processing required on update is non-trivial and is different for different question types. This is not something to undertake lightly.&lt;br /&gt;
# It took me about two and a half years to work out this solution. Some parts of this proposal where clear from the start, but the exact notion of question interaction models, and how they would relate to question types, only crystallised recently in my mind. Because of 1. I did not want to change anything until I was sure what I was proposing was right, not just in general, but in all the details.&lt;br /&gt;
# The mundane reason that there have been plenty of other things to work on, and I have not had time to address this until now.&lt;br /&gt;
# These are not critical problems. There have been no major changes to the question engine since the 1.6 release. Clearly there are not fundamental flaws with the current system. It is just not as good as it could be.&lt;br /&gt;
&lt;br /&gt;
As this is a major change, I will spend some time justifying it, before describing the change itself. My estimate is that doing what I propose here is a couple of month&#039;s solid work.&lt;br /&gt;
&lt;br /&gt;
==Goals of an online assessment system==&lt;br /&gt;
&lt;br /&gt;
Before going further, I think it is worth being clear about what properties we require of a question engine. In my view, we want:&lt;br /&gt;
&lt;br /&gt;
1. Correctness&lt;br /&gt;
2. Robustness&lt;br /&gt;
3. Richness&lt;br /&gt;
4. Efficiency&lt;br /&gt;
&lt;br /&gt;
Let me explain in more detail, and summarise how I thing Moodle currently performs.&lt;br /&gt;
&lt;br /&gt;
===1. Correctness===&lt;br /&gt;
&lt;br /&gt;
This says that, assuming nothing untoward happens, given certain inputs (question definitions, student responses, ...); and an understanding (specification) of what is supposed to happen; then the quiz module will always produce the right outputs (feedback, grades, ...). This is most important, because without this, you can&#039;t rely on anything.&lt;br /&gt;
&lt;br /&gt;
I think Moodle does quite well in this regard, mainly due to many committed users who will report bugs as they are encountered, and smaller group of developers who then fix those bugs.&lt;br /&gt;
&lt;br /&gt;
===2. Robustness===&lt;br /&gt;
&lt;br /&gt;
The previous section started, &amp;quot;assuming nothing untoward happens.&amp;quot; Robustness is about what happens if something does go wrong. What if the server crashes in the middle of a test? What if the connection to the database is lost in the middle of processing one student&#039;s submission? What if the PHP process runs out of memory in the middle of a re-grade? What if an impatient user clicks submit repeatedly or closes their browser window? And so on.&lt;br /&gt;
&lt;br /&gt;
In some of these cases, it is inevitable that some data will be lost. But robustness says that no matter what happens, the student&#039;s quiz attempt must be left in a consistent state (presumably either just before, or just after the last submission) and no more than the last submission&#039;s worth of data is lost.&lt;br /&gt;
&lt;br /&gt;
I think that this is currently a weakness for Moodle. If the server goes down at the end of a timed test, bad things happen. See the list of bugs below.&lt;br /&gt;
&lt;br /&gt;
===3. Richness===&lt;br /&gt;
&lt;br /&gt;
This is about supporting a rich range of educational experiences. One of Martin&#039;s &#039;five laws&#039; is that we learn when creating something for another person to see. An online assessment system can sometimes take the place of the other person. The question is, how effective a substitute can it be in how many situations?&lt;br /&gt;
&lt;br /&gt;
Moodle does quite well here, with adaptive mode, plug-in-able question types and so on. However, we could do better. At the moment, writing a new question type is harder than it need be. Also, the interaction model like adaptive or non-adaptive mode is hard coded into the question engine which makes it harder to support new interactions like certainty based marking.&lt;br /&gt;
&lt;br /&gt;
===4. Efficiency===&lt;br /&gt;
&lt;br /&gt;
Given all the above, how many simultaneous users can be supported with a particular amount of hardware? &lt;br /&gt;
&lt;br /&gt;
Moodle is neither flagrantly inefficient, nor as efficient as it could be. We currently lack easy-to-perform performance measurement. We should establish some, so we can estimate current hardware requirements, and observe the effect of other developments on efficiency.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Why things need to change==&lt;br /&gt;
&lt;br /&gt;
I have just summarised how well Moodle meets my four goals. I will now presents a different picture, by listing bugs and feature requests in the Moodle tracker that I think can best be resolved by the changes I propose. &lt;br /&gt;
&lt;br /&gt;
===Correctness issues===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Key !! Votes !! Watchers !! Summary&lt;br /&gt;
|-&lt;br /&gt;
| MDL-3030 || 13 || 7 || attempts should be auto-closed&lt;br /&gt;
|-&lt;br /&gt;
| MDL-3936 || 2 || 1 || Essay Question used in score before grading&lt;br /&gt;
|-&lt;br /&gt;
| MDL-9303 || 2 || 5 || General Feedback not shown for essay questions on review screen&lt;br /&gt;
|-&lt;br /&gt;
| MDL-9327 || 4 || 3 || Text in Essay type questions is not saved in second or more attempts  when the teacher has not graded previous attempts&lt;br /&gt;
|-&lt;br /&gt;
| MDL-13289 || 0 || 0 || Essay question with adaptive mode not show feedback&lt;br /&gt;
|-&lt;br /&gt;
| MDL-17681 || 0 || 0 || Manually assigned grades cannot easily by re-scaled when the marks for a question is changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Robustness issues===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Key !! Votes !! Watchers !! Summary&lt;br /&gt;
|-&lt;br /&gt;
| MDL-11852 || 0 || 1 || Quiz does not score properly&lt;br /&gt;
|-&lt;br /&gt;
| MDL-12344 || 0 || 0 || Student takes quiz, upon completion of quiz receives the following&lt;br /&gt;
|-&lt;br /&gt;
| MDL-12665 || 0 || 0 || error: Must Specify course id, shorname, or idnumber quiz attempts sometimes show zero despite correct answers&lt;br /&gt;
|-&lt;br /&gt;
| MDL-13073 || 0 || 0 || Regrading (really) messes up grades&lt;br /&gt;
|-&lt;br /&gt;
| MDL-13246 || 0 || 1 || Quiz does not save score. Shows 0/20&lt;br /&gt;
|-&lt;br /&gt;
| MDL-14873 || 0 || 2 || quiz answers submit freezes (occationally)&lt;br /&gt;
|-&lt;br /&gt;
| MDL-15305 || 1 || 0 || Quiz doesn&#039;t work after submit all and finish button is selected - get a &amp;quot;No quiz with id=0&amp;quot; or &amp;quot;No attempt with id=0&amp;quot; error message&lt;br /&gt;
|-&lt;br /&gt;
| MDL-16451 || 0 || 1 || Quiz scores 0 with secure window; Grades do not transfer&lt;br /&gt;
|-&lt;br /&gt;
| MDL-16490 || 0 || 1 || timed quiz generates bad 2nd attempt&lt;br /&gt;
|-&lt;br /&gt;
| MDL-16663 || 0 || 1 || errors and missing work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Many of these are intermittent and only affect some people. Sometimes bugs like this turn out to be the result of a corrupt table in MySQL. Still, we really should not be getting problems like this with a system that is sometimes relied on as much as the quiz is.)&lt;br /&gt;
&lt;br /&gt;
===Richness issues===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Key !! Votes !! Watchers !! Summary&lt;br /&gt;
|-&lt;br /&gt;
| MDL-1647 || 4 || 6 || Allowing negative marks for questions&lt;br /&gt;
|-&lt;br /&gt;
|| MDL-4860 || 0 || 0 || Questiontype giving hints&lt;br /&gt;
|-&lt;br /&gt;
| MDL-12821 || 0 || 1 || Essay quiz question redundant submit button&lt;br /&gt;
|-&lt;br /&gt;
| MDL-17894 || 0 || 0 || Support certainty/Confidence based marking&lt;br /&gt;
|-&lt;br /&gt;
| MDL-17895 || 0 || 0 || Allow question types to validate responses before grading&lt;br /&gt;
|-&lt;br /&gt;
| MDL-17896 || 0 || 0 || Question types like Opaque should not require nasty hacks in question_process_responses&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Issues I don&#039;t propose to fix with this change===&lt;br /&gt;
&lt;br /&gt;
... but which would become easier to fix as a result:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Key !! Votes !! Watchers !! Summary&lt;br /&gt;
|-&lt;br /&gt;
| MDL-3452 || 0 || 0 || Use saved answers when marking late submissions&lt;br /&gt;
|-&lt;br /&gt;
| MDL-4309 || 0 || 3 || Ability for late quizzes (with penalty)&lt;br /&gt;
|-&lt;br /&gt;
| MDL-15596 || 0 || 0 || Allow a question to be used more than once in an attempt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How this part of the quiz currently works==&lt;br /&gt;
&lt;br /&gt;
Before saying what I would like to change, I think it is best to summarise how the question engine currently works.&lt;br /&gt;
&lt;br /&gt;
===Database tables===&lt;br /&gt;
&lt;br /&gt;
There are three database tables that store data about students&#039; attempts at questions.&lt;br /&gt;
&lt;br /&gt;
====question_attempts====&lt;br /&gt;
&lt;br /&gt;
This table is basically used to generate unique ids for the other tables relating to question attempts, and allow one to link the data in those tables to the other parts of Moodle that use the question bank, for example from a quiz attempt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Column !! Type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| id || INT(10) NOT NULL AUTO INCREMENT || Unique id used to link attempt question data to other things, e.g. quiz_attempts.uniqueid&lt;br /&gt;
|-&lt;br /&gt;
| modulename || NOT NULL VARCHAR(20) || e.g. &#039;quiz&#039; the thing linked to.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====question_sessions====&lt;br /&gt;
&lt;br /&gt;
There is one row in this table for each question in an attempt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Column !! Type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| id || INT(10) NOT NULL AUTO INCREMENT || Unique id. Not used much.&lt;br /&gt;
|-&lt;br /&gt;
| attemptid || INT(10) NOT NULL REFERENCES question_attempts.id || Which attempt this data belongs to.&lt;br /&gt;
|-&lt;br /&gt;
| questionid || INT(10) NOT NULL REFERENCES question.id || Which question this is the attempt data for.&lt;br /&gt;
|-&lt;br /&gt;
| newest || INT(10) NOT NULL REFERENCES question_states.id || The latest state of this question in this attempt.&lt;br /&gt;
|-&lt;br /&gt;
| newgraded || INT(10) NOT NULL REFERENCES question_states.id || The latest graded state of this question in this attempt.&lt;br /&gt;
|-&lt;br /&gt;
| sumpenalty || NUMBER(12,7) NOT NULL || Used for adaptive mode scoring.&lt;br /&gt;
|-&lt;br /&gt;
| manualcomment || TEXT || A teacher&#039;s manual comment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(attemptid, questionid) is an alternate key, but that makes MDL-15596 impossible to satisfy.&lt;br /&gt;
&lt;br /&gt;
====question_states====&lt;br /&gt;
&lt;br /&gt;
There are several rows here for each question session, recording the different states that the question went through as the student attempted it. For example open, save, submit, manual_grade.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Column !! Type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| id || INT(10) NOT NULL AUTO INCREMENT || Unique id. Not used much.&lt;br /&gt;
|-&lt;br /&gt;
| attempt || INT(10) NOT NULL REFERENCES question_attempts.id || Which attempt this data belongs to.&lt;br /&gt;
|-&lt;br /&gt;
| question || INT(10) NOT NULL REFERENCES question.id || Which question this is the attempt data for.&lt;br /&gt;
|-&lt;br /&gt;
| seq_number || INT(10) NOT NULL || Numbers the states within this question attempt.&lt;br /&gt;
|-&lt;br /&gt;
| answer || TEXT NOT NULL || A representation of the student&#039;s response.&lt;br /&gt;
|-&lt;br /&gt;
| timestamp || INT(10) NOT NULL || Timestamp of the event that lead to this state.&lt;br /&gt;
|-&lt;br /&gt;
| event || INT(4) NOT NULL || The type of state this is. One of the QUESTION_EVENTXXX constants from the top of questionlib.php.&lt;br /&gt;
|-&lt;br /&gt;
| grade || NUMBER(12,7) NOT NULL || The grade that had been earned by this point, after penalties had been taken into account.&lt;br /&gt;
|-&lt;br /&gt;
| raw_grade || NUMBER(12,7) NOT NULL || The grade that had been earned by this point, before penalties had been taken into account.&lt;br /&gt;
|-&lt;br /&gt;
| penalty || NUMBER(12,7) NOT NULL || Used by the adaptive mode scoring.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(attempt, question, seq_number) is an alternate key (see the remark in the previous sub-section).&lt;br /&gt;
&lt;br /&gt;
The student&#039;s response is stored in the answer column. It is up to each question type to convert the data received from the student into a single string in whatever format seems best, even though the response come from a HTTP post, and so is just an array of key =&amp;gt; value pairs, which could easily be stored directly in the database without each question type having to write some nasty string concatenation/parsing code. &lt;br /&gt;
&lt;br /&gt;
===Code flow===&lt;br /&gt;
&lt;br /&gt;
A part of Moodle, for example the Quiz module, wishes to use questions. First, mod/quiz/attempt.php will render a page of questions by calling&lt;br /&gt;
# load_questions,&lt;br /&gt;
# load_question_states, and&lt;br /&gt;
# print_question one or more times.&lt;br /&gt;
All three of these functions delegte part of the work to the appropriate question type.&lt;br /&gt;
&lt;br /&gt;
This outputs each question in its current state. Any form controls that are output have a name=&amp;quot;&amp;quot; attribute that is a combination of a prefix determined by the question engine (e.q. q123_), and a main part determined by the question type.&lt;br /&gt;
&lt;br /&gt;
When this page is submitted, the response goes to whichever script the question using code designate. In the case of the quiz it is mod/quiz/processattemptattempt.php. This calls&lt;br /&gt;
# load_questions,&lt;br /&gt;
# load_question_states,&lt;br /&gt;
# question_extract_responses,&lt;br /&gt;
# question_process_responses, and&lt;br /&gt;
# save_question_state.&lt;br /&gt;
# In the case of the quiz, it then saves the quiz_attempts row, which has been updated by some of the above methods.&lt;br /&gt;
Again, steps 1., 2., 4. and 5. delegate part of the work to the question types.&lt;br /&gt;
&lt;br /&gt;
Processing manual grading by the teacher is similar. The sequece of calls is:&lt;br /&gt;
# load_questions,&lt;br /&gt;
# load_question_states,&lt;br /&gt;
# question_process_comment, and&lt;br /&gt;
# save_question_state.&lt;br /&gt;
# In the case of the quiz, it then saves the quiz_attempts row, which has been updated by some of the above methods.&lt;br /&gt;
&lt;br /&gt;
One thing to note here is that a lot of processing is done before any data can be stored in the database.&lt;br /&gt;
&lt;br /&gt;
Another point to note is that the question type classes are singleton classes. That is, only one instance of each question type is created. All the methods used by the question engine are passed a $question and possibly a $state object to tell the quetion type which question instance they should be processing. This is good design from several points of view. It works well with batch database queries (efficiency) and the question types to not have state, which might become inconsistent (robustness). However, there is a slight price here, since very rich question types cannot cache state in memory, so they may have to repeat processing (richness &amp;amp;lt;-&amp;gt; efficiency trade off) however, they can store state in the database since they can put whatever they like in the question_states.answer field.&lt;br /&gt;
&lt;br /&gt;
==Overview of the changes==&lt;br /&gt;
&lt;br /&gt;
===Clarifying question states===&lt;br /&gt;
&lt;br /&gt;
Althought there is a database table called question_states, the column there that stores the type of state is called event, and the values stored there are active verbs like open, save, grade. The question_process_responses function is written in terms of these actions too. One nasty part is that during the processing, the event type can be changed several times, before it is finally stored in the database as a state.&lt;br /&gt;
&lt;br /&gt;
I would like to clearly separate the concept of the current state that a question is in, and the various actions that lead to a change of state.&lt;br /&gt;
&lt;br /&gt;
(+Correctness, +Richness).&lt;br /&gt;
&lt;br /&gt;
===Question interaction models===&lt;br /&gt;
&lt;br /&gt;
At the moment, the various sequences of states that a question can move through is controlled by a combination of the compare_responses and grade_responses methods of the question types, and hard-coded logic in the question_process_responses function.&lt;br /&gt;
&lt;br /&gt;
I would like to separate out the control of how a question moves through different states, into what I will call question interaction models. Currently there are two models supported by Moodle, and the choice is controlled by the adaptive mode setting in the quiz.&lt;br /&gt;
&lt;br /&gt;
There is the deferred feedback model, which is what you get when adaptive mode is off. The student enters an answer to each question which is saved. Then, when they submit the quiz attempt, all the questions are graded. Then all the marks and feedback are available for review.&lt;br /&gt;
&lt;br /&gt;
Alternatively, there is the adaptive model, where the student can submit one question at a time, get some feedback, and if they were wrong, immediately change their answer, with a reduced grade if they get it right the second time.&lt;br /&gt;
&lt;br /&gt;
Currently, manually graded question use the same adaptive, or non-adaptive, models, with some slight changes. However, this does not work very well, as the number of essay question correctness bugs listed above shows. Really, manual grading should be treated as a separate interaction model.&lt;br /&gt;
&lt;br /&gt;
So, what exactly does the interaction model control? Given the current state of the question, it limits the range of actions that are possible. For example, in adaptive mode, there is a submit button next to each question. In non-adaptive mode, the only option is to enter an answer and have it saved, until the submit all and finish button is pressed. That is, it rougly replaces question_extract_responses, question_process_responses, question_process_comment and save_question_state in the current code.&lt;br /&gt;
&lt;br /&gt;
(+++Richness, ++Correctness, +Robustness)&lt;br /&gt;
&lt;br /&gt;
===Simplified API for question types===&lt;br /&gt;
&lt;br /&gt;
Although I said above &amp;quot;The student enters an answer to each question which is saved. Then when they submit the quiz attempt, all the questions are graded.&amp;quot; In fact, that was a lie. Whenever a response is saved, the grade_responses method of the question type is called, even in the state is only being saved. This is confusing, to say the least, and very bad for performance in the case of a question type like JUnit (in contrib) which takes code submitted by the student, and compiles it in order to grade it.&lt;br /&gt;
&lt;br /&gt;
So some of the API will only change to the extent that certian funcitons will in future only be called when one would expect them to be. I think this can be done in a backwards-compatible way.&lt;br /&gt;
&lt;br /&gt;
Another change will be that, at the moment, question types have to implement tricky load/save_question_state methods that, basically, have to unserialise/serialise some of the state data in a custom way, so it can be stored in the answer column. This is silly design, and leads to extra, unnecessary database queries. By changing the database structure so that the students&#039; responses are stored directly in a new table (after all, an HTTP POST request is really just an array of string key-value pairs, and there is a natural way to store that in a database) it should be posiblity to eliminate the need for these methods.&lt;br /&gt;
&lt;br /&gt;
(+Richness, +Correctness, +Efficiency)&lt;br /&gt;
&lt;br /&gt;
===Changed database structure===&lt;br /&gt;
&lt;br /&gt;
At the moment, the some parts of the question_sessions and question_states tables and their relations are not normalised. This is a technical term for describing database designs. Basically, if the tables are normalised, then each &#039;fact&#039; is stored in exactly one place. This makes it much less likely that the database can get into an inconsistent state. Changing to a normalised structure should therefore increase robustness.&lt;br /&gt;
&lt;br /&gt;
In addition, I wish to change the tables, so the the responses recieved from the student are stored in a much more &#039;raw&#039; form. That will mean that the responses can be saved much earlier in the sequence of processing, which will again increase robustness. It will also allow the sequence of responses from the student to be replayed more easily, making it easier to continue after a server crash, to regrade, and to write automatic test scripts.&lt;br /&gt;
&lt;br /&gt;
(+++Robustness, +Correctness)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Brief digression: who controls the model, the quiz or the question?==&lt;br /&gt;
&lt;br /&gt;
Before proceeding to decribe in detail the design for how I will implement these changes, I want to digress and discuss one of the design decisions that it took a long time for me to resolve.&lt;br /&gt;
&lt;br /&gt;
The question is, is the interaction model a property of the question, or the quiz?&lt;br /&gt;
&lt;br /&gt;
At the moment, there is a setting in the quiz that lets you change all the questions in the quiz from adaptive mode to non-adptive mode at the flick of a switch. Or, at least, it allows you to re-use the same questions in both adaptive and non-adaptive mode. This suggest that the interaction model is a property of the quiz.&lt;br /&gt;
&lt;br /&gt;
On the other hand, suppose that you wanted to introduce the feature that, in adaptive mode, the student gets different amounts of feedback after each try at getting the question right. For example, the first time they get it wrong the only get a brief hint. If they are wrong the second time they get a more detailed comment, and so on. In order to do this, you need more data (the various hints) in order to define an adaptive question that is irrelevant to a non-adaptive question. Also, certain question types (e.g. Opaque, from contrib) have to, of necessity, ignore the adaptive, non-adaptive setting. And I suggested above that, manually graded question types like Essay should really be considered to have a separate interaction model. This suggests that the interaction model is a properly of the individual question. (Although usability considerations suggest that a single quiz should probably be constructed from questions with similar interaction models.)&lt;br /&gt;
&lt;br /&gt;
I evenutally concluded that both answers are right, and more importantly, worked out how a question engine could allow that to happen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
{{Work in progress}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TODO finish the rest of this document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Detailed design==&lt;br /&gt;
&lt;br /&gt;
===New database structure===&lt;br /&gt;
&lt;br /&gt;
====question_attempt_batches====&lt;br /&gt;
&lt;br /&gt;
This is just a rename of question_attempts.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Column !! Type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| id || INT(10) NOT NULL AUTO INCREMENT || Unique id used to link attempt question data to other things, e.g. quiz_attempts.uniqueid and question_attempts.batchid&lt;br /&gt;
|-&lt;br /&gt;
| modulename || NOT NULL VARCHAR(255) || e.g. &#039;quiz&#039; the thing linked to.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====question_attempts====&lt;br /&gt;
&lt;br /&gt;
This replaces question_sessions. Question sessions is not a great name because session has other connotations in the context of web applications. I think it is right to use the question_attempt name here, because this tables has one row for each attempt at each question.&lt;br /&gt;
&lt;br /&gt;
There is now no requirement for (attemptid, questionid) to be unique.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Column !! Type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| id || INT(10) NOT NULL AUTO INCREMENT || Unique id. Linked to from question_states.attemptid.&lt;br /&gt;
|-&lt;br /&gt;
| batchid || INT(10) NOT NULL REFERENCES question_batch.id || Which attempt this data belongs to.&lt;br /&gt;
|-&lt;br /&gt;
| interactionmodel || VARCHAR(32) NOT NULL || The question interaction model that is managing this question attempt.&lt;br /&gt;
|-&lt;br /&gt;
| questionid || INT(10) NOT NULL REFERENCES question.id || Which question this is the attempt data for.&lt;br /&gt;
|-&lt;br /&gt;
| maxgrade || NUMBER(12,7) NOT NULL || The grade this question is marked out of in this attempt.&lt;br /&gt;
|-&lt;br /&gt;
| responsesummary || TEXT || This is a textual summary of the student&#039;s response (basically what you would expect to in the Quiz responses report).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Need to store maxgrade becuase it could come from anywhere, (e.g. quiz_question_instances, question.defaultgrade, ...). We need it available at various times (e.g. when displaying a question) so it is better to store it explicitly here.&lt;br /&gt;
&lt;br /&gt;
====question_states====&lt;br /&gt;
&lt;br /&gt;
Same purpose as the old question_states table, but simplified.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Column !! Type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| id || INT(10) NOT NULL AUTO INCREMENT || Unique id. Linked to from question_states.stateid.&lt;br /&gt;
|-&lt;br /&gt;
| attemptid || INT(10) NOT NULL REFERENCES question_attempts.id || Which question attempt this data belongs to.&lt;br /&gt;
|-&lt;br /&gt;
| timestamp || INT(10) NOT NULL || Timestamp of the event that lead to this state.&lt;br /&gt;
|-&lt;br /&gt;
| state || INT(4) NOT NULL || The type of state this is. One of the QUESTION_STATEXXX constants from the top of questionlib.php.&lt;br /&gt;
|-&lt;br /&gt;
| grade || NUMBER(12,7) || The grade the student has earned for this question, on a scale of 0..1. Needs to be multiplied by question_attempts.maxgrade to get the true grade.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* We store grade unscaled (as a value between 0.0 and 1.0) because that makes regrading easier. (You might think that you can adjust scaled grades later, and that is almost true, but if maxgrade used to be 0, then you can&#039;t change it to anything else.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====question_responses====&lt;br /&gt;
&lt;br /&gt;
This stores the data submitted by the student (a list of name =&amp;gt; value pairs) that lead to the state stateid. This replaces the old question_states.answer.&lt;br /&gt;
&lt;br /&gt;
There will be a convention that ordinary names like &#039;myvariable&#039; should be used for submitted data belonging to the question type; names prefixed with a !, like &#039;!myaction&#039; should be used for data belonging to the question interaction model; and names prefixed with a _ can be used for internal things, for example, the random question might store &#039;_realquestionid&#039; attached to the &#039;open&#039; state, or a question type that does a lot of expensive processing might store a &#039;_cachedresult&#039; value, so the expensive calculation does not need to be repeated when reviewing the attempt.&lt;br /&gt;
&lt;br /&gt;
Note that, the old question_states.answer field used to save a lot of repetitive information from one state to the next, for example the other questionid for random questions, and the choices order for multiple-choice questions with shuffle-answers on. In future, this sort of repetitive information will not be saved. Instead, during question processing, the question types will be given access to the full state history.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
! Column !! Type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| id || INT(10) NOT NULL AUTO INCREMENT || Unique id. Not used much.&lt;br /&gt;
|-&lt;br /&gt;
| stateid || INT(10) NOT NULL REFERENCES question_states.id || Which state the submission of this data lead to.&lt;br /&gt;
|-&lt;br /&gt;
| name || VARCHAR(20) NOT NULL || The name of the parameter received from the student.&lt;br /&gt;
|-&lt;br /&gt;
| value || TEXT || The value of the parameter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Upgrading the database===&lt;br /&gt;
&lt;br /&gt;
===New list of states that a question may be in===&lt;br /&gt;
&lt;br /&gt;
===Interaction models to implement initially===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I intend to draw state diagrams for each of these in due course.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note that the main blocker to supporting negative scoring in the quiz is that it is not compatible with adaptive mode. So separating the models will allow MDL-1647 to finally be resolved.&lt;br /&gt;
&lt;br /&gt;
====Deferred feedback====&lt;br /&gt;
&lt;br /&gt;
This is how the quiz currently work when adaptive mode is off. The student enters a response to each question, then does Submit all and finish at the end of their attempt. Only then do they get feedback and/or grades, depending on the review settings.&lt;br /&gt;
&lt;br /&gt;
====Legacy adaptive mode====&lt;br /&gt;
&lt;br /&gt;
This re-implements how adaptive mode currently works, so old attempts can still be reviewed. In future, adaptive mode will be replaced with ...&lt;br /&gt;
&lt;br /&gt;
====Interactive====&lt;br /&gt;
&lt;br /&gt;
This will replace adaptive mode. This is the model that has been used successfully for several years in the OU&#039;s OpenMark system. The OU has also  modified Moodle to work like this, but because of the way the quiz core currently works, I was not happy just merging the OU changes into Moodle core. In a sense, this whole document grew out of my thoughts about how to implement the OU changes in Moodle core properly.&lt;br /&gt;
&lt;br /&gt;
====Manually graded====&lt;br /&gt;
&lt;br /&gt;
This is a new mode, specifically tailored to manually graded questions. Should make it possible to fix a lot of the outstanding manual grading correctness bugs above.&lt;br /&gt;
&lt;br /&gt;
====Each attempt builds on last====&lt;br /&gt;
&lt;br /&gt;
This is for the benefit of the quiz feature of the same name. It is just like deferred feedback model, but subsequent attempts are seeded with the student&#039;s last response from the previous attempt. I think it leads to slightly cleaner code to do this as a separate interaction model. For example, it does not make any sense to use each attempt builds on last in combination with adaptive mode, although Moodle currently lets you do that.&lt;br /&gt;
&lt;br /&gt;
====Immediate feedback====&lt;br /&gt;
&lt;br /&gt;
This would be like cross between deferred feedback an interactive. Each question would have a submit button beside it, like in interactive mode, so the student can submit it immediately and get the feedback while they still remember their thought processes while answering the question. However, unlike the interactive model, they would not then be allowed to change their answer.&lt;br /&gt;
&lt;br /&gt;
====Certainty based marking with deferred feedback====&lt;br /&gt;
&lt;br /&gt;
This takes any question that can use the deferred feedback model, and adds three radio buttons to the UI (Higher, medium, lower) for the student to use to indicate how certain they are that their answer is correct. Their choice is used to alter the grade the receive for the question.&lt;br /&gt;
&lt;br /&gt;
====Certainty based marking with immediate feedback====&lt;br /&gt;
&lt;br /&gt;
This is like immediate feedback mode with the certainty based marking feature.&lt;br /&gt;
&lt;br /&gt;
===Changes to the question type API===&lt;br /&gt;
&lt;br /&gt;
Can this be backwards compatible?&lt;br /&gt;
&lt;br /&gt;
===The interaction model API===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Proposed robustness and performance testing system==&lt;br /&gt;
&lt;br /&gt;
A major change to the question engine should really only be contemplated in combination with the introduction of a test harness that makes it easy to run correctness, performance and reliablitity tests.&lt;br /&gt;
&lt;br /&gt;
One adavntage of the way data will be stored in the new system is that everything originally submitted by the user will be stored in the database in a format very close to the one in which it was originally received by the web server. Therefore, it should be easy to write a script that replays saved quiz attempts. This is the basis of a test harness. I will create such a test script as part of this work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time estimates==&lt;br /&gt;
&lt;br /&gt;
* Completing the above design: a few days.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===Time scales===&lt;br /&gt;
&lt;br /&gt;
It seems highly unlikely that this could be done before Moodle 2.0 branches. Now that I have worked out the details of this proposal, I would really like to do it as soon as possible, so that would be for Moodle 2.1. However, that is dependant on my employer (either moodle.com or The Open University). This change is sufficiently big that I would not want to undertake it on my own time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
This change will cost about X months development. In exchange, the question engine will be more reliable, and will support a richer ranged of teaching and learning activities, through extending the range of interaction models supported, and maing it easier to write new question types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* The place to discuss this is the [http://moodle.org/mod/forum/view.php?f=121 quiz forum].&lt;br /&gt;
*There is also a [http://moodle.org/mod/forum/discuss.php?d=114527#p502692 Thread in Lesson forum].&lt;br /&gt;
* See the lists of [[#Why_things_need_to_change|related tracker issues]] above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Quiz]]&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Feedback_link_for_all_elements&amp;diff=7969</id>
		<title>Feedback link for all elements</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Feedback_link_for_all_elements&amp;diff=7969"/>
		<updated>2009-01-28T19:06:31Z</updated>

		<summary type="html">&lt;p&gt;Jeffjeff: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a work in progress when I find the time. Sometimes there is obvious repetition that I haven&#039;t cleaned up yet.  &lt;br /&gt;
&lt;br /&gt;
The web is more and more social in that the users/readers of content are more and more invited to influence the content. This is especially true for support pages that are for helping ie. [http://documents.google.com/support/spreadsheets/bin/answer.py?answer=87589 Google &amp;quot;was this helpful?&amp;quot;];  [http://office.microsoft.com/en-us/powerpoint/HP030713791033.aspx?pid=CH063500491033 Microsofts ditto].&lt;br /&gt;
&lt;br /&gt;
Therefore it seems very important that this feature is lacking in Moodle, especially considering its social constructivistic underpinnings. It seems natural that this should be implemented, indeed almost a glaring miss.&lt;br /&gt;
&lt;br /&gt;
There is a form for collecting feedback ([https://docs.moodle.org/en/Development:Feedback  documentation] [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=95 download]) in Moodle which can be used for making course evaluations etc. The problem is that it is difficult to get people to spontaneously report suggestions, criticisms etc at all. If they have to find and go to another page, formulate a description of where they came from and what they want, felt etc, there are few that will do it, and the quality of the feedback will often lack crucial details so it may be useless. &lt;br /&gt;
&lt;br /&gt;
Collecting feedback in a general form at the end of a course has many lacks. The students are poorly motivated (they won&#039;t be getting any use of changes that are made). Many annoyances, suggestions will have been forgotten. Those that are remembered will be difficult to describe accurately.&lt;br /&gt;
&lt;br /&gt;
One way of nicely collecting feedback for an HTML page is to use a forum page as if it were an ordinary webpage. Then, after the content you put into the top, there is a forum at the bottom which can receive feedback and can have some soc. const. advantages over my proposal. But this wouldn&#039;t work for other kinds of pages/elements.&lt;br /&gt;
&lt;br /&gt;
Having some kind of general course feedback early in a course is a good idea and can, of course, meet the first problem (that the pupil&#039;s feedback usually doesn&#039;t effect the on-going course).&lt;br /&gt;
&lt;br /&gt;
=Which Elements?=&lt;br /&gt;
==Page==&lt;br /&gt;
The properties that would be good to include:&lt;br /&gt;
*No response&lt;br /&gt;
*General rating&lt;br /&gt;
*Lacking: &lt;br /&gt;
**Linkage&lt;br /&gt;
**Content&lt;br /&gt;
**Language&lt;br /&gt;
***grammar&lt;br /&gt;
***spelling&lt;br /&gt;
*Suggestions&lt;br /&gt;
* Automatically (javascript) generated info about the browser, operating system, screen and window size, plugin availability. Often the user wouldn&#039;t even know these things, and they could be critically helpful for the page editor.&lt;br /&gt;
&lt;br /&gt;
Here is an example of [http://tupo.biz/kurser/gemensam/kommunikation/PageFeedbackFormExpand.htm a page feedback form]. The form has many of the things that I&#039;d like to include. I would be like to have a small page with expandable fields connected to checked types. Only the first two checks are implemented in this. It does have a JavaScript that in the background includes auto-generated information in the form submission.&lt;br /&gt;
&lt;br /&gt;
==Quiz questions (even lesson and feedback and questionnaire?)==&lt;br /&gt;
This is very important. If I had to chose between Page  and Question, I&#039;d chose question feedback.&lt;br /&gt;
&lt;br /&gt;
Since evaluation questions are very important to the learners, they are very motivated to see that they are clear.&lt;br /&gt;
&lt;br /&gt;
This can also be a way to make students an active part of the quiz creation/improvement process. Dennis Daniels has been trying to [http://video.google.com/videoplay?docid=5678154150724088700&amp;amp;q=dennis+daniels+moodle+quiz&amp;amp;total=35&amp;amp;start=0&amp;amp;num=10&amp;amp;so=0&amp;amp;type=search&amp;amp;plindex=7 push for this possibility]. He calls it &amp;quot;question challenge&amp;quot;. A possible use scenario: The teacher quickly prepares a quiz with minimal answer alternatives and makes it available to the fastest students. These are encouraged to add more answer alternatives with motivations, and react to the existing formulation, grading and feedback. The teacher reviews their feedback and easily incorporates the useful suggestions into the test before the main body of students try the quiz. &lt;br /&gt;
&lt;br /&gt;
There are many possible parts that can be specific to the feedback for questions.&lt;br /&gt;
&lt;br /&gt;
Is the question itself clear? This might be able to be covered by the same fields that are of interest for general feedback for pages.&lt;br /&gt;
&lt;br /&gt;
Is my answer considered wrong though I feel it is right? It would be good to include a &amp;quot;certainty&amp;quot; rating. Certainty Based Marking, CBM, is a very valuable form of quiz feedback. It would be good to think about it at the same time as other quiz feedback. It is often a 3-step scale.: C1 C2 C3 where 1 is quite uncertain and 3 is very certain. Many teachers would appreciate the ability to connect the certainty to the grading of the question. But even while the grading implementation has not been successfully made yet, it would be valuable feedback for the teacher. &amp;quot;Hmm a lot of students have this right, but almost all of them are very uncertain about it.&amp;quot; or &amp;quot;Hmm, this student was very certain about this incorrect answer.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Is the feedback I get for my answer: unclear, incorrect, possible to improve?&lt;br /&gt;
&lt;br /&gt;
Does the user have other answers that (s)he was tempted to try? Usually people make similar mistakes and this could be a valuable resource for giving better feedback to common mistakes and for creating good &amp;quot;distractors&amp;quot; for multiple choice questions.&lt;br /&gt;
&lt;br /&gt;
When a quiz editor receives feedback on a question it should be easy to use it to develop the question. Prepared fields may depend on the question type. &amp;quot;the answer I would have used&amp;quot;, &amp;quot;an answer I might have used&amp;quot;, &amp;quot;my motivation&amp;quot;. The first 2 could be used to make new answer alternatives. The last as foundation for feedback for that answer. There should be a field for explaining how the learner got the answer. This could be the basis for the feedback field for that answer, if the teacher should chose to include that answer.There should be a field for explaining how the learner got the answer. This could be the basis for the feedback field for that answer, if the teacher should chose to include that answer.&lt;br /&gt;
&lt;br /&gt;
===Question feedback form fields===&lt;br /&gt;
&lt;br /&gt;
  There are prepared fields below to help you formulate your&lt;br /&gt;
  feedback, but in case you feel like&lt;br /&gt;
  &amp;quot;&#039;&#039;I would rather just explain in my own words&#039;&#039;&amp;quot;: ...............&lt;br /&gt;
  ............................................................&lt;br /&gt;
  ............................................................&lt;br /&gt;
&lt;br /&gt;
  [_]question/[X]word in this question unclear&lt;br /&gt;
     (check on word-&amp;gt; expand to: which word: ____________  ) &lt;br /&gt;
   a)possible interpretation 1 __________________________&lt;br /&gt;
   b)possible interpretation(s) 2, ... _____________________________&lt;br /&gt;
&lt;br /&gt;
  [_]grade questionable, motivation: ______________________________  &lt;br /&gt;
    (this perspective maybe the teacher should be able to choose not to ask about)&lt;br /&gt;
&lt;br /&gt;
  answer feedback [_]wrong/[_]unclear (this would be for the answer that was active&lt;br /&gt;
     when the feedback button was pushed, and automatically included)&lt;br /&gt;
     What was wrong/unclear: ________________________________&lt;br /&gt;
     Suggested improvement: _________________________________&lt;br /&gt;
&lt;br /&gt;
  Other possible answers:&lt;br /&gt;
  [_]Best possible, [_]acceptable, [_]should get partial credit, [_]Not right but probable&lt;br /&gt;
   (if last two are checked expand to: Suggested credit [____]% )&lt;br /&gt;
   answer: ________________________________________________&lt;br /&gt;
   motivation: ____________________________________________&lt;br /&gt;
   (how one would get this answer.) &lt;br /&gt;
&lt;br /&gt;
  [_]More possible answers? (gives more fields like above)&lt;br /&gt;
    &lt;br /&gt;
Social bookmarking is important since what&#039;s good for the goose isn&#039;t always good for the gander! The grade goal of students varies and this can mean that a highly rated resource for one person could be useless for another. Therefore a rating should be able to be connected to information about the user. Anonymous (though visible for admin if breaking netiquette) ratings are better than none, though the value would be increased if complemented by some info like grade goal, special branch, language proficiency, disabilities, etc.&lt;br /&gt;
&lt;br /&gt;
=Who would the feedback go to?=&lt;br /&gt;
&lt;br /&gt;
There could be some parts of a Moodle distribution that are default set to collect feedback. The pages that are for administrators, teacher editors should be of interest to Moodle developers. Help pages should collect to the documenters. It should be possible to turn off these default settings if a site doesn&#039;t want to participate.&lt;br /&gt;
&lt;br /&gt;
The other parts could choose at different levels, admin, course developer, teacher, to invite feedback for specific courses, pages, questions and which recipients would get it.&lt;br /&gt;
&lt;br /&gt;
Another consideration is making feedback easier/possible for people using Moodle off line. There are many situations, especially in many places in developing countries, where Internet access is poor, slow or nonexistent. Moodle is still usable on LAN or even a single computer or on a USB memory stick that can be used on different computers, some on line some off line. It would be good if there were preparations made for saving up feedback for when coming on line or for exporting to a file that could be sent on a floppy, through a mobile phone etc to someone on line.&lt;br /&gt;
&lt;br /&gt;
==Some Examples==&lt;br /&gt;
&lt;br /&gt;
Developers have made a new version of some component in Moodle and are  really not sure about if it will be easily understood and function well. They can than choose to set a VERY Inviting feedback link. &amp;quot;This page is new and we would really like suggestions about how to make it better&amp;quot;&lt;br /&gt;
The feedback choice will be default in Moodle packages and the developers will get the feedback from any site that doesn&#039;t turn it off (and has a user giving feedback). The form should contain all the fields, as many as possible automatically, that would be needed to interface with the Tracker: first for search, then for entering a new bug/feature. &lt;br /&gt;
&lt;br /&gt;
A school administrator would like to collect any views that anyone using the site has about pages and turns on a more general feedback invitation: &amp;quot;If this page doesn&#039;t meet your needs, please tell us!&amp;quot; (S)he choses to have the feedback go to (her)him and to the course teacher in charge of the course containing the page. Some administrators have wished for a channel for getting info, questions, suggestions even from non-registered visitors (usually on the front page but perhaps even in other guest open courses). Feedback from non-registered visitors should probably include a reCaptcha antispam protection. &lt;br /&gt;
&lt;br /&gt;
A teacher could want to have students rate pages to be able to give other students a Social bookmarking guide especially if there is a lot of varied material that everybody isn&#039;t expected to go through. Or compare the webpages with the textbook. [the book was better][Both were needed][the webpage better][Neither helped much]. This particular type of feedback would be good to be able to display for the students, perhaps tagged according to grade goals, previous experience, math love/hate, etc.&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/browse/MDL-18067 The Moodle tracker issue for this suggestion.]&lt;br /&gt;
&lt;br /&gt;
[http://blog.pbwiki.com/2008/03/28/the-foolproof-5-step-way-to-answer-tough-questions/ A blog post about answering tough questions] includes &amp;quot;Check afterwards to see if the questioner feels satisfied.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Jeffjeff</name></author>
	</entry>
</feed>