Webrelaunch 2020

Fragebogen im CMS

Im CMS ist es möglich kleine Fragebögen zur Selbstkontrolle der Studierenden anzubieten. Hier ist beschrieben, wie man solche Fragebögen erstellt. Eine kleine Warnung vorweg: Diese Lösung ist dafür gedacht, dass wir Erfahrung sammeln können, und die Syntax nicht sehr einfach: Erst wenn der Bedarf und Nutzen besser bekannt ist, können komfortablere Lösungen angedacht werden. Fragen und Verbesserungsvorschläge zum System können gerne an Prof. Dr. Sebastian Ritterbusch gerichtet werden.

Diese Anleitung besteht den folgenden Teilen:

  1. Das fertige Formular
  2. Der illustrierte Quelltext
  3. Der Quelltext am Stück
  4. Formulare mit Zeitlimit
  5. Randomisierung
  6. Hilfen zum Lösen der Aufgaben
  7. Abschließende Hinweise...
  8. Beispiele

So sieht es aus



A1) Gegeben sei die Funktion f(x)=x^2.

Wählen Sie die korrekten Aussagen aus:
a) f(2)=4
b) f(2)\not=f(-2)
c) f(x)=\frac{x}2\,f'(x)

A2) Ordnen Sie Groß- und Kleinbuchstaben zu:

\gammap
P
\Gamma

A3) Der Aufgabentext...

Welche Antworten hätten Sie gerne?
a) Richtige Antwort
b) Falsche Antwort
c) Richtige Antwort ist 17:


Illustriertes Beispiel

Jedes Formular muss mit dem Link zum Auswertungs-Skript starten:

<html><form action="http://www.mathematik.uni-karlsruhe.de/user/ma2ki/auswertung.php" method="post"></html>

Dann folgen globale Angaben, wie die Anzahl der Aufgaben in diesem Formular: (Hier könnten auch Text oder Links notiert werden, die auf der Auswertung erscheinen. Vorschläge sind erwünscht.) Wir haben drei Aufgaben in diesem Beispiel.

<html><input type="hidden" name="aufgaben" value="3" /></html>

Nun folgen die Aufgaben, am Besten bezeichnet als Aufgabe n) oder An). Hier der Text der ersten Aufgabe:

'''A1)''' Gegeben sei die Funktion <math>f(x)=x^2</math>.
:Wählen Sie die korrekten Aussagen aus:

Die einzelnen Lösungsmöglichkeiten werden dann aufgeführt, für die Eingabefelder kann man am besten den Typ checkbox benutzen, aber auch andere Typen sind möglich. Wichtig ist, dass im name= der zur Aufgabe gehörende Bezeichner aufgeführt wird, hier A1, und im value= der Bezeichner dieser Lösungm hier a, b und c. Diese erscheinen dann auch in der Auswertung:

::'''a)''' <math>f(2)=4</math> <html><input type="checkbox" name="A1[]" value="a" /></html>
::'''b)''' <math>f(2)\not=f(-2)</math> <html><input type="checkbox" name="A1[]" value="b" /></html>
::'''c)''' <math>f(x)=\frac{x}2\,f'(x)</math> <html><input type="checkbox" name="A1[]" value="c" /></html>

Anschließend wird die Lösung angegeben, bezüglich der die Auswertung dann bewertet:

<html><input type="hidden" name="L1" value="a,c"></html>

In der zweiten Aufgabe sind die Auswahlmöglichkeiten nun in einer Tabelle angeordnet, natürlich könnte man dies auch mit dem Aufgabentext machen. Jetzt wird in den checkbox der Bezeichner A2 verwendet, auch sieht man hier, dass die value sprechende Bezeichnungen haben können und sehr frei sind, die dürfen nur kein "Komma" beinhalten. Hauptsache man versteht damit die Auswahl in der Auswertung.

'''A2)''' Ordnen Sie Groß- und Kleinbuchstaben zu:
|| ||<math>\gamma</math>||p||
||P||<html><input type="checkbox" name="A2[]" value="Zeile1Spalte1" /></html>||<html><input type="checkbox" name="A2[]" value="Zeile1Spalte2" /></html>||
||<math>\Gamma</math>||<html><input type="checkbox" name="A2[]" value="Zeile2Spalte1" /></html>||<html><input type="checkbox" name="A2[]" value="Zeile2Spalte2" /></html>||
<html><input type="hidden" name="L2" value="Zeile1Spalte2,Zeile2Spalte1" /></html>

Im dritten Beispiel wird ein Eingabefeld, also type="input", verwendet. Auch hier wird name="A3" benutzt, man sollte aber auch mit size die Größe des Eingabefelds angeben. Die Antworten muss man eindeutig halten, also am Besten nur ganzzahlig und ebenso sind Kommata unmöglich richtig.

'''A3)''' Der Aufgabentext...
:Welche Antworten hätten Sie gerne?
::'''a)''' Richtige Antwort <html><input type="checkbox" name="A3[]" value="a" /></html>
::'''b)''' Falsche Antwort <html><input type="checkbox" name="A3[]" value="b" /></html>
::'''c)''' Richtige Antwort ist 17: <html><input type="input" size="4" name="A3[]" /></html>
<html><input type="hidden" name="L3" value="a,17" /></html>

Abgeschlossen wird das Formular mit dem Button zur Überprüfung und dem abschliessenden </form>-tag.

<html><input type="submit" value=" Überprüfen " /></form></html>

Beispiel ohne Kommentare

Diesen Code kann man direkt in eine freie Seite im CMS kopieren, um daran zu experimentieren.

<html><form action="http://www.mathematik.uni-karlsruhe.de/user/ma2ki/auswertung.php" method="post"></html>
<html><input type="hidden" name="aufgaben" value="3" /></html>
'''A1)''' Gegeben sei die Funktion <math>f(x)=x^2</math>.
:Wählen Sie die korrekten Aussagen aus:
::'''a)''' <math>f(2)=4</math> <html><input type="checkbox" name="A1[]" value="a" /></html>
::'''b)''' <math>f(2)\not=f(-2)</math> <html><input type="checkbox" name="A1[]" value="b" /></html>
::'''c)''' <math>f(x)=\frac{x}2\,f'(x)</math> <html><input type="checkbox" name="A1[]" value="c" /></html>
<html><input type="hidden" name="L1" value="a,c" /></html>

'''A2)''' Ordnen Sie Groß- und Kleinbuchstaben zu:
|| ||<math>\gamma</math>||p||
||P||<html><input type="checkbox" name="A2[]" value="Zeile1Spalte1" /></html>||<html><input type="checkbox" name="A2[]" value="Zeile1Spalte2" /></html>||
||<math>\Gamma</math>||<html><input type="checkbox" name="A2[]" value="Zeile2Spalte1" /></html>||<html><input type="checkbox" name="A2[]" value="Zeile2Spalte2" /></html>||
<html><input type="hidden" name="L2" value="Zeile1Spalte2,Zeile2Spalte1" /></html>

'''A3)''' Der Aufgabentext...
:Welche Antworten hätten Sie gerne?
::'''a)''' Richtige Antwort <html><input type="checkbox" name="A3[]" value="a" /></html>
::'''b)''' Falsche Antwort <html><input type="checkbox" name="A3[]" value="b" /></html>
::'''c)''' Richtige Antwort ist 17: <html><input type="input" size="4" name="A3[]" /></html>
<html><input type="hidden" name="L3" value="a,17" /></html>
<html><input type="submit" value=" Überprüfen " /></form></html>

Zeitlimit

Man kann mit Hilfe von Javascript-Funktionen ein Zeitlimit setzen- es gibt zwei Funktionen: Für eine Meldung nach einer bestimmten Zeit (in Millisekunden) fügt man folgende Zeile ein:

<html><script type="text/javascript">window.setTimeout("alert('Sie bearbeiten den Test seit 10 Minuten.')",600000);</script></html>

Diese Zeile würde nach 10 Minuten (also 600'000 ms) ein Informationsfenster mit dem obigen Text ausgeben. Solche Zeilen können mehrfach angegeben werden, auch um z.B. das Ende des Tests anzukündigen.

Es ist auch möglich einen Test automatisch auswerten zu lassen, dazu fügt man folgende Zeile ein:

<html><script type="text/javascript">window.setTimeout("document.forms[0].submit()",1200000);</script></html>

Hier wird das erste Formular (deswegen die 0 bei forms) nach 20 Minuten (also 1'200'000 ms) automatisch zur Auswertung geschickt. Selbstverständlich macht die automatische Auswertung nur Sinn, wenn nur ein Formular auf einer Seite ist, und jeder kann durch Neuladen der Seite die Zeit zurücksetzen, aber man kann so den Test ein wenig realistischer gestalten.

Ist gewünscht, dass ein Formular nicht vor Ablauf einer gewissen Zeit abgefragt werden kann, so ist dies durch diese Zeile unter dem Formular möglich:

<html><script type="text/javascript">function submitable(str){var i,t=document.getElementsByTagName("input");for(i=0;i<t.length;i++)if(t[i].type=="submit")t[i].disabled=str;}
submitable("disabled");window.setTimeout("submitable('')",60000);</script></html>

Hier werden die Auswertebuttons nach dem Laden deaktiviert und nach 60 Sekunden (60'000 ms) wieder aktiviert.

Randomisierung

Mit Hilfe des folgenden Codes können die Zeilen von Tabellen vertauscht werden, damit die Antwortreihenfolgen nicht immer gleich bleiben. Genauer werden nur alle Zeilen ab der zweiten Zeile randomisiert damit die Titelzeile unberührt bleibt. Es werden alle voranstehenden Tabellen verwürfelt, d.h. diese Zeile sollte unter der Zeile für den Überprüfen-Button stehen.

<html><script type="text/javascript">var i,j,t=document.getElementsByTagName("table");for(i=0;i<t.length;i++){var r=t[i].rows;var p=r[0].parentNode,l=r.length-1;for(j=0;j<4;j++)p.insertBefore(r[Math.floor(Math.random()*l)+1],r[Math.floor(Math.random()*l)+1]);}</script></html>

Hier eine Beispiel-Tabelle zur Demonstration:

abcd
f^{-1}=
g^{-1}=
h^{-1}=
p^{-1}=

Hier klicken zum Verwürfeln der Tabelle!

Tipps

Um den Lerneffekt zu erhöhen können kleine Hilfen angegeben werden: Zum einen kann auf Informationen anderer Seiten verlinkt werden, wie dies auch sonst möglich ist, eine spezielle Möglichkeit sind aber kleine Infofenster, die folgendermaßen realisiert werden:

[javascript:alert('Diese Informationsfenster können wichtige Hinweise enthalten, damit die Fragen richtig beantwortet werden können!')|Wozu das ganze?]

So sieht das dann aus: Wozu das ganze?

Leider sind diese Tipps nur bei Browsern mit aktiviertem Javascript abrufbar, ohne Javascript bleiben die Hinweise verborgen, auch werden die zeitgesteuerten Ereignisse nicht funktionieren- das ist aber nicht sehr schlimm: Der grundsätzliche Fragebogen funktioniert weiter.

Abschliessend

  • Die Fragebögen müssen natürlich lösbar sein, im Zweifel sollten die einzelnen Fragen nicht zu schwer sein: Ein positives Feedback unterstützt einen Lerneffekt, geratene Ergebnisse helfen niemandem. Besonders positiv sollten sich o.g. Hilfen zu den Aufgaben auswirken, da damit ein Raten eher vermieden werden kann.
  • Komplizierte Zusammenhänge sollten in Teilaufgaben abgefragt werden, es gibt keinen Grund alles in eine Aufgabe zu stecken, vielmehr sollten sogar Teilschritte einzeln behandelt werden, da keine Rechenwege geprüft werden können.
  • Unbedingt sollte auf jedem Bogen ein Ansprechpartner verzeichnet sein, denn es ist äußerst förderlich, wenn die Studierenden Fragen zum Stoff formulieren.
  • Ein Fragebogen sollte nicht zu lang sein, oder zu viel Zeit beanspruchen. Ist die erforderliche Bearbeitungszeit zu lang, so wird nur das unproduktive "Ausprobieren" von Lösungen gefördert.
  • Die Fragebögen können (außer im IE) gut ausgedruckt werden und auch "offline" bearbeitet werden, die Kontrolle kann man dann online durchführen.
  • Man kann mehrere von einander unabhängige Formulare auf einer Seite haben, hier ein zweiter "Test":


A1) Ergänzen Sie diesen Satz: (Hilfe)

Diese Anleitung war sehr ...... hilfreich!
... verständlich!
... umständlich!

A2) Ergänzen Sie auch diesen Satz: (Hilfe)

Meine Erfahrungen damit ...... behalte ich für mich!
... gebe ich weiter!

Beispiele

Zu guter Letzt verschiedene Beispiele zu Fragebögen auf unseren Seiten (mit den internen Links zur Eigenverwendung):