Handbuch für Aufgabenautoren

Aufgabenerstellung im Online-Übungssystem

Autor: Immo Schulz-Gerlach, ZMI, FeU-Softwaretechnik
Version: 2.16 — 13. Mai 2018
[PDF-Version] [ePub-Version]

Vorwort

Dieses Handbuch ist eine komplett neu geschriebene Dokumentation zum Thema der Aufgabenerstellung und zu verschiedenen anderen Themen, die damit in Beziehung stehen. Es soll das alte Autorenhandbuch von 2004 ablösen, nicht zuletzt, da es gerade im Bereich der Aufgabenentwicklung in den letzten 10 Jahren viele Neu- und Weiterentwicklungen gab. Viele der neu eingeführten Features werden bereits in separaten Dokumentationen erläutert. Das wird auch so beibehalten, die diversen Einzeldokumente werden nun aber aus diesem Dachdokument im jeweiligen Kontext referenziert. So soll eine bessere Übersichtlichkeit erreicht werden.

Das alte Handbuch wird – zumindest vorerst – weiterhin zum Download angeboten, nicht zuletzt, falls sich doch noch die eine oder andere Information darin finden könnte, die (noch) nicht in dieses neue Handbuch eingeflossen ist.

-- Immo Schulz-Gerlach, März 2015

Überblick

Dieses Handbuch richtet sich an Aufgabenautoren im Online-Übungssystem und geht in erster Linie auf verschiedene Möglichkeiten zur Erstellung neuer Aufgaben ein. Viele typische Aufgaben, ob handbewertet oder automatisch bewertet, lassen sich mittlerweile assistentengestützt erzeugen, für maximale Flexibilität und Gestaltungsfreiheit gibt es aber nach wie vor eine so genannte fortgeschrittene Aufgabenerstellung mit Möglichkeiten wie freiem Webdesign und Anbindung externer Korrektursoftware.

Da die Aufgabenerstellung nicht unwesentlich auch von der Art der Korrektur der Einsendungen zu diesen Aufgaben abhängt, soll vor dem eigentlichen Kapitel zur Aufgabenerstellung zunächst ein Überblick über verschiedene Korrekturmodi gegeben werden.

Darauf folgt noch ein weiteres vorbereitendes Kapitel, das Grundlagen z.B. zur Strukturierung von Aufgaben in Kursumgebungen und zur Wiederverwendung von Aufgabenstellungen über Semester oder Kurse hinweg anspricht.

Nach diesen einleitenden Kapiteln wird dann die Aufgabenerstellung selbst adressiert, wobei zunächst die assistentengestützte Aufgabenerstellung vorgestellt, jedoch nicht bis ins Detail dokumentiert wird (da die Aufgabenerstellungsassistenten selbst über Online-Hilfetexte verfügen). Der Rest des Kapitels widmet sich der fortgeschrittenen Aufgabenerstellung, für welche dies auch ein Referenzhandbuch sein soll, z.B. zum Nachschlagen von Übungssystem-spezifischer Syntax in den zu erstellenden HTML-Dokumenten.

Ganz zum Abschluss folgt dann ein Kapitel mit fortgeschrittenen Ansätzen zum noch flexibleren Einsatz des Übungssystems, die zwar auch im Kontext der Aufgabenerstellung zu sehen sind, sich jedoch am besten erst dann erklären lassen, wenn die Grundlagen der Aufgabenerstellung bereits bekannt sind.

Änderung gegenüber Version 2.15

Erste Dokumentation zum (noch in Entwicklung befindlichen) Mehrfachkorrektur-Feature. Insbesondere im Abschnitt zur fortgeschrittenen Aufgabenerstellung wurden im Unterabschnitt zu den Variablen für eine Korrekturseitenvorlage ein neuer Abschnitt zur Mehrfachkorrektur eingefügt.

Änderung gegenüber Version 2.14

Die $HeftSchliessenKnopf-Variable kann nun eine besondere Beschriftung und sogar ein Icon festlegen für den Fall, dass das Heft bereits geschlossen ist. Wenn ein Student das Heft geschlossen hat, wird dann diese Alternativbeschriftung auf dem deaktivierten Button angezeigt, z.B. „Endgültige Abgabe erfolgt, Ihre Einsendung wurde zur Korrektur weitergeleitet“ oder ein beliebiger anderer vom Aufgabenautor definierbarer Text.

Änderung gegenüber Version 2.13

Dokumentation zu neuer Konfigurationsmöglichkeit ignore zu Eingabefeldern.

Änderung gegenüber Version 2.12

Neuer Abschnitt zu besonderen Möglichkeiten mit Dateieinsendungs-Feldvariablen in Korrekturseiten

Änderung gegenüber Version 2.11

Neue Kontrollvariablen $IfExists (als Gegenstück zu $IfNotExists) und $IfEmpty (als Gegenstück zu $IfNotEmpty) eingeführt.
Neue Abschnitte Einfache Dateiuploads und Quittungen zu (einfachen) Dateiuploads sowie Erläuterungen zu darin verwendeten neuen Variablen.

Änderung gegenüber Version 2.10

Informationen zur Antworthäufigkeits-Statistik
Screenshots aktualisiert.

Änderung gegenüber Version 2.9

Der interne automatische Bewerter für Zahlen-Fragen unterstützt bei der Angabe der Lösungsintervalle nun offene Intervallgrenzen. Bisher waren die in der Vorgabe angegebenen Intervallgrenzen stets inklusiv, also Teil des Lösungsintervalls.

Änderung gegenüber Version 2.8

Der interne automatische Aufgabenbewerter wurde um neue Bewertungsmodi für Multiple-Choice-Fragen mit immer mindestens einer korrekten Antwort ergänzt.

Änderung gegenüber Version 2.7

Neu eingeführte Variable $HeftSchliessenKnopf dokumentiert.

Änderung gegenüber Version 2.6

Abschnitt Punkte und Noten eingefügt und Dokumentation zur neuen Variable $KorrekturPunkte im Abschnitt zu Variablen für Korrekturseiten ergänzt.

Änderung gegenüber Version 2.5

Verweis auf Korrekturmoduladapter-Handbuch hinzugefügt. Die Beschreibung zur Kontrollvariable $ESCAPE(…) war unzutreffend.

Änderungen gegenüber Version 2.4

Abschnitte zur Einrichtung rein dateibasierter Korrektur im Kontext des HB-Assistenten und zur Verlinkung von Aufgabenstellungen oder Musterlösungen als PDF-Dateien ergänzt.

Neuer Bewertermodus XausNA3 für Mehrfachauswahlaufgaben mit 3 Antwortmöglichkeiten („Ja“, „Nein“, „keine Antwort/weiß nicht“).

Änderungen gegenüber Version 2.3

Neues Feature: Neben Dateiupload-Feldern, in denen ein Student immer nur eine Datei einsenden kann und jede neue Einsendung die vorherige überschreibt, gibt es nun die Möglichkeit eines „Multi-Dateiuploads“, indem jede neue Dateieinsendung zur vorherigen hinzugefügt und alle nacheinander eingesandten Einzeldateien serverseitig zu einer ZIP-Datei zusammengefasst werden.
Dieses Feature steht nicht nur in der fortgeschrittenen Aufgabenerstellung zur Verfügung, auch im Aufgabenerstellungsassistenten (HB) wird eine vorkonfigurierte „Multi-Dateiupload“-Komponente angeboten.

Diese neue Handbuchversion erläutert den Gebrauch in der fortgeschrittenen Aufgabenerstellung. Außerdem wurde (in der fortgeschrittenen) Aufgabenerstellung die Kontrollstruktur $IfExists<FeldID>(Bedingter Text) ergänzt um eine flexibler einsetzbare $IfExists<FeldID>Bedingter Text$/IfExists<FeldID>-Syntax, und in beiden Schreibweisen gibt es eine verwandte, aber leicht abweichende neue $IfNotEmpty<FeldID>…-Struktur. Auch diesbezüglich wurde das Kapitel zur fortgeschrittenen Aufgabenerstellung ergänzt.


Korrekturmodi

Das Online-Übungssystem bietet sowohl die vollautomatische Bewertung von Einsendungen als auch manuell von menschlichen Korrekturkräften korrigierte und bewertete Einsendungen. Daneben gibt es aber auch Mischformen wie eine automatische Vorkorrektur mit Sofort-Feedback, der jedoch noch eine manuelle abschließende Korrektur und Bewertung nachfolgen.

Eine Anmerkung zur Terminologie: Wir unterscheiden zwischen Korrektur- und Bewertungsvorgang: Die Korrektur beschreibt im Wesentlichen die Erstellung eines neuen Dokuments aus der Einsendung, in der die eingesendeten Inhalte in der Regel angereichert werden z.B. um Kommentare des Korrektors. Das Ergebnisdokument wird ebenfalls als Korrektur bezeichnet. Im Rahmen der Bewertung wird eine Punktzahl (bei Prüfungsleistungen ggf. auch eine Note) vergeben. Die Bewertung erfordert somit zunächst eine Korrektur. Umgekehrt ist es möglich, zu korrigieren ohne zu bewerten. Insbesondere die bereits erwähnte automatische Vorkorrektur erzeugt nur eine erste Version einer Korrektur ohne Bewertung, der menschliche Korrektor überarbeitet ggf. die Korrektur und nimmt abschließend die Bewertung vor. So lange aber gerade nicht explizit zwischen solchen Feinheiten unterschieden werden muss, sollen im Folgenden die Termini Korrektur und Bewertung als weitgehend synonym betrachtet werden.

Die angestebte Art der Korrektur und Bewertung der Einsendungen bestimmt natürlich nicht unwesentlich die Art der Aufgabenstellung.

Automatische Bewertung

Sofern die Aufgaben so gestellt sind, dass sie sich maschinell bewerten lassen, kann im Übungssystem eine automatische Korrektur und Bewertung (Punktevergabe) erfolgen. Zu unterscheiden ist dabei einerseits nach dem Zeitpunkt der Autokorrektur und andererseits nach der zur automatischen Auswertung benötigten Software.

Zeitpunkt der Autokorrektur: Selbsttest-Aufgaben vs. Einsendearbeiten

Während bei handbewerteten Lösungen naturgemäß immer eine längere Wartezeit zwischen Einsendung, Korrektur durch einen menschlichen Korrektor und Freigabe der Korrektur durch einen Betreuer vergeht, kann eine automatische Korrektur prinzipiell unmittelbar bei Einsendung erfolgen. Wird den Studenten jedoch sofort nach einer Einsendung die Korrektur derselben angezeigt, so haben diese in der Regel damit die Möglichkeit, auf Basis dieser Korrektur sofort eine bessere Lösung einzusenden. Und da die Korrektur in der Regel die Lösung verrät1, könnte jeder Student sofort mit der zweiten Einsendung die volle Punktzahl erzielen. Diese sofortige Korrektur eignet sich damit nur für Selbsttestaufgaben. Für Einsendearbeiten kann festgelegt werden, dass die Korrektur erst nach Einsendeschluss erfolgt, so dass die Studenten keine Möglichkeit mehr haben, auf Basis der Autokorrektur ihre Einsendungen zu überarbeiten.

Bewerter-Software

Das Online-Übungssystem enthält einen integrierten Aufgabenbewerter, der typische Aufgabenarten wie insb. Multiple Choice automatisch auswerten kann. Für komplexere Auswertungen können externe Bewertermodule programmiert und als Webservice angebunden werden. Damit lassen sich prinzipiell alle computerkorrigierbaren Lösungen auch übers Übungssystem automatisch auswerten – der Aufwand ist aber natürlich deutlich höher als bei einfacher Verwendung des integrierten Bewerters.

Interner Aufgabenbewerter

Der interne Aufgabenbewerter unterstützt verschiedene Aufgabentypen wie insbesondere:

Die Art der Auswertung legt noch nicht die Art der Formulargestaltung fest. Eine Multiple-Choice-Frage z.B. muss nicht zwangsläufig aus einer Liste von Checkboxen mit Text-Alternativen gebildet werden, sondern kann z.B. auch ein Bild sein, in dem verschiedene anklickbare Bildbereiche (Rechtecke, Kreise oder Polygone) die Antwortalternativen bilden.

Zur Erstellung typischer automatisch bewerteter Aufgaben auf Basis des internen Aufgabenbewerters bietet das Online-Übungssystem einen speziellen Aufgabenerstellungsassistenten. Damit lassen sich derartige Aufgaben relativ einfach im Browser zusammenstellen.

Externe Aufgabenbewerter

Für komplexere Aufgabenstellungen, die zwar Computer-bewertbar sind, zu deren Auswertung der integrierte Aufgabenbewerter jedoch nicht ausreicht, können externe Korrekturmodule programmiert und ans Online-Übungssystem angebunden werden. Die Anbindung erfolgt als SOAP-Webservice. Speziell für die Implementierung mit Java bieten wir ein Framework an, das die Entwicklung vereinfacht. Sie können SOAP-Webservices aber auch in anderen Plattformen realisieren.

Nähere Informationen sowie der Download dieses Java-Frameworks finden sich im Betreuer-Interface jedes Kurses unter »Entwicklung eigener Korrekturmodule«.

Manuelle Korrektur und Bewertung

Da sich längst nicht alle Aufgabenstellungen dazu eignen, die Einsendungen vollautomatisch zu bewerten und auch sinnvoll und für die Studenten hilfreich zu kommentieren, wird vom Online-Übungssystem auch die manuelle Korrektur und Bewertung unterstützt.

Zu den Features des Online-Übungssystems gehören dabei insbesondere die Unterstützung mehrerer Korrektor-Accounts, automatische oder manuelle Zuteilung von zu korrigierenden Einsendungen an die verschiedenen beim Kurs angemeldeten Korrekturkräfte sowie ständiger Überblick des Kursbetreuers über deren Korrekturstatus. Korrekturkräfte können dabei externe Mitarbeiter sein, z.B. auch studentische Hilfskräfte. Die von den Korrektoren fertiggestellten Korrekturen werden nicht unmittelbar den Studenten angezeigt, sondern sind abschließend von einem Kursbetreuer (typischerweise nach zumindest stichprobenweiser Kontrolle) explizit freizugeben oder an den Korrektor zur Nachkorrektur zurückzuverweisen.

Die eigentliche manuelle Korrektur kann auf (technisch) verschiedene Weisen erfolgen, die in den folgenden Unterabschnitten kurz vorgestellt werden sollen. Heute empfohlen wird die In-Browser-Korrektur, da sie die geringsten Anforderungen an die Softwareausstattung der Korrektoren stellt (normalerweise wird nur ein Webbrowser benötigt). Vor Einführung der In-Browser-Korrektur war die Bearbeitung ganzer Korrekturseiten mit einem externen HTML-Editor Standard. Dies wird weiterhin unterstützt, aber nicht mehr empfohlen. Eine Sonderstellung nimmt die rein dateibasierte Korrektur ein, die in Fällen eingesetzt werden kann, in denen die von Studenten einzusendenden Lösungen sowie die Korrekturen nur aus Dateien (z.B. PDF-Dokumenten) bestehen.

Die In-Browser-Korrektur ist eine reine Online-Korrektur, erfordert also eine Internetverbindung. Die dateibasierte Korrektur erfolgt in der Regel offline (Download aller zu korrigierenden Dateien, dann Korrektur ohne Bedarf einer Internet-Verbindung, abschließend Upload aller Korrekturen). Die herkömmliche HTML-Korrektur erfolgt normalerweise online, ermöglicht aber auch (mit spezieller Software) eine Offline-Korrektur.

Die folgende Tabelle gibt einen Überblick, die nachfolgenden Unterabschnitte gehen genauer auf die Verfahren ein.

Handkorrekturverfahren Online-Korrektur Offline-Korrektur Mindestens benötigte Software
In-Browser-Korrektur X Webbrowser
Herkömmliche HTML-Korrektur X Mit Zusatzsoftware Browser-Editor-Suite (Mozilla SeaMonkey), für Offline-K. zusätzl. Java und „Korrekturassistent“
Rein dateibasierte Korrektur (x) X Browser, ZIP-Tool, Editor(en) für verwendete(n) Dateityp(en)

In-Browser-Korrektur

Die sog. In-Browser-Korrektur zeichnet sich in erster Linie dadurch aus, dass Korrekturkräfte normalerweise nichts weiter für ihre Arbeit benötigen als einen Webbrowser: Die Korrektur erfolgt schlicht durch Ausfüllen eines Webformulars im Browser. Nach Speicherung der Korrektur trägt der Korrektor noch seine Bewertung in Punkten in ein separates Formular ein, in dem er auch den Status der Korrektur ändern kann, z.B. auf (fertig) »korrigiert« oder »vorläufig korrigiert«.

Lediglich falls Dateianlagen zu Korrekturen (unabhängig vom Korrekturverfahren, daher in späterem Abschnitt gesondert beschrieben) eingestellt werden sollen, benötigt der Korrektor ggf. weitere Software zum Erstellen dieser anzuhängenden Dateien.

Ein Beispiel für Dateianlagen: Studenten sollen gemäß Aufgabenstellung ein Diagramm als Bilddatei einsenden. Ein Korrektor kann nun zu jeder Einsendung, falls ihm eine reine Kommentierung des Diagramms in einem Formularfeld nicht genügt, eine Kopie der eingesendeten Bilddatei herunterladen, mit einem Bildbearbeitungsprogramm editieren (z.B. Hinzufügen von Markierungen) und das geänderte Bild der Korrektur anhängen.

Um In-Browser-Korrektur zu ermöglichen, muss der Aufgabenautor die Aufgabe entsprechend vorbereiten, indem er ein Korrekturformular entwirft, insbesondere festlegt, an welchen Stellen zwischen den eingesendeten Daten der Korrektor Eingabefelder für Kommentare bekommen soll, und ob diese leer oder mit einem eingesendeten Text (zu dessen Annotation) vorgefüllt sein sollen.

Im einfachsten Fall erstellen Sie die Aufgabe mit dem Aufgabenerstellungsassistenten für handbewertete Aufgaben. Der erzeugt bereits standardmäßig (abschaltbar) eine für In-Browser-Korrektur ausgelegte Aufgabenstellung. Wie bei fortgeschrittener Aufgabenerstellung ein Korrekturformular für In-Browser-Korrektur eingerichtet wird, erläutert ein separates Handbuch.

Herkömmliche (HTML-)Korrektur

Dies war das Standardverfahren vor Einführung der In-Browser-Korrektur, übernommen aus dem WebAssign-System, aus welchem das Online-Übungssystem hervorgegangen ist. Wie bei der In-Browser-Korrektur auch, wird vom Übungssystem eine Webseite (sog. Korrekturseite) erzeugt, die die zu korrigierenden Einsendungen enthält. Anders als bei der In-Browser-Korrektur ist dies jedoch kein Webformular, das vom Korrektor im Browser ausgefüllt werden kann, sondern eine statische (HTML2-)Seite: Der Browser zeigt sie einfach nur an. Mit einer Browser-Editor-Suite wie Mozilla Seamonkey kann ein Korrektor den Webseiteninhalt nun (in SeaMonkey per Strg + E) in einen HTML-Editor (z.B. SeaMonkey Composer) laden und dort bearbeiten. Der bearbeitete Seiteninhalt kann abschließend (im SeaMonkey Composer mit der »Publish«-Funktion) wieder auf dem Übungssystem-Server gespeichert werden3.

Der Korrektor sollte seine Einfügungen in der Seite (z.B. durch rote Schriftfarbe) hervorheben und im Normalfall die vom Studenten eingesendeten Daten selbst nicht verändern.

Genau wie bei der In-Browser-Korrektur füllt der Korrektor abschließend ein Status-Formular mit neuem Korrekturstatus und seiner Bewertung in Punkten aus.

Ebenfalls genau wie bei der In-Browser-Korrektur gilt: Falls Einsendungen Dateien enthalten, kann sich der Korrektor darauf beschränken, Kommentare zu diesen Datei-Einsendungen mit in die (HTML-)Korrekturseite zu schreiben, er kann aber auch eine von ihm bearbeitete / annotierte Version der Datei anhängen oder – falls die Aufgabe entsprechend eingerichtet wurde – andere Anhänge hinzufügen, vgl. dazu den noch folgenden Abschnitt Dateianlagen zu Korrekturen.

Online-Korrektur

Die herkömmliche HTML-Korrektur erfolgt normalerweise online, d.h. der Korrektor loggt sich mit seinem Browser (z.B. SeaMonkey) in der Kursumgebung des Online-Übungssystems ein, findet dort alle ihm zugeteilten Korrekturen (zu korrigierende Einsendungen) und kann diese bearbeiten. Seine Änderungen (Publish der HTML-Korrektur, Upload eines Dateianhangs) erfolgen jeweils „live“ übers Internet.

Offline-Korrektur

Das Offline-Korrekturverfahren für die herkömmliche Korrektur stammt aus der Zeit um die Jahrtausendwende, als Flatrates noch ungebräuchlich waren und man Korrekturkräften nicht zumuten wollte, während der gesamten Korrekturzeit von ggf. mehreren Tagen pro Kurseinheit online zu bleiben. Vielmehr lädt in diesem Fall ein Korrektor einmal alle ihm zugeteilten Einsendungen „auf einen Schlag“ herunter und trennt dann die Internetverbindung. Die eigentliche Korrektur erfolgt fast genauso wie bei der Online-Korrektur, aber ohne Internetverbindung. Die Korrekturen werden nur lokal auf dem eigenen Rechner gespeichert. Ab und zu, spätestens nach Fertigstellung aller Korrekturen, kann der Korrektor wieder eine Internetverbindung herstellen und alle bereits fertigen Korrekturen (samt Bewertung) ans Online-Übungssystem senden („hochladen“).

Heutzutage hat diese Offline-Korrektur an Bedeutung verloren. In Ausnahmefällen wie Korrektur auf Reisen könnte sie noch Anwendung finden. Die benötigte Software wird aber nicht mehr weiterentwickelt, es handelt sich eher um eine Notlösung.

Für diese Offline-Korrektur muss ein Korrektor eine spezielle Software (»Korrekturassistent«) herunterladen und installieren (verfügbar im Korrektorenzugang der jeweiligen Kursumgebung). Diese realisiert intern einen kleinen lokalen Webserver, so dass der Korrektor anschließend über den Webbrowser (Browser-Editor-Suite wie Mozilla SeaMonkey, s.o.) mit diesem Korrekturassistenten interagieren kann. In dieser Oberfläche finden sich Download- und Upload-Funktionen zum Austauschen der Korrekturen mit dem Online-Übungssystem sowie die Offline-Korrekturoberfläche, die weitgehend der Online-Korrektur gleicht.

Speziell für Problemfälle, in denen die Kommunikation zwischen Online-Übungssystem-Server und Korrekturassistent des Korrektors nicht funktioniert, bietet das Online-Übungssystem dem Betreuer noch die Möglichkeit zum Erzeugen von ZIP-Dateien mit den zu korrigierenden Einsendungen4, die der Korrektor dann per Browser herunterladen und im Verzeichnis des Korrekturassistenten entpacken kann. Auch für den umgekehrten Weg gibt es noch Benutzungsschnittstellen: Der Korrektor kann die fertigen Korrekturen in eine ZIP-Datei einpacken, hochladen und der Betreuer muss dann einen Import der ZIP-Datei anstoßen5. Dieses ZIP-Verfahren wird aber normalerweise nicht mehr verwendet.

Rein dateibasierte Korrektur

Unabhängig vom Korrekturverfahren unterstützt das Übungssystem neben „normalen“ Formulareingaben von Studenten auch studentische Dateiuploads zu Aufgaben sowie neben „normalen“ Korrektor-Kommentaren in der (HTML-)Korrekturseite das Annotieren von Dateieinsendungen und Hinzufügen von Dateianlagen zu Korrekturen (näher beschrieben im nachfolgenden Abschnitt Dateianlagen zu Korrekturen).

Ein besonderer Fall liegt vor, falls bereits die Studenten ihre Lösungen ausschließlich in Dateiform einreichen, also gar keine herkömmlichen Eingaben in ein Webformular vornehmen können, und falls auch die Korrektur ausschließlich in Dateiform erfolgen soll (z.B. durch Annotieren der eingesendeten Dateien und/oder Ausfüllen spezieller PDF-Formulare).

Eine Anwendung dieses Verfahrens erfolgt z.B. in einem Mathematik-Kurs, in dem Studenten ihre Lösungen als PDF erstellen (egal ob handschriftlich und eingescannt oder z.B. mit LaTeX gesetzt) und diese PDF-Datei übers Online-Übungssystem einsenden. Die Korrektoren wiederum annotieren „nur“ diese eingesendeten PDF-Dateien. Mit Convertible-PCs (mit Tastatur sowie Touchscreen mit Stift) können diese Annotationen teils handschriftlich, teils per Tastatur getippt sein.

Für diesen Fall der rein dateibasierten Korrektur gibt es ein spezielles Offline-Korrektur-Verfahren:

Offline-Korrektur

Um den speziellen Offline-Korrekturmodus für rein dateibasierte Korrekturen zu aktivieren, muss der Kursbetreuer zunächst in den Kursparametern den »Korrekturmodus bei handbewerteten Aufgaben« von »Normal« auf »Korrektur externer Lösungsdateien« umschalten. Wenn das geschehen ist, wird Korrektoren neben der immer möglichen Online-Korrektur (s.u.) ein spezielles Interface zur dateibasierten Offline-Korrektur angeboten.

Jeder Korrektor kann dann eine ZIP-Datei mit allen zu korrigierenden Dateien herunterladen6. Nun kann er offline jede dieser Dateien bearbeiten und nach Fertigstellung wieder alle Dateien in eine ZIP-Datei einpacken und diese ins Online-Übungssystem hochladen.

Nach diesem Upload liegen jedoch zwar die Korrekturen (im engeren Sinne) vor, jedoch müssen noch die Bewertungen (Punkte, ggf. Note7) der fertigen Korrekturen im Online-Übungssystem hinterlegt werden. Dazu ruft der Korrektor dann online eine spezielle Tabelle auf, in die er die einzelnen erreichten Punkte einträgt. Die sollte er sich zuvor während der Offline-Korrektur der einzelnen Dateien am besten bereits notiert haben, um sie nun einfach in das Punkteerfassungsformular übertragen zu können.

Der letztgenannte Schritt der manuellen Punkteerfassung kann entfallen, wenn die Korrekturen spezielle PDF-Formulare (im Folgenden noch genauer erläutert) umfassen, aus denen das Übungssystem bei Upload die Punktzahl direkt entnehmen kann.

Online-Korrektur

Eine Online-Korrektur im Sinne einer jeweils einzelnen Bearbeitung der Dateien und sofortiger Speicherung der Korrektur und Bewertung online im Übungssystem ist natürlich ebenfalls möglich. Dafür gibt es kein spezielles Korrekturverfahren, sondern es wird typischerweise einfach die herkömmliche HTML-Korrektur verwendet und dabei lediglich auf das Bearbeiten der HTML-Korrekturseite verzichtet, die in diesem Spezialfall ohnehin keine studentischen Eingaben enthält, sondern lediglich den Link zur Dateieinsendung sowie Upload-Möglichkeiten für den Korrektor anbietet. (Somit kann auch ein beliebiger Browser verwendet werden, es besteht kein Bedarf für SeaMonkey oder ähnliche Browser-Editor-Suites.)

Verfahrensübergreifend: Dateianlagen zu Korrekturen

Unabhängig von der Wahl eines der oben beschriebenen Korrekturverfahren kann einem Korrektor die Möglichkeit gegeben werden, Dateien zu seiner Korrektur hinzuzufügen (sog. „Beikorrekturen“). Der Student bekommt dann in seiner Korrektur die Beikorrektur – bzw. einen Downloadlink zur Datei, je nach Dateityp – angezeigt.

Dazu gibt es verschiedene Szenarien:

  1. Ein Student soll oder darf eine Datei einsenden, wozu im Aufgabenformular ein Upload-Feld eingefügt ist. In diesem Fall hat auch der Korrektor automatisch die Möglichkeit, seiner Korrektur eine bearbeitete, z.B. von ihm annotierte Kopie der vom Studenten eingesendeten Datei an seine Korrektur anzuhängen. Der Korrektor lädt dazu die eingesendete Datei herunter, bearbeitet sie (z.B. durch Hinzufügen von Kommentaren oder Markierungen) mit geeigneter lokaler Software und lädt die geänderte Datei wieder als Anlage zur Korrektur hoch. (Die Original-Einsendung des Studenten wird davon nicht überschrieben, sondern bleibt im Online-Übungssystem gesichert.)
  2. Ein Korrektor soll einen beliebigen, selbst erstellten Dateianhang hinzufügen können, d.h. eine Datei, die keine Kopie einer studentischen Einsendung ist und unabhängig davon hochgeladen werden kann, ob der Student überhaupt eine Datei eingesendet hat. Ein Aufgabenautor kann hierzu in der Korrekturseitenvorlage entsprechende Uploadmöglichkeiten für Korrektoren vorsehen.
  3. Der Korrektor soll zu jeder Korrektur ein PDF-Formular ausfüllen und der Korrektur anhängen. Wie bei Punkt 2. liegt hier also keine studentische Einsendung zu Grunde, sondern der Korrektor fügt eine neue Datei zur Korrektur hinzu. Die Bedienung für den Korrektor ist analog zu Punkt 1., nur ist die Datei, die er herunterlädt, keine Kopie einer studentischen Einsendung, sondern eine Kopie eines vom Aufgabenautor vorgegebenen PDFs.

Der nachfolgende Abschnitt geht etwas genauer auf den dritten Punkt ein.

Nutzung spezieller PDF-Formulare

Ein Aufgabenautor kann zu einer Aufgabe ein PDF-Formular erstellen, in welchem auch (neben z.B. Korrekturkommentaren, Teilpunkten etc.) die Gesamtpunktzahl erfasst wird. Das Formular kann ggf. so ausgelegt werden, dass es die Gesamtpunktzahl selbst aus anderen Formularfeldern (wie Teilpunktzahlen) errechnet.

Derartige PDF-Korrekturformulare können prinzipiell mit jedem der oben beschriebenen Korrekturverfahren kombiniert werden, werden aber in erster Linie im Kontext rein dateibasierter Korrektur eingesetzt.

Ein Korrektor erhält dann neben den Dateieinsendungen der Studenten selbst auch für jede zu korrigierende Einsendung eine Kopie dieses Formulars8. Das Online-Übungssystem kann dabei bestimmte Formularfelder (wie Name, Matrikelnummer, Kursnummer etc.) direkt ausfüllen. Anschließend kann der Korrektur die für ihn bestimmten Formularfelder mit Anmerkungen und Bewertungen füllen und das gespeicherte Formular wieder hochladen9.

Beim Hochladen kann das Online-Übungssystem wiederum bestimmte Formularfelder erkennen und daraus die Punktzahl automatisch entnehmen (sofern das Formular geeignet aufgebaut wurde). Die manuelle Erfassung der Punkte im Übungssystem ist dann nicht mehr nötig.

Details zur Erstellung solcher PDF-Formulare finden sich in einem gesonderten Handbuch.

Mehrfachkorrektur (Work in Progress!)

Der Standardfall bei manueller Korrektur sieht vor, dass es genau einen Korrektor pro zu korrigierender Einsendung gibt: Ein Student sendet seine Lösungen ein, daraus wird eine Korrektur (bei manueller Korrektur zunächst nur ein Dokument mit den Eingaben des Studenten, das noch von einem Korrektor zu bearbeiten ist) erzeugt, dieses wird genau einem Korrektor zugeteilt, der die Korrektur bearbeitet und eine Bewertung (Punktzahl und/oder Note) vergibt, woraufhin ein Betreuer die fertige Korrektur (samt Bewertung) freigeben kann. Dies sei als Einfachkorrektur bezeichnet.

Vor dem Hintergrund, dass das Online-Übungssystem auch für die Abwicklung (Online-Einreichung und Korrektur) von Abschlussarbeiten genutzt werden soll, ist derzeit ein neues Feature in Entwicklung, „Mehrfachkorrektur“ genannt.

Bei Mehrfachkorrektur wird eine noch zu bearbeitende Korrektur nicht nur einem, sondern mehreren Korrektoren parallel zugeteilt. Es ist eine Mindest-Korrektorenzahl einstellbar, und ein Betreuer kann nachträglich weitere Korrektoren hinzufügen. Für Abschlussarbeiten und andere Prüfungen, die regulär von zwei Prüfern zu bewerten sind, ist die Mindest-Korrektorenzahl entsprechend 2. In Fällen, in denen ein Drittgutachter hinzugezogen werden muss, kann der Betreuer entsprechend eine dritte Teilkorrektur hinzufügen und einem dritten Korrektor zuteilen.

Jeder Korrektor erstellt dann eine sog. Teilkorrektur mit Bewertung (Teilwertung). Die Gesamtwertung wird dann vom Übungssystem aus den Wertungen der Teilkorrekturen (Teilwertungen) berechnet.

Es ist einstellbar, ob beide Korrektoren parallel arbeiten dürfen oder der zweite Korrektor erst tätig werden darf, wenn der erste mit seiner Teilkorrektur fertig ist. Weiterhin ist einstellbar, ob ein Korrektor die Teilkorrekturen der anderen Korrektoren sehen darf oder diese vor ihm verborgen bleiben sollen.

Die Mehrfachkorrektur ist mit folgenden der oben genannten manuellen Korrekturmodi verwendbar:

Die „herkömmliche HTML-Korrektur“ ist dagegen nicht mit Mehrfachkorrektur kombinierbar, da dort nur ein zentrales HTML-Dokument bearbeitet wird und es bei paralleler Bearbeitung derselben HTML-Datei durch mehrere Korrekturen zu Konflikten kommen könnte.

Zu Dateianlagen (insbesondere, aber nicht nur, bei rein dateibasierter Korrektur): Jeder Korrektor kann seine eigenen Beikorrekturen erstellen. Von einer Dateieinsendung bekommt also jeder Korrektor seine „eigene“ Kopie und kann sie unabhängig von den anderen Korrektoren annotieren. Die Annotationen der anderen Korrektoren sieht er nicht bzw. nur über die Korrekturvorschau. Der Student bekommt später in der Korrektur einen Downloadlink zu jeder Beikorrektur (also einen pro Korrektor). Bei Abschlussarbeiten sind das z.B. in der Regel zwei Links zu seiner Arbeit, einmal mit den Anmerkungen des Erstprüfers und einmal mit denen des Zweitprüfers.

Zur In-Browser-Korrektur: Diese ist prinzipiell auch mit Mehrfachkorrektur benutzbar, aber zum derzeitigen Stand nur eingeschränkt: Jeder Korrektor kann alle Korrektor-Kommentarfelder bearbeiten, aber alle Korrektoren arbeiten an denselben Kommentaren, d.h. nicht jeder kann exklusiv seinen eigenen Kommentar abgeben. KorrektorChecks mit impliziter Bewertung sollten keinesfalls bei Mehrfachkorrektur verwendet werden!

Für die Zukunft ist eine Erweiterung geplant, die Teilkorrektur-spezifische Korrektorkommentar-Eingabefelder ermöglicht.

Mischformen

Das Übungssystem unterscheidet nicht streng – wie die vorhergehenden Abschnitte – zwischen automatischer und manueller Korrektur, sondern es gibt auch Formen, in denen beides kombiniert wird: Es erfolgt zunächst eine automatische Vorkorrektur (mit oder ohne Bewertung) und ggf. eine manuelle Nachkorrektur mit Bewertung.

(Aufgaben mit solchen Mischformen der Korrektur lassen sich nicht assistentengestützt erstellen, sondern erfordern eine entsprechende Konfiguration in der fortgeschrittenen Aufgabenerstellung.)

»Automatisch und von Hand«

Eine spezielle Option ist, dass ein vollautomatisches Bewertermodul eingesetzt wird, das nach Einsendeschluss alle eingegangenen Einsendungen auswertet, dessen Korrekturen und Bewertungen jedoch nicht sofort den Studenten freigegeben werden. Statt dessen…

Dieser Modus lässt sich in der fortgeschrittenen Aufgabenerstellung in Rubrik »Korrektur« unter »Art der Korrektur« einstellen. Er kann mit jedem Korrektur-/Bewertermodul verwendet werden, also sowohl bei Verwendung des internen Bewerters als auch bei Verwendung eines externen Bewertermoduls.

Externe Vorkorrekturmodule

Der gebräuchlichere Fall ist, dass an Stelle eines automatischen Korrektur- und Bewertermoduls ein spezielles Vorkorrekturmodul eingesetzt wird, welches direkt nach Eingang einer Einsendung ausgeführt wird und ein Sofort-Feedback (wie bei Selbstkontrollaufgaben) gibt. Dieses Sofort-Feedback kann z.B. Tipps zur Verbesserung der Lösung geben oder auf konkrete Probleme hinweisen, nimmt aber weder eine verbindliche endgültige Korrektur noch eine Bewertung mit Punkten vor. Erst nach Einsendeschluss wird jede so vorkorrigierte Einsendung einem Korrektor zugeteilt, der nun neben der Einsendung des Studenten auch die zugehörige Vorkorrektur sehen kann. Der Korrektor nimmt dann erst die endgültige Korrektur und die Bewertung vor.

Ein typischer Anwendungsfall aus der Praxis ist z.B. die Vorkorrektur von Programmieraufgaben: Ein Student soll etwas programmieren und sendet Programmcode ein. Sofort nach Einsendung meldet das Vorkorrekturmodul, ob der Programmcode überhaupt computerlesbar / übersetzbar ist. Falls sich das Programm tatsächlich ausführen lässt, führt das Vorkorrekturmodul auch noch exemplarisch ein paar Testläufe aus und gibt dem Studenten Feedback, welche Testfälle von seinem Programm bestanden wurden und welche nicht. Der Student kann daraufhin seine Lösung ggf. überarbeiten (sofern er den Stoff so weit verstanden hat, dass die Hinweise der Vorkorrektur für ihn hilfreich sind) und erneut eine Fassung einsenden. Erst nach Einsendeschluss schaut sich ein menschlicher Korrektor dann die Lösung (samt Vorkorrektur) an. Er gibt Kommentare, ob die Lösung wirklich korrekt, stilistisch gut, sinnvoll programmiert ist, gegen keine Regeln verstößt o.ä., kann auch die Vorkorrektur-Ausgabe noch genauer erklären, wenn nötig, und nimmt eine Bewertung in Punkten vor.

Derartige Vorkorrekturmodule müssen natürlich zunächst entwickelt werden. Für sie gilt im Wesentlichen dasselbe wie für selbst entwickelte, externe Korrektur-/Bewerter-Module, nur dass sie keine Bewertung mit Punkten vornehmen.

Überblick (Vor-)Korrektur-/Bewerter-Module

In den vorangegangenen Abschnitten wurden verschiedene Szenarien für den Einsatz automatischer Korrektur oder Vorkorrektur, ggf. mit manueller Nachkorrektur und Bewertung oder mit automatischer Bewertung vorgestellt:

Zur Realisierung dieser vier Korrekturmodi kennt das Online-Übungssystem zwei Arten von Softwaremodulen zur Ausführung der (Vor-)Korrektur:

Modulart Ausführungszeitpunkt Ausgabe / Feedback Umfang mit Bewertung
Selbsttest-/Vorkorrekturmodul Bei Einsendung in Quittung (sofort) und in Korrektur Teilaufgabe nein
Korrektur-/Bewertermodul Beim »Heft-Schließen« in Korrektur Aufgabe ja

Selbsttest-/Vorkorrekturmodule (in der Regel nur kurz als „Vorkorrekturmodule“ bezeichnet) decken zwei von den vier oben genannten Korrekturmodi ab: Automatisch sofort bewertete Selbsttestaufgaben sowie Vorkorrektur mit manueller Nachkorrektur. Da sie direkt nach einer Einsendung aufgerufen werden, und Einsendungen (wie im Folgenden noch erläutert wird) immer die Eingaben zu genau einer sog. Teilaufgabe umfassen, bekommt ein Vorkorrekturmodul auch (bei in mehrere Teilaufgaben unterteilten Aufgaben) immer nur die Eingaben zur jeweiligen Teilaufgabe zur Auswertung, kann also nicht Teilaufgaben-übergreifend auswerten. Die Ausgaben der Vorkorrektur werden üblicherweise direkt in die sogenannte Quittung (Einsendebestätigung, die dem Studenten als Antwort auf seine Einsendung angezeigt wird) eingebunden. Somit erlauben Vorkorrekturmodule ein Sofort-Feedback. Eine Bewertung im Rahmen einer Vorkorrektur ist nicht vorgesehen. Ein Vorkorrekturmodul kann keine Bewertung (Punktzahl, ggf. Note) im Übungssystem speichern, jedoch kann es – falls es z.B. für vollautomatische Selbsttestaufgaben eingesetzt wird – durchaus intern eine Bewertung vornehmen und im Sofort-Feedback anzeigen.

Korrektur-/Bewertermodule (in der Regel nur kurz als „Korrekturmodule“ bezeichnet) decken die beiden anderen Korrekturmodi ab: Vollautomatische Korrektur mit oder ohne manuelle Kontrolle/Nachkorrektur. Sie werden ausgeführt beim sog. »Heft-Schließen«. In der Regel findet dieses nach Einsendeschluss statt. Sie können Studenten über das Einblenden eines »Heft-Schließen«-Buttons in die Aufgabenübersicht auch die Möglichkeit zur vorzeitigen Abgabe aller Lösungen eines Aufgabenhefts einräumen, dann erfolgt die Autokorrektur bereits im Rahmen dieser vorzeitigen Abgabe. Dies ermöglicht z.B. im Fall der manuellen Nachkorrektur, dass bereits vor Einsendeschluss mit diesen Nachkorrektur-Arbeiten begonnen werden kann. In jedem Fall kann der Student nach dem Heft-Schließen keine weiteren Einsendungen für das Heft mehr vornehmen. Das Korrekturmodul bekommt dann Zugriff auf alle eingegangenen Einsendungen eines Studenten zu einer Aufgabe, auch wenn diese in Teilaufgaben unterteilt ist. Neben der Ausgabe einer anzuzeigenden Korrektur gibt ein Korrekturmodul auch eine Bewertung (Punkte, bei Prüfungsleistungen ggf. auch Note) ans Übungssystem zurück, die in der Datenbank gespeichert wird und in der Ergebnisübersicht abrufbar ist. Das Ergebnis der Autokorrektur wird in die Korrekturseite eingebunden, die nun ggf. noch von einem Korrektor nachbearbeitet werden kann und dem Studenten erst nach expliziter Freigabe, im Normalfall jedoch nicht vor Einsendeschluss (selbst bei vorzeitiger Abgabe) angezeigt wird.


Grundlagen

In diesem Abschnitt sollen weitere Themen angesprochen werden, die nicht direkt die Erstellung neuer Aufgaben betreffen, aber deren Kenntnis sinnvoll sein kann, bevor mit der Erstellung neuer Aufgaben begonnen wird.

Struktur einer Kursumgebung, Einordnung der Aufgaben

Bevor auf die eigentliche Aufgabenerstellung eingegangen werden soll, sei hier vorab ein Überblick über die Struktur einer Übungsumgebung zu einem Kurs gegeben, denn in diese Struktur müssen Sie Ihre Aufgabenstellungen einordnen.

Hierarchische Struktur einer Übungssystem-Kursumgebung
Hierarchische Struktur einer Übungssystem-Kursumgebung

Aufgaben werden in dieser Struktur nicht allgemein einem Kurs, sondern einer so genannten Kursversion für ein bestimmtes Semester untergeordnet. Wird der Kurs in einem späteren Semester erneut angeboten, so wird für das neue Semester eine neue Kursversion erstellt, die dieselben Aufgaben enthalten kann, aber nicht muss: Es können auch Änderungen an den Aufgaben vorgenommen oder komplette Aufgaben entfernt und neue eingefügt werden (ohne Einfluss auf die Kursversionen der vorherigen Semester).

Innerhalb einer Kursumgebung zu einem Semester (Kursversion) sind die Aufgaben zunächst nochmals verteilt auf sog. Aufgabenhefte. Eine typische (aber nicht unbedingt notwendige) Aufteilung ist ein Aufgabenheft pro Kurseinheit. Zu jedem Aufgabenheft werden zwei Termine festgelegt: Der Bearbeitungsbeginn bezeichnet den Zeitpunkt (Tag und Uhrzeit), ab dem die Aufgaben des Hefts für die Studenten freigeschaltet werden. Das Bearbeitungsende wiederum bezeichnet den Einsendeschluss- und Musterlösungsfreigabe-Termin: Bis zu diesem Zeitpunkt (wieder Datum und Uhrzeit) können Studenten noch Lösungen zu den Aufgaben des Hefts einsenden, danach werden im Normalfall sofort die Musterlösungen freigeschaltet (es sei denn, es wurden besondere Optionen wie das Zurückhalten der Musterlösungen bis zur Korrekturfreigabe eingestellt). Diese Fristen gelten also für alle Aufgaben eines Aufgabenhefts gemeinsam, d.h. Aufgaben mit unterschiedlichen Bearbeitungsfristen müssen auch auf unterschiedliche Aufgabenhefte verteilt werden.

Untergliederung von Aufgaben in Fragen

Wenn geklärt ist, welche Fragestellungen zu welchen Terminen bearbeitet werden sollen (z.B. Fragen zur Kurseinheit 1, zur Kurseinheit 2 etc. jeweils zusammen) und somit welche Fragestellungen zu Aufgabenheften zusammengefasst werden sollen, ist als nächstes zu entscheiden, wie sich diese Fragestellungen innerhalb des Aufgabenhefts auf Aufgaben verteilen sollen. Ein Extrem wäre das Erstellen einer separaten Aufgabe zu jeder einzelnen Fragestellung, ein anderes Extrem eine einzige Aufgabe pro Heft, die alle Fragestellungen enthält. Typisch sind eher Mischformen, in denen Fragestellungen, die thematisch zusammenhängen, zu Aufgaben gruppiert werden, für verschiedene Themen jedoch verschiedene Aufgaben erstellt werden.

Die wesentliche technische Konsequenz dieser Untergliederung von Aufgaben in Fragen äußert sich darin, dass jede Aufgabe eine einzelne Aufgabenseite (Webseite) bekommt, in der alle Fragen dieser Aufgabe nacheinander aufgelistet werden. Zum Bearbeiten der nächsten Aufgabe ist jeweils zu einer anderen Aufgabenseite zu wechseln. Entsprechendes gilt auch für die Korrekturen und Musterlösungen.

Untergliederung von Aufgaben in sog. Teilaufgaben

Obige Abbildung zeigt, dass sich Aufgaben in zwei Unter-Hierarchien aufteilen lassen: In Fragen einerseits (was eine rein logische Unterteilung nach Fragenstellungen und Themen/Aufgabenseiten ist, wie oben bereits beschrieben) und in sog. Teilaufgaben10 andererseits. Die Unterteilung einer Aufgabe in Teilaufgaben ist rein technischer Art und beeinflusst, in welchen „Portionen“ die studentischen Eingaben zu einer Aufgabe ans Übungssystem gesendet werden.

Sofern Sie Ihre Aufgaben assistentengestützt erstellen (vgl. nachfolgende Kapitel), ist diese Unterscheidung für Sie weniger interessant: Der Aufgabenerstellungsassistent für automatisch bewertete Aufgaben nimmt grundsätzlich keine Unterteilung in Teilaufgaben vor, derjenige für handbewertete Aufgaben erstellt im Normalfall die technischen Teilaufgaben nach einer bewährten Strategie (wie im Folgenden noch erläutert).

Wenn Sie jedoch die fortgeschrittene Aufgabenerstellung benutzen, legen Sie die Aufteilung einer Aufgabe in Teilaufgaben selbst fest. Dazu ist es wichtig zu wissen, welche technischen Konsequenzen das hat.

Der wesentliche Punkt ist, dass zwar das Formular zu einer Aufgabe, in das Studenten ihre Lösungen eintragen sollen, immer vollständig auf einer Webseite angezeigt wird, jedoch darin für jede Teilaufgabe ein eigener Einsenden-Button vorhanden ist und die Studenten damit nur die Eingaben zu einer Teilaufgabe einsenden können. Besteht eine Aufgabe nur aus einer einzigen Teilaufgabe (ist also nicht in mehrere Teilaufgaben untergliedert), so werden alle Eingaben zur Aufgabe zusammen eingesendet.

Ein Beispiel: Angenommen, ein Aufgabenformular bestehe aus zwei Eingabeboxen für Text (oder zwei Multiple-Choice-Fragen). In diesem Fall ist es sinnvoll, beide zu einer Teilaufgabe zusammenzufassen. Der Student füllt dann das gesamte Formular aus und sendet alles auf einmal ein. Würde man jede der beiden Eingabeboxen (oder Multiple-Choice-Fragen) jeweils als eigene Teilaufgabe auslegen, so müsste ein Student zunächst nur eine Box ausfüllen (bzw. Antworten zur einer Multiple-Choice-Frage ankreuzen) und dann zunächst den Einsenden-Knopf dazu drücken, um diese Eingaben zu speichern. Danach könnte er das Aufgabenformular erneut öffnen und nun die zweite Frage beantworten und seine zweite Antwort einsenden. Füllte er jedoch alle Antworten für beide Fragen aus, könnte er nur eine dieser Antworten einsenden/speichern, die andere würde verworfen. Damit sollte klar sein, warum die erste Version (alles einsenden) bevorzugt wird.

Wann also sind dann verschiedene Teilaufgaben zu einer Aufgabe überhaupt sinnvoll? Ein wesentliches Anwendungsgebiet sind Datei-Uploads. Variieren wir obiges Beispiel: In einem Aufgabenformular soll ein Student einerseits eine Bilddatei mit einem bestimmten Diagramm hochladen als auch eine Texteingabebox mit Erläuterungen zu diesem Diagramm füllen. Würde man diese beiden Formularfelder (Dateiupload und Textbox) zu einer Teilaufgaben zusammenfassen, so könnte der Student zwar durchaus beim ersten Bearbeiten der Aufgabe seine Grafikdatei auswählen und die Textbox ausfüllen und dann beides (Text und Datei) durch einen Klick auf den (einzigen) Einsenden-Button zusammen einsenden. Aber wenn er später die Aufgabenseite erneut öffnet, nur den Text nachbearbeitet und dann den Einsendeknopf betätigt, passiert Folgendes: Der neue/geänderte Text wird zusammen mit der Information „keine Datei ausgewählt“ eingesendet. Das Übungssystem überschreibt seine letzte Einsendung, d.h. nun hat er die neue Textversion abgegeben, aber keine Datei mehr. Seine zuvor eingesendete Datei wurde damit wieder zurückgezogen. Um das zu verhindern, müsste der Student bei jeder nachträglichen Änderung an den Texteingaben auch die Datei wieder auswählen und erneut mit einsenden, auch wenn sie gar nicht verändert wurde. Diese Konstruktion birgt also das Risiko, dass Studenten aus Versehen einmal hochgeladene Dateien wieder zurückziehen und am Ende gar keine Datei abgegeben haben, ohne es zu wissen.

Daher wird empfohlen, jeden Dateiupload zu einer separaten Teilaufgabe zu machen. Im Aufgabenformular gibt es dann zu jedem Dateiauswahl-Feld auch einen separaten Einsenden-Button, vorzugsweise mit »Datei hochladen« o.ä. beschriftet. In obigem Beispiel würde der Student z.B. zuerst die Datei auswählen und sofort den Hochladen-Button betätigen. Nach der Bestätigung, dass die Datei gesichert wurde, kehrt er zum Aufgabenformular zurück und füllt nun das Textfeld aus und sendet den Text getrennt ein. Auf diese Weise kann er auch später den Text getrennt überarbeiten und neu einsenden, ohne die Datei zurückzuziehen bzw. jedes Mal erneut mit einsenden zu müssen. Ebenso kann er jederzeit einzeln eine neue Version der Datei hochladen und damit die vorherige überschreiben.

Faustregel:
Jedes Dateiupload-Feld bildet eine separate Teilaufgabe mit eigenem Einsenden-Knopf (der z.B. mit »Hochladen« beschriftet werden kann). Alle Textfelder, Checkboxen etc. werden zu einer einzigen Teilaufgabe zusammengefasst. Aufgaben ohne Dateiuploads werden demnach gar nicht in Teilaufgaben untergliedert / bestehen aus einer einzigen Teilaufgabe.

Falls Sie Vorkorrekturmodule einsetzen möchten, ergibt sich noch ein weiterer Unterschied: Da eine Vorkorrektur immer sofort nach einer Einsendung ausgeführt wird, und Einsendungen immer pro Teilaufgabe erfolgen, bekommt ein Vorkorrekturmodul immer die Eingaben eines Studenten zu genau einer Teilaufgabe zur Auswertung übermittelt. (Ein Korrektur-/Bewertermodul dagegen, das erst nach Einsendeschluss ausgeführt wird, bekommt alle Eingaben eines Studenten zu einer Aufgabe übermittelt, egal ob die Aufgabe in Teilaufgaben zerlegt ist oder nicht.) Hier kann also auch die Umsetzung Ihres Vorkorrekturmoduls Einfluss auf die günstigste Aufteilung der Aufgabe in Teilaufgaben haben.

Es gibt noch ein weiteres Anwendungsgebiet für Teilaufgaben, in denen obiger Nachteil (Formularfelder mehrerer Teilaufgaben gleichzeitig ausfüllbar, aber nur ein Teil der Aufgaben dann einsendbar) nicht auftritt: Wenn sich die einzelnen Teilaufgaben-Formulare auf verschiedene Webseiten verteilen und in einer Sequenz schrittweise zu bearbeiten sind. Dieser als Multi-Step-Sumbit bezeichnete Spezialfall wird im Kapitel Fortgeschrittene Themen nach der Einführung in die Aufgabenerstellung gesondert vorgestellt.

Kursressourcen

Ein zentraler Begriff im Online-Übungssystem ist der der Kursressourcen. Es handelt sich dabei um eine Sammlung von Dateien in einer Kursversion.

Zunächst gibt es zu jeder Übungssystem-Aufgabe so genannte Standard-Kursressourcen:

So lange Sie die assistentengestützte Aufgabenerstellung benutzen, kommen Sie mit diesen Standard-Kursressourcen nicht explizit in Berührung, denn sie werden automatisch von den Aufgabenerstellungsassistenten erzeugt und gepflegt. Bei der fortgeschrittenen Aufgabenerstellung dagegen erstellen Sie diese Dateien selbst.

Neben den Standard-Kursressourcen können Sie beliebige weitere Dateien, sog. Nicht-Standard-Kursressourcen, hochladen und insbesondere in Ihren Aufgaben verwenden. Falls Sie z.B. Abbildungen in Ihren Aufgabenstellungen verwenden möchten, laden Sie die Bilddateien als Kursressourcen hoch und verlinken diese in den Aufgabenstellungen.

Einbindung von Kursressourcen in der assistentengestützten Aufgabenerstellung

Manche Aufgabenelemente in den Assistenten (wie z.B. eine Bildbereichsauswahl) benötigen zwingend die Auswahl z.B. eines Bildes oder einer PDF-Datei und bieten dazu eine entsprechende Auswahlmöglichkeit:

Auswahl eines zu verlinkenden Musterlösungsdokuments (Erstellungsassistent für handbewertete Aufgaben)
Auswahl eines zu verlinkenden Musterlösungsdokuments (Erstellungsassistent für handbewertete Aufgaben)
Auswahl eines Bildes für den »Bildpunkt-Auswahl«-Fragentyp (Erstellungsassistent für automatisch bewertete Aufgaben)
Auswahl eines Bildes für den »Bildpunkt-Auswahl«-Fragentyp (Erstellungsassistent für automatisch bewertete Aufgaben)

Aber auch in allen Eingabefeldern für formatierten Text können Sie z.B. Bilddateien aus den Kursressourcen einbinden. Sie müssen diese im Vorfeld als Kursressource hochgeladen haben, um sie im Editor auswählen zu können. Die folgende Abbildung zeigt als Beispiel eine Multiple-Choice-Frage, in der zu jeder Antwortalternative ein Foto aus den Kursressourcen eingebunden wurde:

Auswahl einer Bild-Kursressource in Editorfeldern für formatierten Text
Auswahl einer Bild-Kursressource in Editorfeldern für formatierten Text

Einbindung von Kursressourcen in der fortgeschrittenen Aufgabenerstellung

In der fortgeschrittenen Aufgabenerstellung bearbeiten Sie die Standard-Kursressourcen (HTML-Dateien) selbst. Falls Sie dort z.B. eigene Bilddateien, CSS-Stylesheets, JavaScripte o.ä. einbinden oder auf PDF-Dateien in den Kursressourcen verlinken möchten, so…

Taktung

Normalerweise sind alle Nicht-Standard-Kursressourcen jederzeit abrufbar und können nicht nur in beliebigen Aufgabenstellungen und Musterlösungen eingesetzt werden, sondern auch darüber hinaus, z.B. auf der Kursstartseite. Die Standard-Kursressourcen (Aufgabenstellung, Musterlösung etc.) dagegen sind durch die Termine der Aufgabenhefte getaktet.

Es gibt aber auch die Möglichkeit, bestimmte Nicht-Standard-Kursressourcen ebenfalls getaktet anzubieten, wie z.B. Abbildungen im Rahmen von Musterlösungen, die nicht (falls jemand den Dateinamen erraten sollte) schon vor Einsendeschluss eingesehen werden können sollen, oder auch ganze PDF-Dokumente mit Aufgaben oder Lösungen. Dazu sind diese gemäß einer bestimmten Namenskonvention zu benennen. Details dazu finden Sie direkt im Online-Übungssystem, indem Sie auf der Kursressourcen-Verzeichnisseite dem Link »Weiterführende Informationen zu Standard- und Nicht-Standard-Kursressourcen sowie Zugriffsschutz, Taktung, Einbindung in HTML-Seiten etc.« folgen.

Wiederverwendung

Nicht für jede Kursversion (d.h. jedes Semester, s.o.) wird man alle Aufgaben neu erstellen, sondern alte Aufgaben aus früheren Semestern oder anderen Kursen wiederverwenden wollen (unverändert oder als Vorlage für neue Aufgaben). Bevor wir zur kompletten Neuerstellung von Aufgaben kommen, sei ein kurzer Überblick über die Wiederverwendungsmöglichkeiten gegeben. Auch wenn Sie ganz bei Null anfangen und noch keine bestehenden Aufgaben haben, kann es interessant sein, diese Möglichkeiten zu kennen und bei der Aufgabenerstellung zu berücksichtigen (mit dem Ziel, die neu zu erstellenden Aufgaben in Zukunft auf bestimmte Weise wiederverwenden zu können).

Kurs-Klonen

Die einfachste Art ist das „Klonen“ einer kompletten Kursversion für ein neues Semester (in der Regel die Version des Vorsemesters): Beim Anlegen einer neuen Kursversion (Betreuerstartseite / »Spezial« / »Kurs für neues Semester duplizieren«) können Sie auswählen, dass alle Inhalte der zu kopierenden Version (der Kursversion, in welcher Sie die Duplizier-Funktion aufgerufen haben) mit übernommen werden, also auch alle Aufgaben. Nach diesem Kopieren können Sie die Aufgaben natürlich noch anpassen, z.B. umorganisieren, einzelne Aufgaben austauschen oder überarbeiten.

Funktion zum Kurs-Klonen im Betreuer-Interface
Funktion zum Kurs-Klonen im Betreuer-Interface

Aufgaben kopieren

Die Aufgaben-Kopierfunktion kann einzelne Aufgaben einer früheren Kursversion oder auch eines ganz anderen Kurses desselben Veranstalters (vgl. Struktur-Diagramm) in ein Aufgabenheft eines Kurses kopieren. Öffnen Sie dazu die Aufgabenheft-Übersicht des Hefts, in das die Aufgabe importiert werden soll. Dort finden Sie (neben Funktionen wie Löschen oder Neu-Erstellen von Aufgaben) auch einen Import-Button:

Aufgabenheftverwaltung mit Import-Button
Aufgabenheftverwaltung mit Import-Button

Dann können Sie den Quell-Kurs und darin die zu kopierende Aufgabe auswählen. Diese wird am Ende des Aufgabenhefts angefügt, kann aber anschließend auch noch verschoben werden.

Auswahl der zu importierenden Aufgabe
Auswahl der zu importierenden Aufgabe

Fragenpool

Ein noch feinerer Import als der ganzer Aufgaben eines Kurses ist der Import einer Frage, also eines (logischen) Teils einer Aufgabe (vgl. vorhergehenden Abschnitt) in eine andere Aufgabe.

Diese Funktion steht nur in den Aufgabenerstellungsassistenten zur Verfügung! Bei fortgeschrittener Aufgabenerstellung (bei der Sie komplette Aufgabenseiten als Dateien erstellen) können Sie natürlich auch Aufgabendateien bearbeiten und dort Ausschnitte aus anderen Dateien einfügen, aber ein expliziter zentraler Fragenpool für einen Veranstalter im Übungssystem ist nur in den Assistenten möglich, da nur hier das Übungssystem selbst weiß, welche Teile einer Aufgabe jeweils eine Frage bilden.

Sie können den Fragenpool nicht direkt bearbeiten. Vielmehr erstellen Sie zunächst mit einem der Aufgabenerstellungsassistenten eine Aufgabe aus einer oder mehreren Fragen und können von dort einzelne Fragen in den Fragenpool exportieren. Nachdem Sie Fragen im Fragenpool abgelegt haben, können Sie diese in anderen Aufgaben wieder importieren.

Fragenpool im Aufgabenerstellungsassistenten (AB)
Fragenpool im Aufgabenerstellungsassistenten (AB)

Obige Abbildung zeigt den Import einer Frage aus dem Fragenpool innerhalb des Assistenten zur Erstellung automatisch bewerteter Aufgaben (AB). Beachten Sie, dass das Assistenten-Formular zwei Ansichts-Modi besitzt und die Fragenpool-Ansicht zuerst aktiviert werden muss (rechts oben neben der Überschrift »Fragen« unter »Alternative Ansicht«). Sodann erscheinen Import-Buttons zwischen den bestehenden Fragen (also an allen möglichen Einfügestellen) und Export-Buttons in den bestehenden Fragen. Die Abbildung zeigt exemplarisch die Ansicht beim Import, die für den Export ist aber analog, nur mit anderen Aktionen (Exportieren, Unterordner anlegen, Löschen, …).

Im Assistenten für die Erstellung handbewerteter Aufgaben (HB) ist die Bedienung analog. Es ist zu beachten, dass der Fragenpool-Import des HB-Assistenten nur Fragen zum Import anbietet, die auch im HB-Assistenten exportiert wurden (entsprechend auch für den AB-Assistenten). D.h. Sie können keine automatisch bewertete Frage in eine handzubewertende Aufgabe importieren oder umgekehrt.

Abweichendes Webdesign verwenden

Normalerweise wird empfohlen, das aktuelle Standard-Webdesign des Online-Übungssystems zu verwenden (wie es auch in den diversen Screenshots dieses Handbuchs zu sehen ist). In neuen Kursen ist dieses Webdesign für die zentralen Seiten automatisch aktiviert, und die Aufgabenerstellungsassistenten erzeugen per Default auch die Aufgabenseiten, Musterlösungen, Korrekturen in einer Weise, dass deren Inhalte stets in dieses aktuelle Webdesign eingebettet werden. Bei fortgeschrittener Aufgabenerstellung achten Sie darauf, die Variablen $EMBED und $/EMBED in der Aufgabenseite zu verwenden, um die dazwischen stehenden Inhalte automatisch in eine Seitenvorlage im aktuellen Webdesign einzubetten.

Für einige Kursseiten für Studenten (Kursstartseite, Aufgabenübersicht etc.) ist dieses Design in den Kursparametern abschaltbar, ebenso wie in den Aufgabenerstellungsassistenten. Das wird aber nicht empfohlen: Die Option existiert vor allem, weil bestehenden Kursen das neue Design bei dessen Einführung nicht automatisch aufgezwungen werden sollte (falls z.B. Screenshots von den Webseiten im alten Design in Anleitungen an Studenten ausgegeben wurden). Sie dient also in erster Linie der nachträglichen Aktivierung des neuen Designs in älteren Kursen und nicht der Deaktivierung für neue Kurse.

Sollten Sie jedoch vom zentralen Übungssystem-Webdesign abweichen wollen, z.B. um Ihre Aufgaben im Design Ihrer Lehrgebiets-Webseiten anzubieten, so haben Sie dazu folgende Möglichkeiten:

Mehr Details zu diesem Thema finden Sie im gesonderten Handbuch Designvorlagen für Kurse im Online-Übungssystem.

Checkliste

Das Online-Übungssystem bietet eine Checkliste zur Kurseinrichtung. Diese bezieht sich nicht allein auf die Aufgabenerstellung, aber gerade bei Verwendung der fortgeschrittenen Aufgabenerstellung empfiehlt sich auch ein Blick in die Checkliste, spätestens vor Freigabe für Studenten, da diese auf gewisse Probleme hinweisen kann.

Die folgende Abbildung zeigt z.B. den Beginn der Checkliste zu einem Kurs, in dem zwar ein erstes Aufgabenheft angelegt, aber noch keine einzige Aufgabe erstellt wurde.

Checkliste zur Kurseinrichtung
Checkliste zur Kurseinrichtung

Aufgabenerstellung

Voraussetzungen

Voraussetzung zur Aufgabenerstellung ist, dass bereits eine Kursversion im Online-Übungssystem angelegt wurde, in welche die Aufgaben eingefügt werden können, und dass der Autor einen Betreuer-Zugang dazu besitzt.

An Software benötigt der Aufgabenautor in erster Linie einen Webbrowser. Weitere Software wird eigentlich nur für die Erstellung von hochzuladenden Inhalten benötigt: Falls z.B. Abbildungen zu Aufgabenstellungen oder Lösungen hinzugefügt werden sollen, wird ggf. eine Software zur Erstellung dieser Abbildungen benötigt; falls PDF-Formulare zum Einsatz kommen sollen, wird entsprechend ein Authoring-Werkzeug wie Adobe Acrobat Pro benötigt, um diese zu erstellen.

Für die fortgeschrittene Aufgabenerstellung werden grundlegende HTML-Kenntnisse vorausgesetzt, und es empfiehlt sich (auch wenn HTML-Dateien auch online im Webbrowser editierbar sind) der Einsatz eines lokalen Texteditors mit HTML-Syntax-Highlighting. (Von reinen WYSIWYG-HTML-Editoren wird abgeraten.)

Sollen (im Rahmen der fortgeschrittenen Aufgabenerstellung) eigene Vorkorrektur- oder Korrektur-/Bewerter-Module programmiert werden, wird eine entsprechende Programmierumgebung einer Sprache Ihrer Wahl benötigt (z.B. Java) sowie ein Server im FernUni-LAN, der das Modul ausführen kann. (Dazu müssen Sie keine eigene physikalische Maschine betreiben, sondern können sich z.B. auch vom ZMI eine Solaris-Zone bereitstellen lassen.)

Vorbereitungen

Nachdem Sie die Strukturierung ihrer Fragestellungen in Aufgaben und Aufgabenhefte geplant haben, können Sie zunächst die Aufgabenhefte anlegen. Loggen Sie sich dazu in Ihrer Kursumgebung als Betreuer ein und wählen Sie auf der Betreuerstartseite den Menüpunkt »Aufgabenhefte/Aufgaben-Übersicht« (Rubrik »Aufgabenverwaltung«) oder im linken Seitenmenü unter »Einrichtung« den Punkt »Aufgaben«. Sie erhalten eine Übersicht über alle bereits existierenden Aufgabenhefte und deren Aufgaben.

Bei noch leerem Kurs wird Ihnen dort angeboten, ein neues, erstes Heft zu erstellen. Anschließend können Sie die Eigenschaften (i.W. Bearbeitungstermine) des noch leeren Hefts bearbeiten sowie neue Hefte hinzufügen oder Aufgaben zum Heft hinzufügen.

Ein erstes, noch leeres Aufgabenheft wurde erzeugt
Ein erstes, noch leeres Aufgabenheft wurde erzeugt

Um neue Hefte hinzuzufügen, betätigen Sie den Button »Neues Heft anfügen« oben rechts.

Folgende Abbildung zeigt die Aufgabenheft-Ansicht, nachdem einige Hefte und Aufgaben darin erzeugt wurden:

Aufgabenheft-Bearbeitung bei mehreren existierenden Heften und Aufgaben
Aufgabenheft-Bearbeitung bei mehreren existierenden Heften und Aufgaben

Um eine neue Aufgabe zu erstellen, wählen Sie zuerst das Aufgabenheft aus, in dem die Aufgabe eingefügt werden soll. In der »Aufgabenheft bearbeiten«-Ansicht des Ziel-Heftes (vgl. Abbildung oben) betätigen Sie dann den »Neue Aufgabe anfügen«-Button unterhalb der Auflistung der schon vorhandenen Aufgaben. Die neue Aufgabe wird als letzte Aufgabe dem Heft angefügt, kann aber – falls das Heft schon mehrere Aufgaben enthält – über den »Aufgabe verschieben…«-Button noch nachträglich an eine andere Position, also vor andere Aufgaben verschoben werden. Auch kann man sie damit noch nachträglich in ein anderes Aufgabenheft verschieben.

Anmerkung:
Falls Sie Aufgaben wieder löschen möchten, finden Sie auch dazu die entsprechenden Funktionen. Es kann zwar immer nur die letzte Aufgabe eines Hefts direkt gelöscht werden, aber falls Sie eine andere Aufgabe löschen möchten, benutzen Sie zunächst die »Aufgabe verschieben…«-Funktion, um diese ans Ende des Heftes zu verschieben, also zur letzten zu machen. Dann kann sie gelöscht werden.

Nachdem Sie auf »Neue Aufgabe anfügen« geklickt haben, werden Sie gefragt, auf welche Weise Sie die Aufgabe erstellen wollen:

Auswahl des Aufgabeneditors beim Erstellen einer neuen Aufgabe
Auswahl des Aufgabeneditors beim Erstellen einer neuen Aufgabe

Die ersten beiden Punkte starten jeweils eine assistentengestützte Aufgabenerstellung, der dritte lässt Sie direkt eine leere Aufgabe in der fortgeschrittenen Aufgabenerstellung erzeugen. (Sie können auch zuerst ein „Grundgerüst“ einer Aufgabe assistentengestützt erstellen und dann nachträglich zur fortgeschrittenen Aufgabenerstellung wechseln, um die vom Assistenten erzeugte Aufgabe manuell nachzubearbeiten.)

Aufgaben-Benennung

In jedem Fall (egal auf welche Weise Sie eine Aufgabe erzeugen) werden Sie nach einem Namen für die Aufgabe gefragt. Unter diesem Namen wird die Aufgabe später in den verschiedenen Aufgabenübersichten (sei es für Betreuer, Korrektoren oder Studenten) aufgelistet.

Für ein einheitliches Erscheinungsbild solcher Aufgabenübersichten ist es sinnvoll, ein für alle Aufgaben eines Kurses anzuwendendes Namensschema festzulegen.

Wenn Sie Aufgaben(heft)-Nummern in die Namen mit aufnehmen, beachten Sie, dass diese nicht automatisch angepasst werden, falls Sie die Aufgaben später umarrangieren sollten, also deren Reihenfolge im Heft ändern oder Aufgaben aus einem Heft in ein anderes verschieben. In solchen Fällen wären die verschobenen Aufgaben anschließend noch von Hand umzubenennen.

Punkte und Noten

Der Regelfall für Einsendeaufgaben besteht in einer Bewertung der Aufgaben mittels Punkten, Noten werden normalerweise nicht vergeben.

Punkte

Ob zu einer Aufgabe Punkte vergeben werden, legen Sie direkt bei der Aufgabenerstellung fest, dazu sind also keine weiteren Vorbereitungen nötig. Der Vollständigkeit halber sei hier dennoch kurz auf die Möglichkeiten eingegangen:

Sie können zu jeder handbewerteten Aufgabe entscheiden, ob diese vom Korrektor mit Punkten bewertet werden soll, einfach durch Festlegung der in der Aufgabe erreichbaren Punktzahl: Geben Sie dort 0 Punkte (bzw. gar nichts) an, ist die Aufgabe unbewertet.

Bei automatisch bewerteten Aufgaben gibt es zunächst die Unterscheidung anhand der Korrekturzeitpunkts: Bei „normalen“ automatisch bewerteten Einsendeaufgaben erfolgt die Korrektur/Bewertung erst nach der endgültigen „Heftabgabe“, d.h. sobald ein Student seine Einsendung nicht mehr verändern kann11. Diese Aufgaben sind typischerweise mit einer vom Korrekturmodul errechneten Punktzahl bewertet.

Alternativ gibt es Soforttest-Aufgaben, die ihre Bewertung sofort nach Einsendung errechnen und ausgeben. Der Student kann die Aufgabe daraufhin beliebig oft wiederholen, bis er die volle Punkzahl erreicht hat (oder das Bearbeitungsende erreicht wird). Diese Aufgaben gehen standardmäßig nicht mit in die Aufgabenheft-Gesamtwertung ein, d.h. die errechnete Punktzahl wird wirklich nur im Sofortfeedback angezeigt, aber nicht gespeichert. In der Ergebnisübersicht erscheinen solche Korrekturen dann als unbewertet. Auf diese Weise können Sie Soforttestaufgaben und bewertete Einsendeaufgaben zusammen anbieten, und das Gesamtergebnis umfasst nur die Punkte aus den Einsendeaufgaben und wird nicht durch Soforttest-Ergebnisse, bei denen leicht jeder die volle Punkzahl erreichen kann, „verwässert“.

Im Ausnahmefall (z.B. wenn Sie ausschließlich Soforttestaufgaben anbieten wollen) können Sie aber auch einschalten, dass das Soforttestergebnis mit in das Gesamtergebnis einfließen soll, also genauso gespeichert wird wie bei normalen bewerteten Aufgaben. Bei assistentengestützter Aufgabenerstellung (AB) können Sie diese Einstellungen (Soforttest ja/nein, und wenn ja, mit oder ohne Eingang in Gesamtwertung?) direkt über entsprechende Checkboxen im Aufgabeneditor vornehmen. Bei fortgeschrittener Aufgabenerstellung gilt: Ein Vorkorrekturmodul berechnet das Sofortfeedback und erzeugt keine Bewertung, die in das Gesamtergebnis einfließt. Ein Korrektur-/Bewertermodul dagegen wird bei der endgültigen Korrekturerzeugung (Heft-Schließen) ausgeführt und erzeugt eine Bewertung in Punkten. Für Soforttest-Aufgaben, die mit ins Gesamtergebnis einfließen sollen, benötigen Sie daher sowohl ein Vorkorrektur- als auch ein Korrektur-/Bewertermodul, wobei ggf. dasselbe Modul für beide Rollen identisch eingesetzt werden kann.

Noten

Optional können Sie auch Noten vergeben. Dazu ist normalerweise vorgesehen, dass ein gesamtes Aufgabenheft als benotete Arbeit angesehen wird. Die Einstellung zur Benotung finden Sie daher auch in den jeweiligen Aufgabenheft-Einstellungen. Hier können Sie (neben der Standardeinstellung »Keine Benotung«) wählen zwischen Benotung anhand eines Notenschemas oder Einzelbenotung der Aufgaben.

Wählen Sie hier Notenschema-Bewertung aus, dann erfolgt die Bewertung der einzelnen Aufgaben genau wie bei Heften ohne Benotung: Der Korrektor bzw. das Korrekturmodul vergibt ausschließlich eine Punktzahl in einer Korrektur zu einer Aufgabe. Weiterhin legen Sie dann (ebenfalls in den Aufgabenheft-Einstellungen) ein Notenschema fest, das Punkte auf Noten abbildet. Damit das Schema nicht immer wieder angepasst werden muss, wenn sich die erreichbare Gesamtpunktzahl zu einem Heft ändert (z.B. durch Hinzufügen einer Aufgabe oder Anpassung der erreichbaren Punktzahl einer Aufgabe), wird erfolgt keine Zuordnung absoluter erreichter Punkte auf die Noten, sondern die erreichte Rohpunktzahl wird zuerst „normalisiert“, und die resultierende sog. Normalpunktzahl wird anschließend einer Note zugeordnet. Es sind grundsätzlich zu einem Aufgabenheft 0 bis 100 Normalpunkte erreichbar, und im Standardfall entspricht die Normalisierung genau einer Umrechnung der Rohpunkte in Prozentpunkte – das können Sie bei Bedarf aber anpassen.

Die Alternative zum Notenschema ist die Einzelbenotung der Aufgaben. Dies ist derzeit nur für handbewertete Aufgaben verfügbar, Korrekturmodule können keine Einzelnoten vergeben! Ein Korrektor muss nun bei Korrektur einer Einsendung zu einer Aufgabe neben der erreichten Punktzahl auch noch eine erreichte Note eingeben. Die Gesamtbewertung eines Studenten zu einem Aufgabenheft besteht dann aus der Gesamtpunktzahl (Summe aller Aufgaben-Korrekturpunkte) und einer Gesamtnote (Durchschnitt der Einzelnoten).

Es wird empfohlen, die Einzelbenotung nur für Aufgabenhefte mit genau einer Aufgabe zu verwenden, so dass die Einzelnote zur Aufgabe auch direkt die Gesamtnote zum Heft bildet und keine Durchschnittsnote errechnet werden muss. Bei benoteten Heften aus mehreren Aufgaben sollte die Benotung nach Notenschema bevorzugt werden, die – im Gegensatz zur Durschnittsnotenberechnung – „strikte“ Noten mit Nachkommastellen 0, 3 und 7 ermöglicht.

Assistentengestützte Aufgabenerstellung

Viele typische Aufgaben, automatisch oder auch manuell bewertet, lassen sich ganz ohne HTML- oder Programmierkenntnisse relativ einfach über einen Assistenten des Online-Übungssystems im Webbrowser zusammenstellen.

Wählen Sie dazu einen der beiden Assistenten aus:
Der erste Auswahlpunkt in obiger Abbildung startet den »Aufgabenerstellungsassistent (AB)« für Aufgaben mit automatischer Bewertung, der zweite den »Aufgabenerstellungsassistent (HB)« für handbewertete Aufgaben (siehe Manuelle Korrektur und Bewertung).

Aufgabenerstellungsassistent (AB)

Nehmen wir an, Sie haben wie oben beschrieben das Erzeugen einer neuen Aufgabe angestoßen und als Typ »Automatisch bewertete Aufgabe« ausgewählt. Es startet der »Aufgabenerstellungsassistent (AB)« mit einer noch komplett leeren Aufgabenseite:

Noch leere Aufgabe im »Aufgabenerstellungsassistent (AB)«
Noch leere Aufgabe im »Aufgabenerstellungsassistent (AB)«

Überblick über den Aufbau des Assistenten

Geben Sie im Kopf dieser Seite zunächst einen Aufgabennamen ein (siehe Aufgaben-Benennung).

Darunter finden Sie eine Eingabebox für einen einführenden Aufgabentext. Falls Ihre Aufgabenseite mehrere Fragen umfassen soll, können Sie hier einen einleitenden Text formulieren, der den einzelnen Fragen vorangestellt wird. Bei mehreren Fragen zu einem Themengebiet in einer gemeinsamen Aufgabe kann dieser Text z.B. auf das Themengebiet eingehen oder Randbedingungen nennen, die bei allen Fragen zu berücksichtigen sind und nicht in jeder Frage erneut explizit genannt werden sollen. Eine konkrete Fragestellung gehört noch nicht in dieses Feld. Sollen Studenten beispielsweise zunächst einen Text lesen oder ein Bild betrachten und dann mehrere Fragen zu diesem Text bzw. Bild beantworten, so wäre dieser Text bzw. dieses Bild vorzugsweise im einführenden Aufgabentext unterzubringen.

Darauf folgt der (in obiger Abbildung noch leere) Abschnitt »Fragen«. In der Standardansicht können Sie hier nun einzelne Fragen verschiedener Typen zur Aufgabenseite hinzufügen, bestehende Frage umsortieren oder wieder löschen. Über den Button oben rechts können Sie zur alternativen Fragenpool-Ansicht wechseln und damit Fragen aus dem Pool in diese Aufgabenseite einfügen oder hier erstellte Fragen in den Pool exportieren.

Im unteren Teil der Seite finden Sie zunächst den Abschnitt »Gesamtwertung«. Hier können Sie steuern, ob überhaupt eine Gesamtwertung ausgegeben werden soll oder nicht. Bei Aufgaben aus mehreren Fragen wird die Korrektur zu jeder Frage eine Einzelwertung enthalten, die Gesamtwertung gibt dann die insgesamt über alle Fragen erreichten Gesamtpunkte aus. Weiterhin kann eine Gesamtwertung einen von der erreichten Gesamtpunktzahl abhängigen bedingten Kommentar enthalten. Füllen Sie dazu die Tabelle »Kommentar zur Gesamtwertung« aus, sobald die insgesamt in allen Fragen erreichbare Gesamtpunktzahl feststeht. Hier können Sie mehrere Punkteintervalle festlegen und Kommentare dazu schreiben. Ein Student sieht dann immer höchstens einen dieser Kommentare in seiner Korrektur, und zwar den ersten, in dessen Intervall die vom Studenten erreichte Punktzahl liegt. (So lange Ihre Intervalle disjunkt sind, spielt die Reihenfolge keine Rolle.) Beispiel: Falls 100 Punkte erreichbar sind und Sie allen Studenten mit mindestens 90 Punkten einen Kommentar wie „Sehr gut!“ anzeigen wollen, geben Sie in eine der Tabellenzeilen als Intervall 90-100 und den Kommentar dazu ein.

Derartige bedingte Kommentare sind nur für die Gesamtwertung der Aufgabe verfügbar. Zu einzelnen Fragen sind nur konstante Kommentare möglich, die immer (unabhängig von der Wertung) angezeigt werden und z.B. die Lösung erläutern können. Falls Sie also bedingte Kommentare zu einzelnen Fragen benötigen, muss eine Aufgabenseite pro Frage erstellt werden.

Unter »Musterlösung« können Sie zunächst festlegen, ob der Bewerter die ihm bekannten (und der Bewertung zugrunde liegenden) Lösungen dem Studenten verraten soll oder nicht. Gerade bei Selbstkontrollaufgaben kann es z.B. gewollt sein, dass ein Student nicht bereits nach der ersten Einsendung (die noch nicht 100% der Punkte erreichte) die Musterlösung verraten bekommt, sondern nur mitgeteilt bekommt, wieviele Punkte seine Antworten wert waren, so dass er sich in weiteren Einsendungen daran versuchen kann, bessere Ergebnisse zu erzielen.

Weiterhin legen Sie hier fest, ob Sie eine Musterlösungsseite erstellen möchten. (Sobald Sie die Checkbox ankreuzen, wird ein entsprechender Editor für formatierten Text eingeblendet, in dem Sie den Musterlösungstext erstellen.) Eine gesonderte Musterlösungsseite ist bei automatisch bewerteten Aufgaben oft nicht nötig, wenn der Bewerter bereits die richtigen Lösungen nennt (s.o.) und diese im Kommentar zur Einzelwertung vielleicht auch noch erläutert. Aber in gewissen Fällen kann eine ausführlichere Lösungsseite nützlich sein, die vielleicht auch fragenübergreifende Erläuterungen bietet oder Abbildungen enthält.

Darunter finden Sie die Rubrik »Automatische Korrektur und Webdesign«. Hier wählen Sie in erster Linie aus, ob Sie eine Selbsttest-Aufgabe erstellen möchten, die einem Studenten sofort bei Einsendung seiner Lösungen verrät, was er korrekt oder falsch beantwortet hat (und damit natürlich auch die Lösung offenbart), oder ob Sie eine bewertete Einsendearbeit erstellen möchten, die erst nach Einsendeschluss automatisch korrigiert und bewertet wird, damit die Lösungen nicht vorher bekannt werden.

Zu Selbsttestaufgaben wird zwar auch eine Punkte-Bewertung errechnet und in der Auswertung nach Einsendung angezeigt. Jedoch werden die Aufgaben standardmäßig in der Gesamtwertung eines Aufgabenhefts jeweils mit „0 von 0 erreichbaren Punkten“ aufgelistet. Dieser Standardfall ist in der Regel sinnvoll, wenn Sie außer Selbsttestaufgaben auch echte bewertete Einsendeaufgaben anbieten. In diesem Fall gehen nur die Einsendearbeiten in die Gesamtwertung ein, Selbsttestaufgaben, bei denen jeder Student normalerweise spätestens im zweiten Versuch die volle Punktzahl erreichen kann (da ihm bereits bei der ersten Einsendung die Lösung verraten wird) sind somit aus der Wertung, ihre Ergebnisse werden nicht mit denen von Einsendearbeiten „vermischt“.

Im Ausnahmefall jedoch (z.B. wenn Sie ausschließlich Selbstkontrollaufgaben anbieten wollen), können Sie dieses Verhalten beeinflussen, indem Sie die Checkbox »dennoch mit Eingang in die Gesamtwertung« markieren.

Abschließend finden Sie noch eine Option zum Webdesign. Es wird für Übungen der FernUni empfohlen, diese immer aktiviert zu lassen. Auf diese Weise sind alle erzeugten Aufgaben immer im selben Webdesign gehalten wie es standardmäßig vom Online-Übungssystem benutzt wird und auch in obigen Screenshots zu sehen ist. (Vgl. Abweichendes Webdesign verwenden)

Fragen hinzufügen

In der Fragen-Rubrik im Zentrum der Seite fügen Sie nun mindestens eine Frage eines gewünschten Typs ein, ggf. auch mehrere, und konfigurieren darin jeweils die Fragestellung, korrekte Antworten (ggf. mit Erläuterungstext) und erreichbare Punkte.

Insbesondere folgende Fragetypen stehen zur Auswahl:

Die folgenden Abbildungen zeigen exemplarisch ein paar fertig erstellte Fragen (aus Studentensicht):

Einfachauswahl- und Zuordnungs-Fragen in derselben Aufgabenseite
Einfachauswahl- und Zuordnungs-Fragen in derselben Aufgabenseite
Mehrfachauswahl: 3 Antwortmöglichkeiten („wahr“/„falsch“/„keine Antwort“) vs. klassische 2 Antwortmöglichkeiten
Mehrfachauswahl: 3 Antwortmöglichkeiten („wahr“/„falsch“/„keine Antwort“) vs. klassische 2 Antwortmöglichkeiten
Mehrfachauswahl von Bildbereichen
Mehrfachauswahl von Bildbereichen
Bildbereichs-Zuordnungs-Frage
Bildbereichs-Zuordnungs-Frage

Zur Erstellung einer solchen Frage wählen Sie unter »Neue Frage vom Typ hinzufügen« den gewünschten Typ aus und klicken Sie auf den hinzufügen-Button. Es erscheint an dieser Stelle im Editor nun eine entsprechende Eingabemaske.

Allen Fragetypen gemein ist, dass ganz oben ein Fragetitel einzugeben ist, der in der Aufgabenseite als Überschrift über der Frage steht, ein optionaler Fragetext, der die eigentliche Fragestellung enthalten sollte – sofern diese nicht schon allein aus dem Fragetitel eindeutig hervorgeht – sowie am Ende der Maske die Angabe der erreichbaren Punkte und ein optionaler Kommentar, dessen Inhalt nicht in der Aufgabenseite, sondern erst in der Auswertung angezeigt wird (und der die korrekte Lösung erklären kann).

Der Rest einer Fragen-Eingabemaske ist abhängig vom Fragetyp. Zu jeder eingefügten Frage erhalten Sie über das ?-Symbol in der Überschrift Erläuterungen zum Fragetyp und den Eingabemöglichkeiten. Daher werden wir in diesem Handbuch nicht detaillierter auf diese eingehen, sondern abschließend nur ein paar Beispiele zeigen.

Die folgende Abbildung zeigt beispielhaft die Definition der oben abgebildeten Zuordnungsfrage:

Einrichtung einer Zuordnungs-Frage
Einrichtung einer Zuordnungs-Frage

Die Anzahl der einzelnen Tabellenzeilen („Fragen innerhalb der Frage“) und der Spalten (Antwortalternativen) dieser Zuordnungsfrage legen Sie selbst fest: Rechts bzw. unten können Sie jeweils z.B. die Anzahl 2 auswählen und den +-Knopf drücken, um 2 Zeilen bzw. Spalten zur Matrix hinzuzufügen. Die Editoren für Multiple-Choice- oder Begriffs-Fragen sehen ähnlich aus.

In Ausnahmefällen können auch mehrere alternative Lösungen zu einer Frage definiert werden, von denen der Student dann genau eine nennen muss, um die Punkte für die richtige Antwort zu bekommen. Im Fall von Zuordnungsaufgaben könnte dies – als Erweiterung des obigen Beispiels – wie folgt aussehen:

Einrichtung einer Zuordnungs-Frage mit mehreren richtigen Antworten auf eine Frage
Einrichtung einer Zuordnungs-Frage mit mehreren richtigen Antworten auf eine Frage

Bei den Fragetypen mit anklickbaren Bildbereichen (Einfach-/Mehrfachauswahl oder Zuordnung) muss natürlich zuvor ein entsprechendes Bild erstellt und als Kursressource hochgeladen worden sein. Zur Definition der einzelnen Bildbereiche (Rechtecke, Kreise oder Polygone) kann aus dem jeweiligen Fragen-Formular ein Bildbereichs-Editor in einem separaten Fenster geöffnet werden, in dem das Bild ausgewählt, anklickbare Bildbereiche eingezeichnet und den auswählbaren Antwortalternativen zugeordnet werden. Für obigen Beispielfall der Multiple-Choice-Frage mit Bildbereichsauswahl sieht die Bildbereichsdefinition z.B. wie folgt aus:

Bildbereichs-Editor
Bildbereichs-Editor

Aufgabe erzeugen und testen

Um die fertige Aufgabe (oder einen Zwischenstand, den Sie erst einmal ausprobieren und später weiter bearbeiten wollen) zu speichern, betätigen Sie den Button Aufgabe sichern am Ende der Seite. Damit erzeugt der Editor eine entsprechende Aufgabe und erzeugt eine Antwortseite, die in etwa wie folgt aussehen sollte:

Antwortseite nach Aufgabenerzeugung
Antwortseite nach Aufgabenerzeugung

Mit den beiden Tabs links und rechts können Sie zur Nachbearbeitung in den Aufgabenerstellungsassistenten zurückkehren oder zur fortgeschrittenen Aufgabenerstellung wechseln, um z.B. Direktzugriff auf die erzeugten Ressourcen zu bekommen oder Manipulationen vorzunehmen, die über die Fähigkeiten des Assistenten hinausgehen.

Darunter finden Sie Informationen zu den erzeugten Aufgabenressourcen. Im Fall der obigen Abbildung wurde lediglich eine Aufgabenseite ohne Musterlösung erzeugt.

Um die erzeugte Aufgabenstellung „live“ zu sehen, klicken Sie auf »Vorschau Aufgabenseite« ganz oben. Damit wird die fertige Aufgabe zur Probebearbeitung in einem separaten Fenster geöffnet. Sie sehen in diesem Fall (als Aufgabenautor) immer ein leeres Formular, wie Studenten es sehen, wenn sie die Aufgabe das erste Mal öffnen und noch keine Lösungen zur Aufgabe eingesendet haben. (Details wie Brotkrümelpfad am Seitenkopf, Menü an der linken Seite, Überschrift o.ä. können variieren, da Sie nicht als Student, sondern als Betreuer eingeloggt sind.) In diesem Formular können Sie die Aufgabe auch testen – unter der Voraussetzung, dass in Ihrem Kurs ein Teststudent mit Sonderrechten unter dem Benutzernamen 7777777 angemeldet ist.

Auf diese Weise sind zumindest kurze Tests direkt als Betreuer möglich, und es kann schnell und ohne erneute Logins zwischen dieser Testansicht und der Aufgabenerstellung gewechselt werden. Für ausführlichere Tests mit exakten Studenten-Ansichten und Testen der erneuten Bearbeitung einer Aufgabe (wobei beim Wiederaufruf des Aufgabenformulars die zuvor eingesendeten Eingaben wieder ins Formular eingetragen werden und nachbearbeitet werden können, also nicht alles komplett neu ausgefüllt werden muss) empfiehlt sich dagegen das Einloggen in den Studentenzugang mit einem Teststudenten-Account.

Falls Sie auch einen Musterlösungstext geschrieben haben, finden Sie in der Antwortseite auch einen entsprechenden Link »Vorschau Musterlösung«, mit dem Sie analog die erstellte Lösungsseite ansehen können.

Aufgabenerstellungsassistent (HB)

Der Assistent zur Erzeugung handbewerteter Aufgaben sieht ähnlich aus wie der für automatisch bewertete Aufgaben:

Leere Aufgabenseite im »Aufgabenerstellungsassistent (HB)«
Leere Aufgabenseite im »Aufgabenerstellungsassistent (HB)«

Überblick über den Aufbau des Assistenten

Geben Sie auch hier im Kopf dieser Seite zunächst einen Aufgabennamen ein (siehe Aufgaben-Benennung).

Darunter folgt die Rubrik »Aufgabenelemente«, in der der eigentliche Seiteninhalt zusammengestellt wird. Das wird im Anschluss an diesen Überblick erläutert.

Darunter folgt ein Bereich zur Musterlösung. Anders als der Assistent für automatisch bewertete Aufgaben, die i.d.R. schon im Rahmen der Bewertung die korrekte Lösung verraten, erstellt dieser Assistent grundsätzlich eine Musterlösungsseite. Sie können wahlweise nur in dieser Textbox den gesamten Musterlösungstext verfassen oder in den Aufgabenelementen Musterlösungstexte zu den einzelnen Fragen einfügen, die dann automatisch zusammen mit den entsprechenden Fragen-Überschriften in die Musterlösungsseite aufgenommen werden. Neben dieser Untergliederung durch Überschriften hat das auch einen weiteren Vorteil: Falls Sie den Fragenpool verwenden, also einzelne Fragen dort zur Wiederverwendung speichern, werden den Fragen zugeordnete Musterlösungstexte mit im Pool gespeichert und sind wiederverwendbar, während der hier unten im Assistenten einzutragende Musterlösungstext in keinem direkten Bezug zu einer Frage steht und deshalb auch nicht mit in den Fragenpool exportiert werden kann.

Darunter finden Sie die Rubrik »Korrekturmodus«. Wir empfehlen die Aktivierung der In-Browser-Korrektur. Wenn Sie diese einschalten, erhalten Korrektoren bereits automatisch ein Kommentarfeld am Fuß der Korrekturseite (also unerhalb aller zu bewertenden studentischen Eingaben). Weitere Eingabemöglichkeiten für Korrekturkräfte können als Elemente eingefügt werden (s.u.). Außerdem können Sie den Editor-Typ für die Korrektor-Eingabeboxen wählen. Details dazu finden sich in einer gesonderten Dokumentation.

Abschließend finden Sie auch hier eine Option zum Webdesign. Es wird für Übungen der FernUni empfohlen, diese immer aktiviert zu lassen. Auf diese Weise sind alle erzeugten Aufgaben immer im selben Webdesign gehalten wie es standardmäßig vom Online-Übungssystem benutzt wird und auch in obigen Screenshots zu sehen ist. (Vgl. Abweichendes Webdesign verwenden)

Elemente hinzufügen

Ein wesentlicher Unterschied zum AB-Assistenten ist, dass hier keine fertigen Fragetypen existieren und entsprechend die Aufgabenseite nicht direkt aus einer Folge von ganzen Fragen eines bestimmten Typs zusammengestellt wird. Vielmehr werden die Fragen und damit auch die gesamte Aufgabenseite aus einer Folge feinerer Aufgabenelemente zusammengestellt.

Sie müssen dabei nicht immer mit einer ganz leeren Aufgabenseite beginnen: Standardmäßig ist eine neue Aufgabenseite bereits mit drei Elementen gefüllt: einem Aufgabentext-Feld, das die Rolle eines fragenübergreifenden Einleitungstextes einnimmt (wie das Feld »einführender Aufgabentext« im AB-Assistenten), gefolgt von einer Überschrift für eine erste Frage und einem weiteren Aufgabentext-Feld für deren Fragestellung. Natürlich können Sie nicht benötigte Elemente löschen (z.B. falls Sie ohnehin nur eine Frage in der Aufgabenseite unterbringen wollen und keinen einleitenden Text vor dieser Frage benötigen).

Alternativ zu diesem Standard-Vorschlag können Sie (so lange noch keine Aktion ausgeführt wurde) ganz oben auf der Seite auch alternative Seitenaufbau-Vorlagen auswählen und diese als Ausgangspunkt für die Erstellung Ihrer Aufgabenseite nutzen.

Die folgende Abbildung zeigt eine Seite, in die drei Elemente eingefügt wurden: Überschrift, Fragetext und eine Freitext-Eingabebox, in die Studenten ihre Antwort auf die Frage eingeben können – alles noch in Grundeinstellungen.

Drei erste Elemente in Aufgabenseite (HB) eingefügt
Drei erste Elemente in Aufgabenseite (HB) eingefügt

Diese Elemente sind nun noch entsprechend auszufüllen, auch die in einer Frage erreichbare Punktzahl sollte im Überschriften-Element der Frage eingetragen werden. Wenn die Aufgabenseite aus mehreren Fragen bestehen soll, sind entsprechend mehrere Elemente des Typs »Überschrift: Neue Frage beginnen« einzufügen. Die Fragen werden dann automatisch mit Kleinbuchstaben aufgezählt, also »a)«, »b)«, »c)« etc.

Abschließend ist – normalerweise am Fuß der Seite – ein Element des Typs »Einsendeknopf« einzufügen, mit dem Studenten die Eingaben abschicken können (außer bei Aufgaben mit ausschließlich Dateiupload-Elementen, die jeweils ihren eigenen Hochladen-Button mitbringen). So lange Sie den Empfehlungen aus Abschnitt Untergliederung von Aufgaben in sog. Teilaufgaben folgen, belassen Sie es bei genau einem Einsendeknopf.

Die nachfolgende Abbildung zeigt das Auswahlmenü der Elementarten, die in die Aufgabenseite eingefügt werden können:

Auswahl einfügbarer Aufgabenelemente
Auswahl einfügbarer Aufgabenelemente

Sie sehen darin, dass die Elemente in drei Kategorien aufgeteilt sind:

Haben Sie z.B. in einer Frage eine Folge von Überschrift, Aufgabentext, Abbildung, Freitext-Eingabebox für Studenten, Musterlösungstext und Korrektorkommentar-Eingabebox stehen, so sieht der Student im Aufgabenformular Überschrift, Aufgabentext, Abbildung und die Freitext-Eingabebox, in die er seine Lösung eingibt. In der Musterlösungsseite steht später dieselbe Überschrift gefolgt vom Musterlösungstext. In der Korrekturseite steht die Überschrift gefolgt von der Eingabe des Studenten aus der Freitext-Eingabebox, worauf der Korrektorkommentar folgt. Der Korrektor sieht hier die Korrektorkommentar-Eingabebox, in die er seinen Kommentar schreibt, der Student sieht später (nach Freigabe der Korrektur) an derselben Stelle in roter Schrift den Text, den der Korrektor eingegeben hat.

Falls Sie Aufgabenstellungen und Musterlösungen bereits als PDF-Dateien vorliegen haben und im Übungssystem lediglich eine Abgabemöglichkeit für die Lösungen (z.B. als Texteingabe oder Dateieinsendung) schaffen möchten, so sieht der typische Aufbau einer Frage wie folgt aus: Überschrift, Link zu Aufgabenstellungsdokument, Link zu Musterlösungsdokument, Datei-Upload oder Freitext-Eingabebox (je nach gewünschter Eingabeart der Lösung). Dafür gibt es auch bereits eine fertige Seitenaufbau-Vorlage zur Auswahl (s.o.). In diesen Fällen laden Sie Ihre PDF-Dokumente als Kursressourcen hoch (und zwar als getaktete Kursressourcen, vgl. Taktung) und wählen Sie diese in den entsprechenden Aufgabenelementen aus, um die Verknüpfung zur Aufgabenseite herzustellen.

Wie beim Assistenten für automatisch bewertete Aufgaben können Sie auch hier zu jedem eingefügten Element über das ?-Symbol eine Online-Hilfe einblenden, die den Zweck der Elementart sowie die Konfigurationsmöglichkeiten näher erläutert. Daher werden wir an dieser Stelle auf eine ausführlichere Erläuterung verzichten.

Zerlegung in Teilaufgaben

Im Grundlagen-Kapitel wurde die technische Unterteilung einer Aufgabenseite in sog. Teilaufgaben angesprochen, sowie eine Faustregel für aus unserer Sicht optimalen Einsatz von Teilaufgaben gegeben.

Dieser Assistent legt für jedes Dateiupload-Element bereits automatisch – konform zur besagten Faustregel – immer eine eigene Teilaufgabe an, mit je einem eigenen Upload-Button pro Dateiauswahlfeld. Sofern Sie (in Aufgabenseiten, die nicht ausschließlich File-Uploads entgegennehmen) genau ein Element der Art »Einsendeknopf« einfügen, sendet dieser auch die Eingaben zu allen Nicht-Fileupload-Eingabefeldern zusammen (also als eine Teilaufgabe) ein, wie in der Faustregel empfohlen.

Sie haben jedoch auch die Möglichkeit, mehrere »Einsendeknopf«-Elemente für verschiedene Fragen zu erzeugen, und somit die Eingabefelder tatsächlich auch auf mehrere Teilaufgaben aufzuteilen. Die Einsendeknöpfe werden dann automatisch entsprechend beschriftet (z.B.: »Eingaben zu b) einsenden«, wobei »b)« eine Frage innerhalb der Aufgabenseite bezeichnet).

Aufgabe erzeugen und testen

An dieser Stelle sei auf den entsprechenden Abschnitt zum AB-Assistenten verwiesen, da sich keine nennenswerten Unterschiede ergeben.

Einrichtung für rein dateibasierte Korrektur

Falls Sie (für alle Aufgaben des Kurses) die rein dateibasierte Korrektur nutzen wollen,

Falls Sie die eigentlichen Aufgabenstellungen nicht in der Aufgaben-Webseite anzeigen wollen, sondern als PDF-Dateien vorliegen haben und diese zum Download anbieten wollen, können Sie jeweils eine relativ generische Aufgabenseite erzeugen, die im Wesentlichen aus einem Link zur PDF-Datei mit der Aufgabenstellung und einer Abgabemöglichkeit für die studentischen Lösungen besteht.

Dabei kann für jede Aufgabe ein separates Aufgaben-PDF existieren, oder Sie können ein ganzes „PDF-Aufgabenheft“ mit allen Aufgaben zur Kurseinheit / zum Übungssystem-Aufgabenheft anbieten.

Die PDF-Dateien könnten prinzipiell in einer anderen Plattform wie LVU oder Moodle zum Download stehen und vom Übungssystem nur verlinkt werden, es empfiehlt sich aber aus Wartbarkeitsgründen13 die Ablage direkt im Online-Übungssystem! Diese erfolgt durch Hochladen der Aufgaben-PDF-Dateien als Kursressourcen. Damit diese Dateien auch nur im Bearbeitungszeitraum abrufbar („getaktet“) sind, ist eine Namenskonvention zu beachten, Details dazu finden Sie auf der Hilfeseite, die von der Seite zum Hochladen von Kursressourcen unter dem Link »Weiterführende Informationen zu Standard- und Nicht-Standard-Kursressourcen, Zugriffsschutz, Taktung, Einbindung in HTML-Seiten etc.« erreichbar ist.

Eine PDF-Datei mit allen Aufgaben zum Aufgabenheft Nr. 1 benennen Sie z.B. mit aufgaben1.pdf eine PDF-Datei allein mit der Aufgabenstellung zur Aufgabe Nr. 3 im Aufgabenheft Nr 2 bennen Sie mit aufgabe2.1.pdf.

Link in Aufgabenseite: Wenn Sie Aufgabendateien nach diesem Namensschema in den Kursressourcen hochgeladen haben, können Sie im Aufgabenerstellungsassistenten ein Element des Typs »Link zu Aufgabenstellungsdokument« einfügen und dort die Datei auswählen. (Erscheint Ihre Datei nicht in der Auswahl, obwohl sie als Kursressource hochgeladen wurde, ist sie nicht korrekt nach obigem Namensschema benannt.)

Link in Aufgabenübersicht: Falls Sie eine einzige PDF-Datei pro Aufgabenheft (aufgaben1.pdf) verwenden, können zusätzlich in der Aufgabenübersichtstabelle (Studenten-Startseite) – neben den Links zu den einzelnen Aufgabenformularen mit Abgabemöglichkeit – auch einen Direkt-Downloadlink zur Aufgabenheft-PDF einblenden lassen. Aktivieren Sie dazu in den Kursparametern (siehe Betreuermenü) unter »PDF-Aufgaben und -Musterlösungen« die entsprechende Checkbox.

Anmerkungen:

Fortgeschrittene Aufgabenerstellung

In der fortgeschrittenen Aufgabenerstellung haben Sie die größtmögliche Freiheit der Aufgabengestaltung, benötigen jedoch ungleich mehr Kenntnisse – insbesondere in der Webseiten-Beschreibungssprache HTML, ggf. darüber hinaus Kenntnisse in CSS oder JavaScript. Falls Sie sogar eigene Vorkorrektur- oder Bewertermodule schreiben wollen, werden entsprechende Programmierkenntnisse in der für die Realisierung gewählten Sprache benötigt sowie ggf. (falls Sie nicht das von uns bereitgestellte Java-Framework zur Korrekturmodul-Entwicklung verwenden) grundlegende Kenntnisse im Programmieren von SOAP-Webservices.

Eine Aufgabeneinrichtung im Online-Übungssystem besteht in erster Linie aus einer Menge von HTML-Dateien, den im Grundlagen-Kapitel bereits angesprochenen Standard-Kursressourcen, die im nachfolgenden Abschnitt genauer vorgestellt werden sollen. Darüber hinaus sind noch ein paar Einstellungen wie insbesondere der Aufgabenname, erreichbare Punktzahl, Korrekturart und ggf. Zuordnung von (Vor‑)Korrekturmodulen samt deren Konfiguration vorzunehmen. Darauf wird anschließend im Rahmen der Beschreibung des Aufgabenerstellungsprozesses eingegangen.

Die Standard-Kursressourcen zu einer Aufgabe

Zur y-ten Aufgabe im x-ten Aufgabenheft gehören die folgenden Standard-Kursressourcen:

Dateiname Inhalt Pflicht?
aufgabex.y.html Aufgabenstellung und -Formular Ja
quittungx.y.a.html Einsendebestätigungsseite für Teilaufgabe A Ja (eine Datei pro Teilaufgabe)
korrekturx.y.html Korrekturseitenvorlage Ja
musterx.y.html Musterlösungstext zur Aufgabe Nein, aber für handbewertete Aufgaben empfohlen
hinweisex.y.html Hinweise für Korrekturkräfte Nein
antwortstatistikx.y.xml Einrichtung einer Antworthäufigkeits-Statistik Nein

Der jeweilige Einsatzzweck der einzelnen Dateien sei an folgendem Szenario verdeutlicht:

Erstellung einer neuen Aufgabe

Die Aufgabenerstellung besteht nun also in erster Linie in der Erstellung der oben genannten Kursressourcen und abschließend oder „zwischendurch“ der Speicherung der Einstellungen zur Aufgabe. Es gibt verschiedene Möglichkeiten, bei der Erstellung neuer Aufgaben vorzugehen, insbesondere:

  1. Ein Extrem: Offline-Erstellung der Standard-Kursressourcen-Dateien mit einem beliebigen Texteditor Ihrer Wahl und Upload einer ZIP-Datei mit allen Kursressourcen zu einer oder mehreren Aufgaben ins Online-Übungssystem. Das Online-Übungssystem erkennt Standard-Kursressourcen im Upload und erzeugt bei Bedarf die entsprechenden Datenbankeinträge für das Aufgabenheft (falls es noch nicht existiert) und die Aufgabe17, d.h. es ist nicht unbedingt nötig, vor dem Upload das Aufgabenheft und in der Aufgabenheft-Verwaltung erst eine neue Aufgabe anzulegen. Nach dem Upload ist dann die jeweilige erzeugte Aufgabe aber noch nachzubearbeiten, um alle benötigten Einstellungen wie Name, Punkte, Korrekturmodus etc. einzustellen. Auch die (im Folgenden noch beschriebene) Erzeugung der Teilaufgaben und Eingabefelder muss noch angestoßen werden.
  2. Ein anderes Extrem: Sie erstellen die Aufgabenressourcen nicht von Grund auf selbst, sondern verwenden zunächst einen der oben beschriebenen Aufgabenerstellungsassistenten. Auch falls Sie die Aufgaben damit nicht exakt so erstellen können, wie Sie sie endgültig haben wollen, können Sie damit eine erste Version erstellen und diese anschließend in der fortgeschrittenen Aufgabenerstellung nachbearbeiten – also z.B. die generierten HTML-Ressourcen abändern, nachträglich ein Vorkorrekturmodul hinzufügen etc.
  3. Der „normale“ Weg liegt dazwischen: Sie erstellen die Aufgabenressourcen direkt selbst, aber „online“. Sie erzeugen ggf. ein neues Aufgabenheft, dazu eine Aufgabe, konfigurieren diese und lassen sich dabei Kursressourcen generieren, die bereits einen gewissen Rahmen enthalten, aber noch um die eigentlichen Inhalte ergänzt werden müssen. Das Bearbeiten kann ebenfalls online erfolgen, das empfiehlt sich aber im Wesentlichen später für kleinere Korrekturen. Umfangreiche Arbeiten an HTML-Dateien sind im Zweifel doch besser mit einem lokalen Editor-Programm vorzunehmen – wozu die erzeugten Ressourcen heruntergeladen, bearbeitet und wieder hochgeladen werden können.

Die nachfolgenden Abschnitte beschreiben die dritte Möglichkeit genauer und erklären dabei die verschiedenen Konfigurationsmaßnahmen und den Aufbau der Standard-Kursressourcen. Die Ausführungen lassen sich aber auch auf die ersten beiden Varianten übertragen und sind natürlich ebenfalls beim Bearbeiten existierender Aufgaben als Referenz nützlich.

Wir gehen also im Rest dieses Kapitels davon aus, dass – wie oben unter Vorbereitungen beschrieben – ein Aufgabenheft angelegt, diesem eine neue Aufgabe hinzugefügt und dann an Stelle eines der Aufgabenerstellungsassistenten direkt die fortgeschrittene Aufgabenerstellung ausgewählt wurde. Sie sehen dann eine Seite wie die Folgende:

Neu erzeugte Aufgabe in fortgeschrittener Aufgabenerstellung
Neu erzeugte Aufgabe in fortgeschrittener Aufgabenerstellung

Als Aufgabenname wird Aufgabe y vorgeschlagen, wobei y für die Nummer der Aufgabe (innerhalb ihres Aufgabenhefts) steht. Wollen Sie Ihre Aufgaben anders benennen, können Sie oben einen anderen Namen eintragen und speichern.

Aufgabenformular erstellen

Nach dem Erstellen und Benennen der Aufgabe ist der wichtigste Schritt die Erstellung der Aufgabenseite (aufgabex.y.html). Sie könnten zwar eine solche HTML-Datei komplett extern erstellen und hochladen, das Übungssystem bietet Ihnen hier aber die Generierung einer Seitenvorlage an, die Sie anschließend nur noch mit Inhalten füllen müssen.

Generieren und Bearbeiten einer Seitenvorlage

Stellen Sie dazu zunächst unter »Aufgabenstellung als externe Datei?« ein, ob Sie vorhaben, die Aufgabenstellung direkt in die HTML-Seite zu schreiben oder ob Sie lieber eine Datei verlinken möchten. Im letzteren Fall wird bereits ein solcher Link in die zu generierende HTML-Datei eingefügt, aber natürlich muss die entsprechende Datei dann noch erstellt und als Kursressource hochgeladen werden.

Falls Sie unter »Studentenlösung als Datei-Upload?« Nein auswählen, wird das Aufgabenformular für reine Texteingaben optimiert. Falls in der Aufgabe mindestens ein Datei-Upload möglich sein soll, sollten Sie hier Ja auswählen. Ja bewirkt die Erzeugung eines Formulars für Multipart-Submit, welches Datei-Uploads unterstützt, aber auch normalen Text-Inhalt einsenden kann (siehe Abschnitt zum form-Tag).

Unter »Anzahl Teilaufgaben« können Sie vorgeben, in wie viele „technische“ Teilaufgaben Sie Ihre Aufgabe zerlegen wollen (siehe obige Ausführungen zu diesem Thema). Für keine Zerlegung in mehrere Teilaufgaben können Sie 0 eintragen – technisch existiert dann genau eine Teilaufgabe A, die allein die gesamte Aufgabe bildet.

Per »Neue Aufgabenseite generieren und Teilaufgaben neu anlegen!« erzeugen Sie die Seitenvorlage.

Im Ergebnis sieht der Aufgabeneditor dann z.B. wie folgt aus:

Die Ressource `aufgabe1.1.html` wurde erzeugt (ohne Teilaufgaben)
Die Ressource aufgabe1.1.html wurde erzeugt (ohne Teilaufgaben)

Man sieht, dass nun eine aufgabe1.1.html-Ressource existiert. Die beiden nachfolgenden Abschnitte »Eigenschaften der Aufgabe« und »Einsendebestätigung („Quittung“)« werden in dieser Form nur angezeigt, falls die Aufgabe nicht aus mehreren Teilaufgaben besteht. Andernfalls gibt es dort einen Block pro Teilaufgabe, der jeweils dieselben Inhalte (teilaufgabenspezifische Eigenschaften und Quittung) aufweist.

Das erste Icon, das mit »aufgabe1.1.html« beschriftet ist, öffnet die Aufgabenressource in ihrer „Rohform“ direkt im Browser. Mit einer Browser-Editor-Suite wie Mozilla SeaMonkey ist damit auch eine direkte Bearbeitung der Ressource möglich: SeaMonkey kann die Ressource vom Browser direkt in den Editor („Composer“) laden und der kann seine Änderungen (per HTTP PUT) direkt wieder ans Übungssystem senden. Das ist aber nicht mehr die empfohlene Art der Aufgabenbearbeitung.

Über das zweite Icon (»online bearbeiten«) können Sie die Kursressource direkt in einem In-Browser-Editor öffnen. Dabei haben Sie die Wahl zwischen einem reinen HTML-Quelltext-Editor und einem WYSIWYG-Editor. Letzterer ist allerdings zumindest für die Aufgabenformular-Ressource nur bedingt geeignet, da er keine HTML-Formulare bearbeiten kann. Er eignet sich z.B. für kleinere Korrekturen an einem schon existierenden Aufgabentext, aber nicht zur kompletten Erstellung des Aufgabenformulars. Der HTML-Quelltext-Editor dagegen ist durchaus geeignet, das Aufgabenformular zu erstellen, bietet aber mangels Features wie Syntax-Highlighting, Auto-Completion, Auto-Tabbing oder Markup-Validation doch deutlich weniger Komfort als ein dedizierter Offline-HTML-Editor.

Empfohlen für umfangreichere Arbeiten am HTML-Code der Aufgabenseite (insbesondere die Neuerstellung komplexer Aufgabenformulare) wird daher der Download des HTMLs und eine Offline-Bearbeitung mit einem dedizierten Editor. Der Download ist wiederum über den ersten Link »aufgabe1.1.html« möglich (z.B. durch Rechtsklick auf den Link / das Icon und Auswahl des browserabhängigen Download-Menüpunkts). Alternativ kann eine ZIP-Datei mit allen Kursressourcen in der Kursressourcen-Verwaltung heruntergeladen werden. Die fertige Datei laden Sie über die »Kursressource-Upload«-Funktion wieder hoch.

Der HTML-Quelltext einer so generierten Ressource kann z.B. wie folgt aussehen (hier: keine Teilaufgaben, keine Dateieinsendungen):

<html>
<head>
  <title>&Uuml;bungen zu "$Kursname", Aufgabe $AufgabenheftNr.$AufgabenNr</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
  <div style="background-color:#ccc; padding: 0.2em">
    Kurs $KursNr, &bdquo;$Kursname&ldquo;, $Versionsname<br>
    Aufgabenheft $AufgabenheftNr, Aufgabe $AufgabenNr
  </div>
  <h1>$Aufgabenname $MaximalPunkteUeberschrift</h1>
  $EMBED
  <form method="POST"
   action="$WebAssignServer/$Veranstaltername/Einsendung/$KursNr/$VersionsNr/$AufgabenheftNr/$AufgabenNr">
    <h2>Aufgabe 1 )</h2>
    <p>Hier die Aufgabenstellung einf&uuml;gen</p>
    <h2>L&ouml;sung 1 )</h2>
    <textarea type="text" name="FeldA1" rows="35" cols="75"> </textarea><br>
    <input type="submit" name="einsendenA"  value="Lösung $AufgabenNr einsenden">
  </form>
  $/EMBED
</body>
</html>

An den generierten Überschriften etc. können Sie feilen, Ihren Aufgabentext z.B. im dafür vorgesehenen Absatz einfügen und das derzeit aus genau einer Textarea bestehende Eingabeformular beliebig anpassen, indem Sie die Textarea ersetzen oder weitere Formularelemente hinzufügen. Das ist weitgehend „gewöhnliche“ HTML-Bearbeitung. Entsprechende Kenntnisse in HTML, CSS und ggf. (bei Bedarf) JavaScript setzen wir bei der fortgeschrittenen Aufgabenerstellung voraus (s.o.).

In den folgenden Abschnitten werden lediglich die Übungssystem-spezifischen Besonderheiten dokumentiert.

Insbesondere nach der Bearbeitung der aufgabe1.1.html-Datei ist das dritte Icon (»Vorschau«) nützlich. Während das erste Icon (»aufgabe1.1.html«) Ihnen die „Rohfassung“ der Seite zur Ansicht und Bearbeitung präsentiert, sehen Sie unter »Vorschau« die „Live-Fassung“ der Seite (ähnlich wie ein Student): Alle Variablen (s.u.) werden durch konkrete Werte ersetzt, und in der Vorschau sind Einsendungen zum Testen der Aufgabe möglich (sofern ein Teststudent namens 7777777 zum Kurs angemeldet ist, und sofern bereits eine Quittungsseite erstellt wurde, s.u.).

Encoding

Sie arbeiten hier mit Textdateien, die Sie auch extern bearbeiten und wieder hochladen können, und Textdateien können auf verschiedene Weise kodiert sein. Das Online-Übungssystem ist mittlerweile relativ tolerant und versucht, das Encoding Ihrer Seiten automatisch zu erkennen. Auf der sicheren Seite sind Sie, wenn Sie gebräuchliche Charsets wie UTF-8, ISO-8859-1, Windows-1252 oder ähnliche verwenden und deren Gebrauch im HTML-Kopf deklarieren. Erkannt werden dabei sowohl die „alten“ HTTP-Header-Entsprechungen in Meta-Tags der Art:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

als auch HTML-5-Metatags der folgenden Art:

<meta charset="utf-8">

Im Falle von X(HT)ML-Dateien wird auch das encoding-Attribut der XML-Deklaration unterstützt:

<?xml version="1.0" encoding="UTF-8"?>

Falls Sie kein Charset deklarieren, versucht das Übungssystem, dieses zu erraten, aber es kann natürlich nicht garantiert werden, dass das immer korrekt funktioniert. Sofern Sie ausschließlich US-ASCII-Zeichen verwenden und alle Sonderzeichen durch HTML-Entitäten (z.B. &auml; statt ä) kodieren, kann ausnahmsweise auf eine Deklaration verzichtet werden – empfohlen wird das aber ausdrücklich nicht.

(Siehe auch: Unicode-Support und dynamische Charset-Erkennung)

TeX-Formelsatz, Quelltext-Syntax-Highlighting

Sie können in den HTML-Texten TeX-Formeln mit Hilfe einer bestimmten Syntax einbinden, außerdem können unter gewissen Bedingungen auch Studenten TeX-Formeln in ihren Lösungen verwenden. Siehe dazu das gesonderte Handbuch zum TeX-Formelsatz im Online-Übungssystem.

Falls Sie Aufgaben zu Programmierkursen anbieten, können Sie ein automatisches Syntax-Highlighting verwenden – sowohl für Quelltextauszüge in den Aufgabenstellungen als auch zur Formatierung von Quelltext-Einsendung der Studenten in Quittungen und Korrekturen. Setzen Sie Code dazu in HTML-code-Elemente innerhalb von pre-Elementen. Details finden Sie im Handbuch zu WYSIWYG-Editoren, In-Browser-Korrektur und Syntax-Highlighting.

Kommentare

HTML-Dateien können ja bekanntlich Kommentare der Form

<!-- Dies ist ein Kommentar. -->

enthalten. Falls Sie derartige Kommentare im Aufgabenformular einbinden, werden diese jedoch mit an den Browser des Studenten gesendet. Der Student sieht sie im Normalfall nicht, da sie nicht in der gerenderten Webseite angezeigt werden, kann sie aber durch Umschalten in die HTML-Quellcode-Ansicht jederzeit einsehen.

Falls Sie interne Kommentare zu bestimmten Dokumentationszwecken in den Aufgabenformularen speichern wollen, die Studenten nicht sehen sollen, verwenden Sie die folgende Syntax:

<!--| Dies ist ein „privater“ Kommentar, der nicht an den Browser gesendet wird. |-->

Das Online-Übungssystem erkennt die Pipe-Symbole (|) an den Kommentar-Klammern und filtert diese Tags in der „Live-Ansicht“ der Aufgabenstellung aus, sendet sie also nicht an den Browser des Studenten weiter. Nur in der Rohfassung für Aufgabenautoren sind diese Kommentare sichtbar. (Das gilt nicht nur für die Aufgabenformulare aufgabex.y.html, sondern auch für die anderen im Folgenden noch zu erstellenden Standard-Kursressourcen.)

Kommentare der Aufgabenerstellungsassistenten

Falls Sie eine per Aufgabenerstellungsassistent generierte Aufgabenressource öffnen, finden Sie darin übrigens einige solcher Kommentare. Das folgende Listing zeigt z.B. einen Ausschnitt aus einer mit dem HB-Assistenten erzeugten Aufgaben-HTML:

<!--|EL:UEBERSCHRIFT|-->
<h2>a) Kochendes Wasser (10 Punkte)</h2>
<!--|/EL:UEBERSCHRIFT|-->

<!--|EL:AUFGABENTEXT|-->
<p>Nehmen Sie Stellung zu folgender Behauptung:</p>
<p><em>&bdquo;Wasser kocht/verdampft grunds&auml;tzlich erst ab einer Temperatur von 100&deg;C.&ldquo;</em></p>
<!--|/EL:AUFGABENTEXT|-->

Derartige Kommentare sind Markierungen der Aufgabenerstellungsassistenten, die diese benötigen, um eine existierende Aufgaben-HTML-Seite wieder im Assistenten öffnen und nachbearbeiten zu können. Sofern Sie die so erzeugte Aufgabendatei in der fortgeschrittenen Aufgabenerstellung in einer Weise verändern wollen, die ohnehin nicht mit dem Assistenten erstellbar gewesen wäre, so dass auch eine spätere Bearbeitung Ihrer geänderten Aufgabendatei im Assistenten nicht möglich ist, so können Sie diese Kommentare getrost löschen. Allgemein ist zu sagen, dass manuelle Änderungen an assistentengenerierten Ressourcen bei späterer Nachbearbeitung im Assistenten und somit Neugenerierung der Ressourcen durch die Assistenten verloren gehen können. Das Übungssystem warnt daher auch bei jedem Versuch, eine Aufgabe im Assistenten zu bearbeiten, nachdem sie bereits in der fortgeschrittenen Aufgabenerstellung bearbeitet worden ist.

Variablen des Online-Übungssystems

Betrachten wir noch einmal das oben stehende HTML-Listing, so fallen die vielen Schlüsselwörter auf, die durch $ eingeleitet werden. Dabei handelt es sich um Variablen, die bei Auslieferung der Seite an den Endnutzer vom Online-Übungssystem dynamisch durch konkrete Werte ersetzt werden.

Die Variable $Aufgabenname z.B. wird ersetzt durch den Namen der Aufgabe, den Sie in der Aufgabeneinrichtung festlegen (s.o.). Wenn Sie diesen in die Seite einsetzen wollen, ist es immer ratsam, die Variable zu verwenden, statt den Namen redundant auch noch in der HTML-Datei einzusetzen – was doppelten Änderungsaufwand im Falle einer späteren Umbenennung zur Folge hätte.

Auch die Aufgabennummer sollte nur per Variable ($AufgabenNr) referenziert werden, denn falls Sie die Aufgabe später noch verschieben sollten (die Reihenfolge der Aufgaben in einem Heft ändern oder Aufgaben in ein anderes Heft verschieben), wodurch sich die Nummer der Aufgabe ändert, wäre es lästig und fehleranfällig, danach auch die Aufgaben-HTML-Datei wieder bearbeiten und darin jedes Vorkommen der Nummer korrigieren zu müssen.

Falls Sie URLs angeben (z.B. Downloadlinks zu PDFs oder Referenzen auf Bilddateien aus den Kursressourcen), so kommen normalerweise ebenfalls Variablen zum Einsatz. Der einzige URL in obigem Quellcode ist der obligatorische URL, an welche die Formulareingaben zu senden sind, also das action-Attribut des form-Tags. Dieser besteht hier – abgesehen vom Servicenamen Einsendung und den Slashes (/) – praktisch ausschließlich aus Variablen. Das sollte immer so beibehalten (und für andere Links ebenso gehalten) werden, denn auf diese Weise ist sichergestellt, dass die Einsendung bzw. das Nachladen eines Bildes oder Links etc. immer funktionieren, auch wenn die Aufgabe verschoben wird oder der Kurs in einem späteren Semester erneut angeboten wird, ohne dass die HTML-Ressourcen angepasst werden müssen.

Setzen Sie allgemein nie konkrete Werte wie Kursnummer, Aufgabennummer, Semesterkennung oder Ähnliches ein, für die es auch Variablen gibt!

Im Folgenden werden die wichtigsten Variablen vorgestellt, die im Rahmen von Aufgabenressourcen definiert sind. (Die Groß-/Kleinschreibung muss genau eingehalten werden!)

System
Variable Bedeutung
$WebAssignServer Derzeit ersetzt durch https://online-uebungssystem.fernuni-hagen.de, wird aber auch funktionieren, falls sich dieser Servername in Zukunft einmal ändern sollte.
Veranstalter (Lehrgebiet oder Einrichtung)
Variable Bedeutung Beispiel
$Veranstaltername Kennung des Veranstalters, insb. in URLs verwendet six
$Lehrgebiet Anzeigename des Veranstalters (des Lehrgebiets oder der Einrichtung, die den Kurs anbietet) Software Engineering
$Universitaet Name der Universität des Veranstalters FernUniversität in Hagen
$Professor Name des Lehrgebietsinhabers o.ä. Prof. Dr. Six
Kurs(version)
Variable Bedeutung Beispiel
$KursNr Fünfstellige Kursnummer, auch in URLs verwendet 01612
$Kursname Name des Kurses Konzepte imperativer Programmierung
$VersionsNr Kennung der Kursversion in Form des Semesters, in der diese angeboten wird. Insb. in URLs verwendet. Beginnt mit WS oder SS für Winter- bzw. Sommersemester, gefolgt von zweistelliger Jahreszahl.  WS09
$Versionsname Name der Kursversion / des Semesters ausgeschrieben Wintersemester 2009/2010
$BetreuerEmail In den Kursparametern hinterlegte E-Mail-Adresse der Kursbetreuung kurs1612@fernuni-hagen.de
Aufgabe
Variable Bedeutung Beispiel(e)
$AufgabenheftNr Nummer des Aufgabenhefts 1
$AufgabenNr Nummer der Aufgabe (innerhalb eines Aufgabenhefts) 2
$Aufgabenname Der von Ihnen vergebene Aufgabenname »Aufgabe 2« oder »Kontrollstrukturen«
$MaximalPunkte In der Aufgabe erreichbare Punktzahl »50« oder »0«
$MaximalPunkteUeberschrift Text mit erreichbarer Punktzahl, wie er einer Aufgabenüberschrift angehängt werden kann – leer, falls keine Punkte erreichbar sind »(50 Punkte)« oder leere Ausgabe bei 0 erreichbaren Punkten
Webdesign / Embedding

Da Sie hier HTML-Dateien bearbeiten, ist es zwar möglich, die gesamte Webseite für die Aufgabe selbst zu gestalten, empfohlen ist jedoch, dies nicht pro Datei zu tun, sondern in den einzelnen Aufgabendateien im Wesentlichen die eigentlichen Aufgabeninhalte einzufügen. Diese Inhalte werden dann im Normalfall ins Standard-Webdesign des Online-Übungssystems eingebettet, Sie können aber auch abweichende Seitenvorlagen erstellen, siehe: Abweichendes Webdesign verwenden. In der Aufgaben-HTML-Datei werden diese Inhalte nur mit einem minimalen HTML-Gerüst versehen, das eine Fallback-Darstellung für den Fehlerfall bereitstellt.

Die eigentlichen Inhalte werden mit einem speziellen Variablenpaar markiert:

Variable Bedeutung
$EMBED Beginn des eigentlichen Inhalts, der in eine Seitenvorlage eingebettet werden soll.
$/EMBED Ende des einzubettenden Inhalts.

Beide Variablen müssen im body des HTMLs stehen.

Neben dem so markierten Body-Ausschnitt werden auch noch Teile des heads wie der title oder CSS-Links übernommen. Die Tags <form …> und </form> dürfen auch außerhalb des EMBED-Blocks stehen, sofern es nicht mehrere von ihnen gibt. Details zu diesem Verfahren werden in einem gesonderten Handbuch erläutert.

Noch ein Hinweis: In den erzeugten Vorlageseiten, deren Quelltexte oben auch teilweise abgedruckt sind, folgt die $EMBED-Variable meist auf eine h1-Überschrift. Das hat folgenden Grund: Die Standard-Seitenlayout-Vorlagen des Online-Übungssystems legen bereits selbst eine Überschrift h1 fest, unterhalb welcher der mit $EMBED markierte Inhalt eingebettet wird. Die h1-Überschrift der Kursressourcen dient lediglich der Fallback-Darstellung, falls das Embedding nicht funktioniert.

Spezielle Kontrollvariablen
Variable Bedeutung
$INCLUDE(…) SSI (Server-Side-Include): Sucht nach einer Kursressource mit Namen und fügt deren Inhalt an dieser Stelle ein. Statt des Includes von HTML-Fragmenten mit zentralen Webdesign-Inhalten wird aber normalerweise eher das Embedding (s.o.) empfohlen.
$ESCAPE(…) dient zur Anzeige von HTML-Quellcode (nur in seltenen Ausnahmefällen sinnvoll, z.B. bei Aufgaben zur Sprache HTML): Falls der Text in den Klammern () – der selbst keine runden Klammern enthalten darf! – HTML-Tags oder -Entites enthält, werden diese automatisch escaped, so dass sie vom Browser nicht als HTML interpretiert, sondern unverändert angezeigt werden. Falls der String selbst wieder Variablen enthält (z.B. $ESCAPE($FeldA1)), werden die zuerst aufgelöst und danach erst auf das Endergebnis das „Escaping“ angewandt.
$IfExistsA1(…) bewirkt die Anzeige des in Klammern gefassten bedingten Textes () im Fall, dass der Student in Eingabefeld 1 der Teilaufgabe A bereits etwas eingesendet hat. Hat der Student dagegen noch nie etwas in diesem Feld bzw. dieser Teilaufgabe eingesendet, wird die gesamte Variable einschließlich des bedingten Textes ausgeblendet. Der bedingte Text darf selbst keine runden Klammern enthalten, damit sein Ende korrekt feststellbar ist. Außerdem kann er selbst keine Variablen ($…) enthalten, sondern wird immer entweder unverändert oder gar nicht in der Ausgabe eingeblendet. (Hinweis: Auch Leereinsendungen, also das Einsenden einer Teilaufgabe, ohne irgendetwas in das Eingabefeld eingegeben zu haben, gelten als existierende Einsendungen.)
$IfNotExistsA1(…) Analog, nur genau umgekehrt: Bewirkt die Anzeige des bedingten Textes im Fall, dass der Student in dem Feld noch nie etwas eingesendet hat (auch keine Leereingabe).
$IfNotEmptyA1(…) ähnlich wie $IfExistsA1(…), auch hier ist in Klammern ein bedingter Text gegeben, der jedoch unter einer etwas anderen Bedingung angezeigt wird: Immer, falls der Student in Feld 1 der Teilaufgabe A eine nicht-leere Einsendung vorgenommen hat. Der Unterschied zu IfExists… liegt also darin, dass bei dieser Variablen nicht nur eine Einsendung existieren muss, sondern diese Einsendung obendrein nicht leer sein darf. Für Textfelder heißt „nicht leer“, dass dort mindestens ein Zeichen eingegeben worden sein muss. Für Checkboxen heißt „nicht leer“, dass mindestens eine davon angekreuzt sein muss. Bei Dateiupload-Feldern heißt „nicht leer“, dass dort eine Datei eingesendet worden sein muss. Ein Student kann z.B. nach erstmaligem Upload einer Datei diese wieder „zurückziehen“, indem er den Upload-Button nochmals betätigt, ohne eine neue Datei auszuwählen: Dann wird die letzte Dateieinsendung durch eine leere Einsendung überschrieben, für die $IfExists… immer noch den bedingten Text anzeigen würde, $IfNotEmtpy… dagegen nicht mehr.
$IfEmptyA1(…) Analog zu $IfNotEmptyA1(…): Bewirkt die Anzeige des bedingten Textes genau dann, wenn zu dem genannten Feld eine leere Einsendung vorliegt. Genau wie $IfNotEmpty… impliziert also auch diese Bedingung, dass eine Einsendung existieren muss, nur dass diese eben leer (statt nicht-leer) sein muss.
$JavaScriptRequired kann eingebunden werden, wenn der Browser bei abgeschaltetem JavaScript an der Stelle der Variablen eine Meldungsbox anzeigen soll, dass JavaScript für die volle Funktionalität benötigt wird. Bei aktivem JavaScript wird die Variable einfach ersatzlos ausgeblendet.
$NOEXPAND sorgt dafür, dass nachfolgende mit $ beginnende Tokens nicht als Variable erkannt werden, selbst wenn sie zufällig mit einer übereinstimmen.
$/NOEXPAND hebt die Wirkung von $NOEXPAND für den nachfolgenden Text wieder auf.

Als Alternativen zu den obigen Variablen $IfExistsA1(…), $IfNotEmptyA1(…) etc. mit Argumenten in Klammern (worin z.B: keine weiteren Klammern vorkommen dürfen), gibt es folgende Variablen-Paare aus je einer öffnenden und einer zugehörigen schließenden Kontrollvariablen:

Variable Bedeutung
$IfExistsA1 analog zu $IfExistsA1(…) , aber auch nutzbar für bedingten Text, der selbst wiederum Variablen oder runde Klammern enthalten soll: Diese Variable leitet bedingten Text ein, der genau dann angezeigt werden soll, wenn der Student zu Feld A1 schon einmal etwas eingesendet hat. Dieser bedingte Text muss unbedingt durch die folgende Variable wieder geschlossen werden:
$/IfExistsA1 beendet den mit $IfExistsA1 eingeleiteten bedingten Text.
$IfNotExistsA1 analog zu $IfNotExistsA1(…): Leitet einen nur bei Nicht-Existenz einer Einsendung des Studenten in Feld A1 einzublendenden bedingten Text ein, der Klammern oder andere Variablen enthalten darf und durch $/IfNotEmptyA1 abgeschlossen werden muss.
$/IfNotExistsA1 beendet den mit $IfNotExistsA1 eingeleiteten bedingten Text.
$IfNotEmptyA1 analog zu $IfNotEmptyA1(…): Leitet einen nur bei Existenz einer nicht-leeren Einsendung in Feld A1 einzublendenden bedingten Text ein, der Klammern oder andere Variablen enthalten darf und durch $/IfNotEmptyA1 abgeschlossen werden muss.
$/IfNotEmptyA1 beendet den mit $IfNotEmptyA1 eingeleiteten bedingten Text.
$IfEmptyA1 analog zu $IfEmptyA1(…): Leitet einen nur bei Existenz einer leeren Einsendung in Feld A1 einzublendenden bedingten Text ein, der Klammern oder andere Variablen enthalten darf und durch $/IfEmptyA1 abgeschlossen werden muss.
$/IfEmptyA1 beendet den mit $IfEmptyA1 eingeleiteten bedingten Text.

Hinweis: Die $If(Not)Exists-Variablen arbeiten komplett unabhängig von der weiter unten beschriebenen data-ignore-Einstellung. D.h. selbst wenn für ein Eingabefeld eingestellt wird, dass ein leer gelassenes Feld nicht implizieren darf, dass die Aufgabe bereits als bearbeitet gilt, so wird $IfExists… für ein leer gelassenes Feld nach Formular-Einsendung doch immer erfüllt sein.

Einsendungen

Es gibt spezielle Variablen, um die Daten, die ein Student zuletzt zu einer Aufgabe eingesendet hat, in HTML-Seiten einzubinden. Diese werden in erster Linie in Quittungs- und Korrekturseiten benötigt, um die zu quittierenden bzw. zu korrigierenden Eingaben in einem Dokument zusammenzustellen. Für eine Auflistung dieser Variablen sei daher auf die nachfolgenden Abschnitte Variablen für Quittungsseiten und Variablen für Korrekturseiten verwiesen.

In Aufgabenseiten werden die letzten Eingaben im Normalfall automatisch wieder ins Formular eingefügt. Einzige Ausnahme sind Dateiuploads: Wenn ein Aufgabenformular ein Dateiupload-Element enthält, kann der Student darin eine Datei zum Upload auswählen. Angezeigt wird darin nur der lokale Dateiname. Bei der Einsendung wird dieser aufgelöst und der Inhalt der Datei eingesendet. Es ist unmöglich, beim erneuten Aufruf des Aufgabenformulars dann wieder die Referenz auf die Originaldatei auf der Festplatte des Studenten (sofern diese nicht ohnehin schon gelöscht oder nachbearbeitet wurde) ins Formularfeld einzutragen. Ebenso wenig lässt sich der zuletzt eingesendete Dateiinhalt in einem Dateiauswahl-Feld einblenden.

Falls der Student also im Aufgabenformular eine ggf. schon vorhandene letzte Datei-Einsendung angezeigt bekommen soll (empfohlen!), müssen diese Variablen ausnahmsweise auch in der Aufgabenseite eingesetzt werden, z.B. wie folgt:

$IfExistsA2(Ihre zuletzt hochgeladene Datei: )$FeldA2

Die (im Abschnitt Spezielle Kontrollvariablen genauer erklärte) $IfExistsA1-Kontrollvariable bewirkt, dass der in Klammern stehende bedingte Text „Ihre zuletzt hochgeladene Datei: “ noch nicht angezeigt wird, falls der Student zu Feld A2 noch niemals etwas eingesendet hatte. Die Variable $FeldA2 selbst ist in dem Fall ohnehin unsichtbar. Diese Struktur stellt außerdem sicher, dass im Falle, dass der Student einmal etwas eingesendet hat, ohne eine Datei ausgewählt zu haben, in der Seite der Text „Ihre zuletzt hochgeladene Datei: [leer]“18 angezeigt wird, die ihm mitteilt, dass zwei eine Einsendung vorliegt, diese jedoch keine Datei enthält19.

Links

Prinzipiell können Sie mit den oben genannten Variablen bereits beliebige benötigte interne Links realisieren, z.B. $WebAssignServer/$Veranstaltername/KursStartSeite/$KursNr/$Versionsnr.

Es gibt aber auch Variablen, die komplette Links zur Navigation zwischen Aufgaben realisieren. Im Normalfall, wenn Sie Ihre Aufgaben in das Standard-Webdesign des Übungssystems einbetten (s.o.), werden Sie derartige Links nicht benötigen, denn die Standard-Seitenlayoutvorlagen weisen bereits Navigationsmenüs (derzeit am linken Seitenrand) auf, mit denen von einer Aufgabenseite zu allen anderen Aufgabenseiten desselben Aufgabenhefts direkt gewechselt oder zur Aufgabenübersicht zurückgesprungen werden kann.

Bei komplett manuell erstelltem Webdesign können diese Variablen aber ggf. nützlich sein.

Variable Bedeutung
$NaechsteAufgabeURL URL für die nächste Aufgabe im selben Aufgabenheft (es muss eine nächste geben, d.h. die Variable darf nicht in der Aufgabenseite der letzten Aufgabe verwendet werden)
$NaechsteAufgabe Kompletter Link auf die nächste Aufgabe (mit dem Text »nächste Aufgabe«)
$VorherigeAufgabeURL URL für die vorherige Aufgabe im selben Aufgabenheft (darf entsprechend nicht in einer Aufgabe Nr. 1 verwendet werden)
$VorherigeAufgabe Kompletter Link auf die vorherige Aufgabe (mit dem Text »vorherige Aufgabe«)
$KursuebersichtURL URL der Kursstartseite
$Kursuebersicht Link auf die Kursstartseite (mit dem Text »Kursstartseite«)
$AufgabenuebersichtURL URL der Studentenstartseite
$Aufgabenuebersicht Link auf die Studentenstartseite (mit dem Text »Aufgabenübersicht«)
$AufgabeURL URL der Aufgabenseite selbst
$Aufgabe Link auf die Aufgabenseite (mit dem Text »Aufgabentext«) – in der Aufgabenseite selbst nicht sinnvoll anwendbar, aber z.B. in der Quittungsseite zum Zurückkehren zur Aufgabenseite.

Anmerkung: Die oben angegebenen Link-Beschriftungen zu Variablen wie $Kursuebersicht oder $VorherigeAufgabe sind nicht dauerhaft garantiert, könnten also in Zukunft ggf. modifiziert werden.

Heft-Schließen-Knopf

Vorab: Was ist Heft-Schließen?

Wie im Abschnitt Grundlagen/Struktur einer Kursumgebung beschrieben, ist jede Aufgabe immer einem Aufgabenheft untergeordnet, das wiederum einen Bearbeitungszeitraum für alle Aufgaben, aus denen es besteht, festlegt. Nach Ablauf dieses Bearbeitungszeitraums können dann alle Einsendungen der Studenten ausgewertet werden. Dazu findet (ggf. automatisch, sofern in den Kursparametern aktiviert, andernfalls erst auf manuelle Aktion des Kursbetreuers hin) ein sog. Heft-Schließen statt, in dessen Rahmen auch die Korrekturdokumente erzeugt werden (durch Einfügen der eingesendeten Daten und ggf. automatisch erzeugter (Vor-)Korrekturen und Auswertungen in die vom Aufgabenautor erstellten Korrekturschablonen wie korrektur1.1.html, siehe: Die Standard-Kursressourcen zu einer Aufgabe).

Bei automatisch korrigierten Aufgaben findet die Autokorrektur direkt im Rahmen des Heft-Schließens statt, und das Ergebnis jeder Autokorrektur wird direkt mit in das jeweilige Korrekturdokument mit eingebunden.

Im Falle manuell zu korrigierender Aufgaben enthalten diese Korrekturdokumente (kurz als „Korrekturen“ bezeichnet) in der Regel nur die Eingaben des jeweiligen Studenten, ggf. angereichert um eine (schon bei der Einsendung des Studente erzeugte) automatische Vorkorrektur. Diese Korrekturen können dann im Anschluss ans Heft-Schließen den Korrekturkräften zugeteilt werden. Die Korrektoren bearbeiten dann die Korrekturen, indem sie sie mit Kommentaren anreichern und eine Bewertung festlegen.

Kurz: Das Heft-Schließen ist also Voraussetzung für die Korrektur.

Weiterhin können Studenten nach dem Heft-Schließen, wie der Name schon andeutet, auch nichts mehr zu diesem Aufgabenheft einsenden. Wenn das Heft-Schließen erst nach dem Einsendeschluss stattfindet, hat das keine praktischen Auswirkungen mehr, da ja nach Einsendeschluss ohnehin schon nicht mehr eingesendet werden kann. Es es aber auch möglich, Hefte schon vor dem Einsendeschluss zu schließen. Das entspricht praktisch einer vorzeitigen Abgabe: Ist das Heft eines Studenten schon vor Einsendeschluss geschlossen (das ist wohlgemerkt für jeden Studenten individuell möglich), kann er nichts mehr einsenden, dafür aber kann sofort, also ebenfalls schon vor Einsendeschluss, mit der Korrektur begonnen werden.

Ein solches vorzeitiges Heft-Schließen (vorzeitige Abgabe und somit Ermöglichung früherer Korrektur) sollte nur vom Studenten vorgenommen werden. Zu diesem Zweck kann den Studenten ein entsprechender „Heft-Schließen-Knopf“ im Kurs eingeblendet werden.

Heft-Schließen-Knopf für Studenten…

Die Einblendung eines Heft-Schließen-Knopfes für Studenten ergibt nur dann wirklich Sinn, wenn Sie auch tatsächlich vorzeitige Korrekturen vorsehen:

… in der Aufgabenübersicht

Der Standardweg, den Studenten einen Heft-Schließen-Knopf einzublenden, besteht in der Aktivierung der Option »Heft-Schließen-Knopf in Aufgabenübersicht für Studenten« in den Kursparametern. Wenn diese Funktion aktiv ist, erscheint in der Aufgabentabelle der Studenten-Startseite ein Heft-Schließen-Knopf pro Aufgabenheft (nur innerhalb des jeweiligen Bearbeitungszeitraums), mit dem der Student die Bearbeitung des Hefts und aller Aufgaben darin vorzeitig abschließen kann.

… in einer Aufgabenseite

Nur in Ausnahmefällen kann es auch wünschenswert sein, einen Heft-Schließen-Knopf zur endgültigen Abgabe direkt mit in eine Aufgabenseite einzubinden:

Sollten Sie sich dazu entscheiden, können Sie in einer Aufgabenseite (wie aufgabe1.1.html) den Heft-Schließen-Knopf über folgende Variablen einbinden:

Variable Bedeutung
$HeftSchliessenKnopf Ein Knopf mit Standardbeschriftung (derzeit »Heft schließen«)
$HeftSchliessenKnopf(…) Ein Knopf mit selbst gewählter Beschriftung, die Sie zwischen den Klammern an Stelle der drei Punkte eingeben. Die Beschriftung darf selbst keine runden Klammern enthalten.
$HeftSchliessenKnopf{…} Gleichbedeutende Alternative, hier dürfen runde Klammern in der Beschriftung auftreten, dafür keine geschweiften.
$HeftschliessenKnopf(1)(2) Ein Knopf mit zwei selbst gewählten Beschriftungen: An Stelle 1 legen Sie die normale Buttonbeschriftung fest, die angezeigt wird, so lange das Heft noch nicht geschlossen ist. An der Stelle 2 legen Sie eine zweite Beschriftung fest, die angezeigt wird, sobald das Heft geschlossen wurde. (Der Button ist in diesem Fall bereits inaktiv und nicht mehr anklickbar.)
$HeftschliessenKnopf{1}{2} Gleichbedeutende Alternative, falls runde Klammern in den Beschriftungen (oder einer davon) benutzt werden sollen.
$HeftSchliessenKnopf(1)(2)(OK) Durch Anfügen eines dritten Klammernpaars können Sie zusätzlich ein Icon festlegen, das bei geschlossenem Heft vor dem Text 2 auf dem (inaktiven) Button angezeigt werden soll (s.u.)
$HeftSchliessenKnopf{1}{2}{OK} Gleichbedeutende Alternative, falls runde Klammern in den Beschriftungen (oder einer davon) benutzt werden sollen.

Hinweise zum Einsatz dieser Variablen:

Mögliche Icons

Für die letzte Variante (zwei Beschriftungen und ein Icon) stehen folgende vier Icons zur Auswahl:

Icon-Name Beschreibung derzeitige Darstellung
OK Grünes Check-Icon
INFO Blaues Info-Icon
WARNING Warndreieck
ERROR Rotes X-Icon

Das Icon wird erst nach der Heftabgabe angezeigt. Welches der Icons dafür passend ist, hängt stark vom zweiten Beschriftungstext ab. In der Regel, z.B. bei einem Text wie „Heftabgabe erfolgreich“, würde eher ein OK- oder Info-Icon passen. Lautet der Text dagegen „Keine weitere Aufgabenbearbeitung mehr möglich, da die Abgabe bereits erfolgt ist!“, könnte auch ein Warnungs- oder vielleicht sogar Fehler-Icon gewünscht sein, je nachdem was Sie ausdrücken möchten. (Da die Heftabgabe keinen Fehler darstellt, ist das Fehler-Icon im Normalfall nicht empfohlen – wurde aber der Vollständigkeit halber mit zur Verfügung gestellt.)

Das HTML-Formular

Der zweite wesentliche Teil einer Aufgabenseite (neben der Aufgabenstellung) ist das Webformular, über das die Studenten ihre Lösungen einsenden können.

Zu diesem Zweck wird im Normalfall genau ein20 form-HTML-Element in die Seite eingebaut.

form-Tag

Damit über das Formular eine Einsendung möglich ist und alle Eingaben gespeichert werden können, muss das öffnende form-Tag bestimmte Regeln einhalten:

D.h. im Allgemeinen sieht ein Form-Tag für „normale“ Aufgabenformulare (ohne Dateiuploads) wie folgt aus:

<form method="POST"
action="$WebAssignServer/$Veranstaltername/Einsendung/$KursNr/$VersionsNr/$AufgabenheftNr/$AufgabenNr">

Dagegen sieht ein Form-Tag für ein Multipart-Formular (z.B. mit Dateiuploads) i.d.R. wie folgt aus:

<form method="POST"
action="$WebAssignServer/$Veranstaltername/EinsendungMultipart/$KursNr/$VersionsNr/$AufgabenheftNr/$AufgabenNr"
enctype="multipart/form-data">
Submit-Button(s)

Damit ein Student etwas einsenden kann, muss – neben den Eingabefeldern, auf die der nachfolgende Abschnitt eingeht – ein Submit-Button zum Absenden der Eingaben (innerhalb des form-Elements) vorgesehen werden. Falls Sie Ihre Aufgabe in mehrere „technische“ Teilaufgaben zerlegen, deren Eingaben getrennt voneinander einzusenden sind, wird ein Submit-Button pro Teilaufgabe benötigt.

Wie genau der Button aussieht, beschriftet ist oder wo im Formular er angeordnet wird, liegt voll und ganz in Ihrem Gestaltungsspielraum. Lediglich der Name des Buttons muss einer Konvention folgen, damit das Übungssystem auswerten kann, welcher Submit-Button gedrückt wurde.

Das name-Attribut des Button-Tags muss folgenden Aufbau haben:

einsenden<Teilaufgabe>

Dabei ist <Teilaufgabe> durch einen Großbuchstaben zu ersetzen: A für die erste (ggf. einzige) Teilaufgabe, B für die zweite Teilaufgabe etc.

Obiges Beispiellisting aus Abschnitt Generieren und Bearbeiten einer Seitenvorlage enthält z.B. nur eine Teilaufgabe und damit genau einen Submit-Button:

<input type="submit" name="einsendenA" value="Beschriftungstext">

oder in der neueren HTML5-Syntax (die nicht nur einfachen Text als Beschriftung erlaubt):

<button type="submit" name="einsendenA">Beschriftung</button>
Spezielle Submit-Buttons

Die folgenden beiden Submit-Buttons können ausschließlich in Multipart-Formularen (Servicename EinsendungMultipart und enctype="multipart/form-data", siehe oben) verwendet werden!

Außerdem sollte die Teilaufgabe ausschließlich Dateiupload-Felder (<input type="file"…) umfassen, diese Buttons sind nicht für den Einsatz mit anderen Formularfeldern wie Text, Checkboxen etc. vorgesehen.

Dateiupload-Felder werden zu „Multi-Uploadfeldern“, indem der zu ihrer Teilaufgabe (also zum Upload der Dateien verwendete) Submit-Button ein name-Attribut des folgenden Aufbaus bekommt:

einsendenPlus<Teilaufgabe>

Das bewirkt, dass jede Dateieinsendung zur Teilaufgabe nicht – wie normal – die vorherige überschreibt, sondern mit dieser zusammengefasst wird, sie also ergänzt. Das wird weiter unten im Abschnitt Multi-Dateiuploads noch genauer beschrieben.

Insbesondere im Kontext solcher Multi-Dateiuploads sollte, um dennoch frühere Einsendungen wieder zurückziehen zu können, zusätzlich ein Button des folgenden Namens angeboten werden:

einsendenLeer<Teilaufgabe>

Ein solcher Button bewirkt zunächst, wie der „normale“ einsenden<Teilaufgabe>-Button auch, eine Einsendung zu jedem Formularfeld der Teilaufgabe, wobei jede frühere Einsendung in diesen Feldern überschrieben wird. Im Unterschied zur normalen Einsenden-Button werden jedoch die Eingaben in den Formularfeldern ignoriert, es werden zu allen Formularfeldern grundsätzlich leere Einsendungen erzeugt, so als ob die Formularfelder nicht ausgefüllt wären. Damit kann dieser Button explizit zum Löschen vorheriger Einsendungen genutzt werden.

Eingabefelder

Damit ein Submit-Button überhaupt Daten einsenden kann, muss das Formular natürlich weiterhin Eingabefelder (input, textarea) definieren. Wie beim Submit-Button ist lediglich die Benennung der Felder vorgegeben. Diese hat nach folgendem Schema zu erfolgen:

Feld<Teilaufgabe><FeldNr>

Alle Felder, deren Inhalte mit dem Button einsendenA eingesendet werden sollen, müssen diesem durch Einsetzen desselben Teilaufgaben-Buchstabens A zugeordnet werden (analog für alle weiteren Teilaufgaben bzw. deren Submit-Buttons). Zur Komplettierung der Feld-ID werden alle Eingabefelder derselben Teilaufgabe durchnummeriert, und zwar jeweils lückenlos beginnend bei 1. Das erste Eingabefeld zu Teilaufgabe A heißt demnach FeldA1, das erste Feld zur zweiten Teilaufgabe (B) heißt FeldB1, das zwölfte Eingabefeld zur dritten Teilaufgabe heißt FeldC12 etc.

Wie bei den Variablen ist auch hier die Groß-/Kleinschreibung zu beachten!

Ein Beispiel für eine Textarea finden Sie bereits im obigen Listing (Abschnitt Generieren und Bearbeiten einer Seitenvorlage). Dieses generierte Aufgabenformular enthält eine Plaintext-Textarea. Falls die Studenten (HTML-)formatierten Text eingeben können sollen, können Sie die Aufgabendatei um eine entsprechende Konfiguration erweitern, und das Übungssystem wird entsprechende JavaScripte für einen WYSIWYG-Editor automatisch einbinden. Details dazu finden Sie im Handbuch zur Integration von WYSIWYG-Editoren.

Nehmen wir aber als begleitendes Fallbeispiel an, Sie streben ein ganz anderes Aufgabenformular an und fügen das nachfolgende Beispielformular in die generierte HTML-Datei ein. Hierbei handelt es sich um ein Mulitpart-Formular mit zwei Teilaufgaben (eine für einen Dateiupload und eine für alle weiteren Eingaben) und ein paar im Folgenden noch zu erklärenden Besonderheiten:

<form method="POST"
      action="$WebAssignServer/$Veranstaltername/EinsendungMultipart/$KursNr/$VersionsNr/$AufgabenheftNr/$AufgabenNr"
      enctype="multipart/form-data" 
      class="validated">

<label for="t1">Wie lautet die Antwort auf die ultimative Frage nach dem Leben, dem Universum und dem ganzen Rest?</label> 
<input type="text" id="t1" name="FeldA1" class="digits" size="10" maxlength="10" data-if-empty="Keine Angabe" data-ignore="empty">
<br>
<input type="checkbox" name="FeldA2" value="hello" id="cb1" data-if-empty="---" data-ignore="never"> <label for="cb1">Hallo!</label><br>
<input type="checkbox" name="FeldA2" value="world" id="cb2"> <label for="cb2">Welt</label>

<p><input type="submit" name="einsendenA" value="Eingaben einsenden"></p>

<p>PDF hochladen: <input type="file" name="FeldB1" accept=".pdf,application/pdf,application/x-pdf" data-if-empty="Keine Datei eingesendet!" data-ignore="empty"> 
<input type="submit" name="einsendenB" value="PDF einsenden"><br>
$IfExistsB1(Ihre zuletzt hochgeladene Datei: )$FeldB1HREF</p>

</form>

Zunächst demonstriert das Beispiel das Auftreten zweier Teilaufgaben A und B und die freie Positionierung und Beschriftung der Submit-Buttons.

Die id-Attribute der verschiedenen Eingabefelder spielen fürs Übungssystem selbst keine Rolle, sondern werden nur verwendet, um Labels zu den Feldern zuzuordnen (so dass z.B. beim Klick auf das Label »Hallo« die Checkbox links daneben ihren Zustand verändert, also der Nutzer nicht exakt auf die kleine Box klicken muss, oder dass beim Klick auf das Label »Wie lautet die Antwort […]« direkt der Cursor in die zugehörige Eingabezeile gesetzt wird).

Die Klassen validated im Formular sowie digits in der Text-Eingabezeile konfigurieren Funktionen des Online-Übungssystems zur Eingabevalidierung. In diesem Fall wird damit ausgedrückt, dass die Eingabezeile nur Ziffern aufnehmen darf – was allerdings nur bei aktiviertem JavaScript forciert wird. Das dazugehörige Script wird vom Übungssystem dynamisch in die Aufgabenseite injiziert, Sie müssen es also nicht selbst einbinden. Details dazu finden sich in einer gesonderten Dokumentation zur Formular-Eingabevalidierung.

Das Attribut data-if-empty in einem input- oder textarea-Tag gibt einen Text vor, der in Quittungs- und Korrekturseite angezeigt werden soll, falls der Student das Feld leer lässt. Ohne eine solche Angabe erfolgt eine Standard-Anzeige für leere Einsendungen, derzeit [leer]. Im Falle von mehreren Feldern desselben Namens (typisch für Checkboxen) muss das data-if-empty-Attribut, falls überhaupt angegeben, im ersten der gleichnamigen Eingabefelder stehen.

Das zweite Data-Attribut in obigem Beispiel (data-ignore) wird im Anschluss in einem eigenen Unterabschnitt genauer erläutert.

Die beiden Checkboxen in obigem Beispiel sollen den gerade schon erwähnten Sonderfall demonstrieren, dass mehrere Eingabefelder mit demselben Namen existieren dürfen (sofern jedes davon einen String einsendet, also keines ein Dateiupload-Feld ist). Deren Werte werden dann durch Komma und Leerzeichen getrennt aufgezählt, d.h. der Wert der Eingabe in FeldA2 in obigem Beispiel ist entweder…

Der letzte Absatz in obigem Beispiel demonstriert eine typische Integration eines Dateiupload-Feldes. Zunächst wird eine explizite Anzeige der letzten Einsendung (falls vorhanden) eingebunden, vgl. dazu den obigen Abschnitt zu Variablen für Einsendungen in Aufgabenformularen. Weiterhin wird hier das optionale accept-Attribut zur Beschränkung des Uploads auf bestimmte Dateitypen demonstriert, vgl. gesondertes Handbuch zu Dateityp-Einschränkungen.

Bearbeitungsstatus einer Aufgabe: data-ignore-Attribut

Seit Februar 2019 unterstützt das Online-Übungssystem einen neuen Mechanismus zur Festlegung, in welchen Fällen eine Aufgabe überhaupt als bearbeitet gelten soll.

Ohne Nutzung der i.F. beschriebenen neu eingeführten data-ignore-Attribute zu Input-Tags gilt – wie bisher – eine Aufgabe grundsätzlich als von einem Studenten bearbeitet, sobald dieser zu mindestens einer Teilaufgabe dieser Aufgabe einmal den Einsenden-Knopf gedrückt hat. Selbst wenn er alle Eingabefelder leer gelassen hat, also einfach nur bei unausgefülltem Formular den Einsenden-Button gedrückt hat, gilt also – trotz des Fehlens sinnvoller Eingaben – die Aufgabe als von ihm bearbeitet. Dies äußert sich in verschiedenen Punkten:

  1. In der Aufgabenübersicht oder einer Aufgabenliste im Seitenmenü sieht der Student ein Sternchen als Anzeige dafür, dass er die Aufgabe bearbeitet hat.
  2. Auch in der Ergebnisübersicht wird dem Studenten ab sofort angezeigt, dass Eingaben von ihm vorliegen (und deren Bewertungsstatus).
  3. Auch ein Betreuer sieht in der Einsendungsübersicht die Anzahl „offener Hefte“ (Anzahl von Studenten, die schon mindestens eine Aufgabe eines Aufgabenhefts bearbeitet haben). Dort wird dieser Student ab der ersten Einsendung mitgezählt.
  4. Beim Heft-Schließen wird zu jeder bearbeiteten Aufgabe eine Korrektur erstellt. Im Falle einer handbewerteten Aufgabe ist das ein Dokument mit allen Eingaben des Studenten, das einem Korrektor zur Korrektur/Bewertung zugeteilt wird. Hatte der Student das Formular leer eingeschickt, also ohne irgendetwas einzugeben, wird demnach dennoch immer eine leere Korrektur erstellt, die von einem Korrektor (typischerweise mit null Punkten) zu bewerten ist.

Insbesondere bei Aufgaben, in denen jeder Teilnehmer seine Lösung in Form einer einzelnen Datei hochladen soll, ist dieser Zustand unschön, denn die Aufgabe gilt (nach dem bisherigen Verfahren) immer als bearbeitet, selbst wenn der Student gar keine Datei hochgeladen hat, sondern einfach den Upload-Button gedrückt hat, ohne eine Datei auszuwählen. Auch die im Folgenden (siehe Einfache Dateiuploads) beschriebene Möglichkeit, zumindest bei der ersten Aufgabenbearbeitung per Pflichtfeld-Mechanismus eine Dateieinsendung zu erzwingen (also eine Leereinsendung ohne Dateiupload zu vermeiden), birgt immer noch das Problem, dass der Student anschließend den Dateiupload wieder zurückziehen kann: In diesem Zustand liegt dann doch wieder eine leere Einsendung vor, und die Aufgabe wird dem Studenten dann bei Standardeinstellung dennoch immer als bearbeitet angezeigt – was unglücklich ist, da bei derartigen Aufgaben viele Studenten die „Aufgabe wurde bearbeitet“-Anzeige intuitiv als „Dateieinsendung liegt vor“ interpretieren.

Es kann daher wünschenswert sein, eine Aufgabe als (noch oder wieder) von einem Studenten unbearbeitet zu markieren, wenn von diesem Studenten nur eine leere Formulareinsendung vorliegt. Das gilt aber nicht global für alle Aufgaben! Bei Multiple-Choice-Fragen (X aus N) z.B. kann auch das Einsenden eines leeren Formulars, in dem keine einzige Antwortalternative angekreuzt wurde, als sinnvolle Antwort gelten – nämlich als die Antwort, dass alle Alternativen falsch sind. Solche Aufgaben müssen dann natürlich weiterhin auch bei Leereinsendungen als bearbeitet gelten und bewertet werden. Daher wurde das Verhalten des Online-Übungssystems diesbezüglich nicht einfach komplett geändert, sondern vielmehr eine neue Konfigurationsmöglichkeit auf Formularfeld-Ebene geschaffen:

Zu jedem <input>-Element Ihres Aufgabenformulars können Sie das Attribut data-ignore hinzufügen, das jeweils einen der folgenden drei Werte bekommen muss (Groß-/Kleinschreibung des Attributwerts ist dabei egal):

data-ignore Bedeutung
never (Default) Jede Eingabe (auch eine leere) in dieses Feld zählt als „sinnvolle Antwort“.
empty Nur nicht-leere Eingaben in dieses Feld zählen als Antworten.
always Dieses Feld trägt gar nicht zum Bearbeitungszustand der Aufgabe bei, Eingabe gelten nie als inhaltliche Bearbeitung / Antwort auf eine Aufgabenstellung.

Falls mehrere Input-Elemente mit demselben Feldnamen existieren (typisch für Checkboxen und Radiobuttons, die eine Gruppe bilden), muss das data-ignore-Attribut im ersten dieser gleichnamigen Input-Elemente angegeben werden (vgl. Checkboxen zu FeldA2 in obigem begleitendem Fallbeispiel).

Wird das data-ignore-Attribut für ein Feld gar nicht angegeben, gilt aus Abwärtskompatibilitätsgründen das bisherige Verhalten als Default. Keine Angabe ist also gleichbedeutend mit der Angabe data-ignore="never".

Sendet ein Student nun z.B. ein komplett leeres Formular ein, und ist mindestens eines der Formularfelder mit data-ignore="never" versehen (oder ganz ohne data-ignore-Attribut), so gilt dieses Eingabefeld und damit die gesamte Aufgabe als bearbeitet, trotz der leeren Einsendung.

Sendet ein Student ein komplett leeres Formular ein, und sind alle Formularfelder entweder mit data-ignore="empty" oder data-ignore="always" markiert, also keines mit never oder ohne Angabe, dann gilt die Aufgabe als unbearbeitet. Erst bei Ausfüllen mindestens eines der mit data-ignore="empty" markierten Felder nimmt die Aufgabe (für den Studenten) den Zustand „bearbeitet“ an.

Für die meisten Formularfelder, insbesondere für Dateiuploads oder Text-Eingabefelder, ist empty die empfohlene Einstellung. Das gilt auch z.B. für Radio-Buttons von Einfachauswahl-Aufgaben, sogar auch für Checkboxen einer Multiple-Choice-Frage, sofern für diese gelten soll, dass immer mindestens eine Antwort korrekt ist und dass die Frage erst als bearbeitet gelten soll und bewertet werden soll, wenn mindestens eine Checkbox angekreuzt wurde. Der Wert never (oder gar keine Angabe des Attributs) ist insbesondere wichtig für Multiple-Choice-Fragen, bei denen alle Alternativen falsch sein können, oder auch, falls zwar mindestens eine Alternative korrekt ist, für Studenten, die gar nichts markiert haben, die Antwort aber dennoch (auf Teilübereinstimmung hin) bewertet werden soll.

Im obigen begleitenden Fallbeispiel wurde für den Dateiupload und die Zahleneingabe jeweils der empfohlene empty-Wert angegeben, für die beiden Checkboxen dagegen never. Die Angabe empty für den Zahlen-Input hat somit in diesem konkreten Fall streng genommen keinen Effekt22: Da die Teilaufgabe A ein Eingabefeld mit never-Einstellung (die Checkboxen) enthält, gilt die gesamte Aufgabe spätestens dann als bearbeitet, wenn ein Student zur Teilaufgabe A etwas einsendet, also den einsendenA-Button betätigt – auch bei komplett leerem Formular.

Ebenso gilt die Aufgabe des Fallbeispiels als bearbeitet, wenn in Teilaufgabe B eine Datei hochgeladen wurde. Nimmt ein Student dagegen für Teilaufgabe B eine Leereinsendung vor (einsendenB drücken, ohne in FeldB1 eine Datei ausgewählt zu haben) und hat er einsendenA noch nie gedrückt, so gilt die Aufgabe als von ihm unbearbeitet. Für den Studenten äußert sich das zunächst so, dass die Aufgabe in den Übersichten nicht (mehr) als bearbeitet markiert wird. Ruft er das Aufgabenformular erneut auf, wird ihm dennoch – anders als vor der ersten Bearbeitung – sein aktueller Einsendestand für Teilaufgabe B angezeigt, in Form des Textes »Ihre zuletzt hochgeladene Datei: Keine Datei eingesendet!«. Die Variable $IfExistsB1(…) wertet also eine Leereinsendung immer als Einsendung, unabhängig von der ignore-Einstellung. Das ist auch Absicht: So kann der Student hier jederzeit unterscheiden (bei Aufruf des Aufgabenformulars), ob die Aufgabe deshalb als unbearbeitet gilt, weil er noch nie etwas eingesendet hat, oder weil er eine leere Einsendung vorgenommen hat. Daher stehen auch die Attribute data-ignore="empty" und data-if-emtpy="…" in keinem Konflikt zueinander: Auch wenn Leereingaben bei der Frage nach dem Bearbeitungsstatus ignoriert werden, wird dennoch der If-Empty-Ersatztext in Quittung und Korrektur oder – wie hier bei Dateiuploads – auch dem Aufgabenformular angezeigt.

Weiterhin wird zu einer als unbearbeitet geltenden Aufgabe bei der Heftabgabe auch keine Korrektur erzeugt: In obigem Beispielfall (Leereinsendung zu Teilaufgabe B, keine Einsendung zu Teilaufgabe A) wird also insbesondere – anders als bei Default-Einstellung – keinem Korrektor eine Korrekturseite vorgelegt, in der er lediglich den Text »Keine Datei eingesendet.« bewerten soll, und der Student wird auch in der Ergebnisübersicht nur sehen, dass er die Aufgabe nicht bearbeitet hat und dort nie eine mit 0 Punkten bewertete „leere Korrektur“ vorfinden.

Die dritte Einstellmöglichkeit always ist für Formularelemente vorgesehen, die selbst keine Aufgabenbestandteile sind. Typisches Beispiel: Eine Eigenständigkeitserklärung per Pflicht-Checkbox der Art »Ich erkläre, dass ich diese Arbeit eigenständig bearbeitet habe.«:

<form method="POST"
      action="$WebAssignServer/$Veranstaltername/EinsendungMultipart/$KursNr/$VersionsNr/$AufgabenheftNr/$AufgabenNr"
      enctype="multipart/form-data" 
      class="validated">
<p>
<input type="file" name="FeldA1" data-if-empty="Keine Datei eingesendet!" data-ignore="empty">
<button type="submit" name="einsendenA">Datei einsenden</button>
<br>
$IfExistsA1(Ihre zuletzt hochgeladene Datei: )$FeldA1</p>
<p>
<input type="checkbox" name="FeldA2" value="Ja" data-if-empty="Nein" class="required" data-ignore="always" id="assert">
<label for="assert">Ich erkläre, dass ich diese Arbeit eigenständig bearbeitet habe.</label>
</p>
</form>

Die Eingabevalidierung (s.o.) wird hier eine Einsendung nur erlauben, wenn die Checkbox angekreuzt ist – sofern JavaScript im Browser aktiviert ist: Für den Fall, dass JavaScript im Browser deaktiviert wurde, ist aber auch eine Einsendung ohne Markierung der Checkbox möglich. Deshalb wurde per data-is-empty auch für diesen Fall der Nicht-Markierung eine entsprechende Darstellung (Nein) für Quittungs- und Korrekturseiten festgelegt.

Wählt ein Student nun keine Datei aus, aber markiert diese Checkbox und sendet ein, so sollte wegen der fehlenden Dateieinsendung die Aufgabe am besten als unbearbeitet gewertet werden – und das, obwohl in FeldA2 (der Checkbox) eine nicht-leere Eingabe vorliegt. Diese Checkbox allein stellt eben keine sinnvolle Aufgabenbearbeitung dar, und daher soll der Zustand der Checkbox nicht in den Bearbeitungsstatus der Aufgabe einfließen, sondern immer ignoriert werden. Genau das wird per data-ignore="always" festgelegt. Somit wird lediglich das verbleibende Eingabefeld FeldA1 (Dateiupload) berücksichtigt: Ist dieses leer, gilt die Aufgabe als unbearbeitet (wegen data-ignore="empty"), bei vorliegender Datei dagegen als bearbeitet.

Vorgefüllte Felder

Es ist möglich, in die Eingabefelder bereits im Formular bestimmte Werte einzutragen (durch ein value-Attribut in input-Elementen für Texteingaben, Text-Inhalte in einem textarea-Element oder checked- oder selected-Attribute in Checkboxen, Radiobuttons oder Select-Options). Diese werden Studenten dann beim ersten Aufruf der Aufgabe angezeigt / vorgeschlagen. Sobald ein Student aber zu einer (Teil-)Aufgabe einmalig etwas eingesendet hat und das Aufgabenformular anschließend erneut lädt, wird die letzte Einsendung des Studenten in das jeweilige Eingabefeld eingetragen und überschreibt damit eine ggf. im Formular stehende Vorgabebelegung des Felds.

Einfache Dateiuploads

Soll ein Student eine Datei einsenden, genügt in der Regel ein einfaches Dateiupload-Feld, d.h. ein Formularfeld, in dem der Student genau eine lokale Datei auswählen und einsenden kann. Jede spätere, erneute Einsendung einer Datei überschreibt die vorherige Einsendung. Zum Zurückziehen einer versehentlich vorgenommenen Einsendung kann ein Student also entweder eine andere Datei einsenden, die die erste ersetzt, oder auch eine leere Einsendung (ohne Auswahl einer neuen Datei) vornehmen, um die zuvor eingesandte Datei ersatzlos zu löschen.

Die Einbindung wird in obigem Fallbeispiel bereits demonstriert. Die folgenden Punkte sollen noch einmal die wesentlichen dabei zu beachtenden Aspekte zentral zusammenstellen:

  1. Für das Eingabefeld wird ein einfaches Input-Element mit type="file" verwendet, z.B.: <input type="file" name="FeldB1" …>
  2. Für jeden Dateiupload sollte eine eigene „technische“ Teilaufgabe vorgesehen werden, in obigem Beispiel Teilaufgabe B, d.h. es gibt keine weiteren Eingabefelder mit einer Kennung FeldB*.
    • Ausnahme: Falls z.B. beim Hochladen der Datei der Student zwangsweise eine Checkbox markiert haben soll, z.B. um eine Erklärung abzugeben wie „Ich versichere, die Arbeit eigenständig bearbeitet zu haben“ oder „…die Hinweise gelesen zu haben“ etc., dann kann eine entsprechende Checkbox derselben Teilaufgabe zugeordnet werden: <input type="checkbox" name="FeldB2" class="required" value="Ja">. Die Angabe der required-Klasse markiert die Checkbox als Pflichtfeld, was aber nur wirksam wird, wenn dem <form>-Tag auch das Attribut class="validated" hinzugefügt wird, siehe Handbuch zur Formularvalidierung.
  3. Für diese Teilaufgabe B ist dann ein eigener Submit-Button vorzusehen, typischerweise mit "Upload" oder "Hochladen" o.ä. benannt:
    <button type="submit" name="einsendenB">Datei hochladen</button>
  4. Das Formular muss für Multipart-Submit ausgelegt sein (siehe form-Tag).
  5. Da ein File-Input keine bereits vorliegende Dateieinsendung anzeigen kann, sollte unterhalb des Inputs und Upload-Buttons ein Text "Ihre letzte Einsendung" o.ä. mit der Variablen $FeldB1 oder $FeldB1HREF o.ä. folgen. Und damit dieser erst angezeigt wird, wenn wirklich schon eine Einsendung vorliegt, sollte die Kontrollvariable $IfExistsB1 verwendet werden, wie in obigem Fallbeispiel bereits demonstriert.
  6. Damit an der Stelle $FeldB1 bei leerer Einsendung nicht ein so nichtssagender Text wie „Ihre letzte Einsendung: [leer]“ steht, sollte in jedem Fall das Input-Element noch um ein data-if-empty="Keine Datei hochgeladen"-Attribut (ggf. mit abweichendem Text) ergänzt werden, s.o.
  7. Per data-ignore="empty" kann festgelegt werden, dass Einsendungen ohne ausgewählte Datei nicht als zu bewertende Antworten gelten sollen, sondern die Aufgabe als unbeantwortet gelten soll, wenn der Student zwar den Upload-Button gedrückt hatte, aber ohne eine Datei auszuwählen (und die Teilaufgabe A nicht bearbeitet wurde), siehe Bearbeitungsstatus einer Aufgabe.
  8. Sollen nicht beliebige Dateitypen akzeptiert werden, so kann ein Dateiupload-Feld auf bestimmte Dateitypen (Dateiendungen und/oder MIME-Types) eingeschränkt werden, siehe: Handbuch zu Dateityp-Einschränkungen
Dateiuploadfeld als Pflichtfeld?

Möchten Sie verhindern, dass ein Student einfach nur den Upload-Button drücken kann, ohne eine Datei ausgewählt zu haben, könnten Sie das Upload-Feld zu einem Pflichtfeld machen, indem Sie das Attribut class="required" hinzufügen (wobei auch das form-Tag das Attribut class="validated" besitzen muss). Allerdings gibt es dabei zwei wichtige Aspekte zu beachten:

Zum Ersten gilt diese Pflichtangabe immer für das gesamte HTML-Formular, nicht nur für eine Teilaufgabe. Falls Ihre Aufgabe also nicht nur aus einem Dateiupload-Feld besteht, sondern auch noch weitere Teilaufgaben mit eigenen Upload-Buttons umfasst, ist dieser Mechanismus höchstens nutzbar, wenn auch für jede Teilaufgabe im Aufgaben-HTML jeweils ein eigenes <form>-Element angelegt wird! Andernfalls ließen sich Eingaben auch zu anderen Teilaufgaben nicht einsenden, ohne im Pflicht-Dateifeld eine Datei ausgewählt zu haben, und das, obwohl diese ausgewählte Datei ja beim Einsenden jeder anderen Teilaufgabe nicht als Einsendung gespeichert würde!

Allgemein empfehlen wir, ein Pflichtfeld wirklich nur dann einzusetzen, wenn die gesamte Aufgabe allein aus diesem Dateiupload-Feld (als FeldA1) besteht und keine weiteren Teilaufgaben existieren!

Zum Zweiten wäre mit einer generellen Pflichtfeld-Regelung auch das Zurückziehen einer versehentlichen Einsendung durch Überschreiben per Leereinsendung nicht mehr möglich!

Daher empfehlen wir, das Feld nur so lange zum Pflichtfeld zu machen, wie der Student die Teilaufgabe noch nicht bearbeitet hat. D.h. ruft er die Aufgabenseite auf und hat noch nie eine Datei hochgeladen, ist das Upload-Feld ein Pflichtfeld. Hat er aber über dieses Pflichtfeld schon einmal eine Datei eingesendet und ruft die Aufgabe erneut auf, handelt es sich nicht mehr um ein Pflichtfeld, so dass ein Zurückziehen der letzten Einsendung per neuer Leereinsendung möglich ist. Das lässt sich mit Hilfe der oben eingeführten Steuer-Variablen $IfNotExistsA1 wie folgt realisieren:

<p>
<input type="file" name="FeldA1" class="$IfNotExistsA1(required)" data-if-empty="Keine Datei eingesendet!" data-ignore="empty">
<button type="submit" name="einsendenA">Datei einsenden</button>
<br>
$IfExistsA1(Ihre zuletzt hochgeladene Datei: )$FeldA1</p>
	

Der Aufgabenerstellungsassistent für handbewertete Aufgaben geht derzeit übrigens genauso vor wie hier beschrieben (nur für Aufgaben, die wirklich nur aus einem Dateiupload bestehen, höchstens noch mit einer Bestätigungs-Checkbox kombiniert).

Hinweis: Auch für die Quittungsseite empfehlen sich besondere Maßnahmen, worauf im entsprechenden Kapitel noch gesondert eingegangen wird.

Spezialfälle: Dateiuploads für mehrere Dateien

Ein „einfacher“ Dateiupload, also die Verwendung eines Eingabefelds <input type="file" name="FeldB1" …> mit einem Submitbutton der Art <input type="submit" name="einsendenB" …> (wie in obigem begleidenten Fallbeispiel), bedingt, dass ein Student zum im Formular verwendeten Eingabefeld genau eine Datei einsenden kann. Jede spätere, erneute Einsendung einer Datei überschreibt die vorherige Einsendung.

Soll ein Student mehr als eine Datei einsenden (können), sind folgende Fälle zu unterscheiden:

n Einzel-Uploads

Ist die Anzahl n der genau oder maximal einzusendenden Dateien bekannt (z.B. jeder Student soll bis zu 4 oder immer genau 3 Dateien einsenden), so können natürlich mehrere solcher „normalen“ Dateiuploads wie oben beschrieben verwendet werden.

Dabei sollte beachtet werden, dass für jedes Dateiupload-Feld jeweils eine eigene Teilaufgabe angelegt wird, die genau ein File-Input-Feld und einen eigenen Einsenden-Button (Upload-Button) enthält, z.B.:

<form method="POST"
      action="$WebAssignServer/$Veranstaltername/EinsendungMultipart/$KursNr/$VersionsNr/$AufgabenheftNr/$AufgabenNr"
      enctype="multipart/form-data">

<p>Datei 1: <input type="file" name="FeldA1" data-if-empty="Keine Datei eingesendet!" data-ignore="empty"> 
<button type="submit" name="einsendenA">hochladen</button><br>
$IfExistsA1(Ihre zuletzt hochgeladene Datei: )$FeldA1HREF</p>

<p>Datei 2: <input type="file" name="FeldB1" data-if-empty="Keine Datei eingesendet!" data-ignore="empty"> 
<button type="submit" name="einsendenB">hochladen</button><br>
$IfExistsB1(Ihre zuletzt hochgeladene Datei: )$FeldB1HREF</p>

</form>

Der Grund, warum jedes Upload-Feld eine eigene Teilaufgabe bilden sollte, ist, dass so für jedes der Upload-Felder auch nachträglich jede Datei einzeln wieder aktualisiert werden kann.

Würden Sie dagegen mehrere „normale“ Dateiupload-Felder zu einer Teilaufgabe zusammengefassen, so würden immer alle gemeinsam eingesendet. Wählte ein Student, der schon einmal Dateien hochgeladen hat, dann nur in einem der Upload-Felder eine neue Datei aus, ließe die restlichen Felder jedoch leer, so würde er vermutlich erwarten, dass er damit nur diese eine frühere Einsendung überschreibt, tatsächlich würden jedoch alle früher zu der Teilaufgabe eingesendeten Dateien überschrieben, da für diejenigen Upload-Felder, zu denen er keine neue Datei ausgewählt hat, eine leere Einsendung erzeugt würde.

Multi-Dateiupload (mehrstufiger Upload)

Das Übungssystem bietet inzwischen die Möglichkeit, ein einziges File-Upload-Formularfeld zu verwenden und darin den Upload einer oder mehrerer (beliebig vieler) Dateien zu erlauben. Die Uploads können dann nacheinander erfolgen, d.h. ein Student kann eine erste Datei einsenden, später eine zweite, dritte u.s.w. Datei durch weitere Uploads hinzufügen.

Zu diesem Zweck sehen Sie wieder (wie beim Einzel-Upload auch) eine Teilaufgabe vor, die aus einem Datei-Upload-Feld und einem Submit-Button besteht, aber verwenden Sie für den Submit-Button statt einsendenX den Namen einsendenPlusX (wobei X der Buchstabe ist, der die Teilaufgabe bezeichnet).

Der Plus-Zusatz bedeutet, dass jede mit diesem Button zu einem Feld der genannten Teilaufgabe eingesandte Datei nicht die vorherige Dateieinsendung überschreiben, sondern vielmehr ergänzen soll:

Falls in einem solchen File-Upload-Feld auch ZIP-Dateien hochladbar sind (Sie also kein accept-Attribut, s.o., hinzugefügt haben, das erlaubte Dateitypen festlegt, ohne ZIP-Dateien mit zu erlauben), kann ein Student seinerseits auch mehrere Dateien gezippt in einem Schritt hochladen. In dem Fall gilt im Allgemeinen:

Sie können das File-Input-Element außerdem auch mit dem Attribut multiple ausstatten: Dann erlaubt der Browser die Auswahl von mehr als einer Datei zum Upload, so dass der Nutzer auch in einem einzigen Schritt gleich mehrere Dateien zu seiner Einsendung hinzufügen kann (ohne diese als ZIP-Datei einsenden zu müssen).

Namenskollisionen und Duplikate: Haben eine schon vorliegende und eine später hinzuzufügende Datei denselben Namen, wird die später eingesandte i.d.R. automatisch umbenannt (durch Anhängen von _1 oder bei Bedarf einer größeren Nummer), so dass beide Dateien nebeneinander im resultierenden ZIP vorhanden sind. Ausnahme: Wenn zwei gleichnamige Dateien identisch sind, wird in der Regel kein Duplikat gespeichert, sondern nur eine der beiden gleichen Dateien aufgehoben.

Dateityp-Einschränkungen: Falls Sie für ein File-Upload-Feld ein accept-Attribut angegeben haben, das neben bestimmten Dateitypen (wie PDF) auch ZIP-Dateien erlaubt, ändert sich obige Semantik des ZIP-Uploads wie folgt: Aus der hochgeladenen ZIP-Datei werden nur diejenigen Dateien zur bestehenden Einsendung hinzugefügt, deren Dateiendung in der accept-Liste aufgeführt ist (ohne .zip). (Mime-Type-Angaben im accept-Attribut werden beim ZIP-Upload ignoriert, da die Mime-Typen von Dateien im ZIP nicht direkt zur Verfügung stehen.) Beispiel: Falls Sie accept=".jpg,.jpeg,.gif,.png,image/*",.zip,application/zip im Dateiupload-Feld annotiert haben, so wird durch Mime-Typ image/* zwar der Browser angewiesen, bei Einzel-Dateiuploads beliebige Bilddateien zu akzeptieren, aus hochgeladenen ZIP-Dateien dagegen werden nur die Dateien mit den explizit aufgezählten Dateiendungen .jpg, .jpeg, .gif und .png (ohne Beachtung der Groß-/Kleinschreibung) entpackt und der Einsendung hinzugefügt.

Zurücksetzen/Löschen: Da durch den einsendenPlusX-Button nur neue Dateieinsendungen hinzugefügt werden können, jedoch keine früheren Einsendungen mehr überschrieben werden, sollte den Studenten zusätzlich ein Löschen-Button zum Zurücksetzen der bisherigen Einsendungen angeboten werden, damit sie wenigstens im Zweifel alles bisher Hochgeladene wieder löschen/zurückziehen und neu beginnen können.

Zu diesem Zweck kann ein zweiter Submit-Button mit Namen einsendenLeerX zur selben Teilaufgabe hinzugefügt werden. Sein allgemeines Verhalten wurde schon unter Spezielle Submit-Buttons erwähnt. In diesem Kontext führt er dazu, dass die bestehende (Multi-)Dateieinsendung durch eine leere Einsendung überschrieben wird, also alle bisher eingesendeten Dateien effektiv wieder gelöscht werden.

Es ist sinnvoll, einen solchen Löschen-Button nur dann anzuzeigen, wenn überhaupt eine nicht-leere Einsendung in diesem Feld vorliegt, was über die Kontrollvariable $IfNotEmptyXY (mit X = Teilaufgabenkennung (Großbuchstabe) und Y = Feldnummer) gesteuert werden kann.

Beispiel für eine Teilaufgabe (hier mit Kennung D, also als vierte Teilaufgabe eines Gesamt-Aufgabenformulars) zum Multi-Dateiupload mit Anzeige der vorliegenden Einsendung (auch, falls sie leer ist) und Löschen-Button (nur falls eine nicht-leere Einsendung vorliegt):

<p>Dateien hochladen: 
<input type="file" name="FeldD1" multiple data-ignore="empty" data-if-empty="Keine Dateien hochgeladen oder alle wieder gelöscht!">
<button type="submit" name="einsendenPlusD">Datei(en) hinzufügen</button><br>
$IfExistsD1
  Ihre bisher hochgeladenen Dateien: $FeldD1
  $IfNotEmptyD1
    <button type="submit" name="einsendenLeerD" 
            onclick="return confirm('Wirklich alle bisher hochgeladenen Dateien wieder zurückziehen? (Sie können anschließend weiterhin neue Dateien hochladen.)');">
            Löschen</button>
  $/IfNotEmptyD1
$/IfExistsD1

Auch hier haben wir per data-ignore="empty" festgelegt, dass die Aufgabe nach Drücken des Löschen-Buttons wieder als (von diesem Studenten) unbearbeitet gelten soll (sofern nicht zu anderen Teilaufgaben zu bewertende Eingaben enthalten).

n Dateien als Sammel-Upload (Multi-File-Submit)

Der Vollständigkeit halber sei noch eine dritte Möglichkeit erwähnt. Wie im ersten Fall geht diese von einer festen Anzahl von Dateiupload-Formularfeldern aus, über die also maximal eine bestimmte Anzahl n von Dateien eingesendet werden kann. Im Unterschied zu beiden vorhergehenden Varianten bilden alle n File-Inputs aber eine einzige Teilaufgabe, die Dateien werden also immer zusammen „als Einheit“ eingesendet. Wenn Sie nun auch noch allen File-Inputs denselben Namen geben, diese also aus Übungssystem-Sicht zu einem einzigen Eingabefeld zusammenfassen (analog zu Checkbox- oder Radiobutton-Inputs), so wird beim Betätigen des einsendenX-Buttons genau eine Dateieinsendung erzeugt, die alle in diesen Feldern hochgeladenen Einzeldateien umfasst. Ähnlich wie beim oben beschriebenen Multi-Dateiupload werden dabei alle hochgeladenen Dateien (sofern es mindestens zwei sind) zu einer ZIP-Datei zusammengefasst.

Beispiel für bis zu n = 3 hochzuladende Dateien:

<form method="POST"    
      action="$WebAssignServer/$Veranstaltername/EinsendungMultipart/$KursNr/$VersionsNr/$AufgabenheftNr/$AufgabenNr" 
      enctype="multipart/form-data">
    <p>Wählen Sie bis zu drei Dateien aus, die Sie einsenden wollen
       (eine frühere Einsendung wird komplett überschrieben):</p>
    <p>
        <input type="file" name="FeldA1" data-ignore="empty" data-if-empty="Keine Datei hochgeladen"><br>
        <input type="file" name="FeldA1"><br>
        <input type="file" name="FeldA1"><br>
        <input type="submit" name="einsendenA"  value="einsenden"><br>
        $IfExistsA1(Ihre letzte Einsendung: )$FeldA1
    </p>
</form>

Auch hier haben wir wieder per data-ignore="empty" festgelegt, dass die Aufgabe als unbearbeitet interpretiert werden soll, falls keine einzige Datei hochgeladen wurde. Es sei nochmals daran erinnert, dass im Fall von mehreren Input-Tags zum selben Feldnamen (wie hier) die Data-Attribute nur an einem dieser Tags (einmal pro Feldname) anzugeben sind.

Beliebig viele Dateien als Sammel-Upload (Multi-File-Submit)

Eine Variante des letzten Abschnitts ist die Möglichkeit, nicht eine feste Anzahl von mehreren File-Input-Feldern in die Aufgabenseite einzubauen, sondern ein einziges Input mit multiple-Attribut: In einem solchen Input kann der Nutzer mehr als eine Datei auswählen. Tut er das und lädt in einem Schritt mehrere Dateien hoch, werden diese vom Online-Übungssystem ebenfalls zu einer ZIP-Datei zusammengefasst.

Beispiel:

<form method="POST" action="$WebAssignServer/$Veranstaltername/EinsendungMultipart/$KursNr/$VersionsNr/$AufgabenheftNr/$AufgabenNr" enctype="multipart/form-data">
<p>Wählen eine oder mehrere Dateien aus, die Sie einsenden wollen (eine frühere Einsendung wird komplett überschrieben):</p>
<p>
  <input type="file" name="FeldA1" multiple data-ignore="empty" data-if-empty="Keine Dateien hochgeladen!"><br>
  <input type="submit" name="einsendenA"  value="einsenden"><br>

  $IfExistsA1(Ihre letzte Einsendung: )$FeldA1
</p>
</form>

Dieses Beispiel verhält sich praktisch wie ein einfacher Dateiupload, nur dass eben mehrere Dateien auf einmal hochgeladen werden können. Jeder neue Upload ersetzt den vorherigen (also alle zuvor hochgeladenen) Dateien komplett.

Im Normalfall würden wir statt dessen aber eher den oben beschriebenen mehrstufigen Multi-Dateiupload vorziehen, der auch das Hochladen in mehreren Schritten, also das spätere Hinzufügen von Dateien erlaubt.

Teilaufgaben und Eingabefelder erzeugen

Nachdem Sie die Aufgaben-HTML-Datei (z.B. aufgabe1.1.html) fertiggestellt haben (online bearbeitet oder offline bearbeitet und dann als Kursressource hochgeladen), öffnen Sie wieder die Ansicht der fortgeschrittenen Aufgabenerstellung. In der Rubrik »Aufgabenseite« finden Sie dort außer den Icons zum Bearbeiten oder Ansehen der Aufgabenseite unten eine Unterrubrik »Aufgabenseite analysieren und Datenbank anpassen« (vgl. Abbildung zu Beginn des Abschnitts Aufgabenformular erstellen). Zur ersten Kontrolle Ihrer Datei betätigen Sie den Button »Vorlage analysieren« und kontrollieren Sie die anschließend eingeblendete Ausgabe. Diese informiert Sie z.B. darüber, wieviele Teilaufgaben, Submit-Buttons und Eingabefelder in der HTML-Datei erkannt wurden, auch Details wie der Inhalt des data-if-empty-, data-ignore- oder accept-Attributs müssen dort aufgelistet werden – fehlen diese, wurden die Attribute nicht erkannt, z.B. weil sie falsch geschrieben wurden.

Für das begleitende Fallbeispiel aus dem vorhergehenden Abschnitt „Eingabefelder“ sieht das Analyseergebnis dann z.B. wie folgt aus:

Analyseergebnis für Aufgabenseite mit obigem Beispiel-Formular
Analyseergebnis für Aufgabenseite mit obigem Beispiel-Formular

Stimmen die Analyseergebnisse mit der intendierten Aufgabenformular-Struktur überein, betätigen Sie den zweiten Button: »Teilaufgaben und Eingabefelder erzeugen«.

Dieser Schritt ist sehr wichtig, denn er überträgt die in der HTML-Datei gefundenen Strukturinformationen in die Datenbank. Damit wird insbesondere dafür gesorgt, dass die Datenbank für die Speicherung von Einsendungen in allen vorkommenden Eingabefeldern vorbereitet wird. (Eine typische Fehlersituation: Einem Aufgabenformular wird nachträglich ein Eingabefeld hinzugefügt, jedoch vergessen, diese Funktion erneut aufzurufen. Resultat: Eingaben von Studenten in dem neuen Eingabefeld werden nicht gespeichert.)

Auch Informationen aus den Attributen data-if-empty, data-ignore und accept der input-Elemente werden in diesem Schritt erkannt und in die Datenbank übertragen. Nach Änderungen an diesen Attributen in der HTML-Datei muss also ebenfalls diese Funktion erneut aufgerufen werden, damit die Änderungen tatsächlich auch wirksam werden! (Änderungen am accept-Attribut sind zwar für die clientseitige Prüfung im Browser sofort nach Speicherung wirksam, aber damit auch die serverseitige Filterung des Übungssystems sich auf ein anderes Accept-Muster umstellt, ist ebenfalls diese Funktion nach dem Speichern der Änderungen auszuführen!)

Eine dritte Auswirkung dieser Funktion ist das Anlegen der Teilaufgaben (eine Teilaufgabe pro einsendenX-Button), was sich auch direkt im User-Interface der fortgeschrittenen Aufgabenerstellung niederschlagen kann: Dort findet sich nun eine Rubrik pro Teilaufgabe:

Erzeugte Teilaufgaben `A` und `B` für obiges Fallbeispiel
Erzeugte Teilaufgaben A und B für obiges Fallbeispiel

Nun können für jede Teilaufgabe die Einstellungen vorgenommen werden, hier die erreichbaren Punkte. (Die in einer Aufgabe insgesamt erreichbare Punktzahl errechnet sich als Summe der Punktzahlen aller Teilaufgaben.)

Soll ein Vorkorrekturmodul angebunden werden, das bereits programmiert und in Betrieb ist, so dass es sich beim Übungssystem für diesen Kurs als zur Verfügung stehendes Modul angemeldet hat, dann kann es unter »Selbsttest-/Vorkorrekturmodul« über den »…«-Button ausgewählt werden. Andernfalls ist es möglich, den Modulnamen bereits einzutragen, unter dem sich zukünftig einmal ein Modul anmelden soll. Sobald ein Modulname vergeben ist, erscheint auch ein zusätzlicher Button zum Festlegen von Properties fürs Vorkorrekturmodul. Ob und welche Properties es erwartet, hängt ganz vom Modul ab.

Im Fallbeispiel gehen wir davon aus, dass keine Vorkorrekturmodule eingesetzt werden und lassen die Felder daher leer.

Quittungsvorlage(n) erstellen

Nach dem Erstellen des Aufgabenformulars würde man es sicher gerne testen, aber noch ist ein Test relativ witzlos, da man mit dem fertigen Formular zwar schon Daten einsenden könnte, jedoch noch keine Anzeige der eingesendeten Daten unterstützt wird, anhand derer man sehen könnte, was eingesendet wurde. Als nächster Schritt empfiehlt sich daher das Erstellen der Quittungsseiten, die nach einer Einsendung ein erstes Feedback geben, insbesondere anzeigen sollen, was wirklich eingegangen ist.

Da Einsendungen separat pro Teilaufgabe erfolgen, muss für jede Teilaufgabe eine separate Quittungsseite erstellt werden, welche die Einsendungen zur jeweiligen Teilaufgabe bestätigt. (Wenn Ihre Aufgabe nicht in Teilaufgaben zerlegt ist, also alle Eingaben zur gesamten Aufgabe zusammen eingesendet werden, erstellen Sie natürlich auch nur eine Quittungsseite.)

Die zu erstellenden Quittungs-Seitenvorlagen werden Ihnen in der fortgeschrittenen Aufgabenerstellung einzeln angezeigt (vgl. obige Screenshots). Betätigen Sie jeweils den »Neue Einsendungsbestätigungsseite generieren!«-Button, um eine erste Version der jeweiligen Quittungsseite erstellen zu lassen. Anschließend erhalten Sie wieder dieselben Bearbeitungsmöglichkeiten wie schon bei der Aufgabenseite: erstens die Anzeige der Rohfassung im Browser samt Download-Möglichkeit oder Editiermöglichkeit mit Browser-Editor-Suite, zweitens die Online-Bearbeitung in einem Web-basierten Editor.

Bei einer solchen Quittungsseite handelt es sich wieder um eine normale HTML-Seite, die spezielle Variablen als Platzhalter für diverse vom Übungssystem einzufügende Informationen enthält.

Für die Teilaufgabe A des obigen Fallbeispiels wird in etwa folgende Quittungsvorlage generiert:

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Best&auml;tigung Ihrer Einsendung</title>
</head>
<body>
  <div style="background-color:#ccc; padding: 0.2em">
    Kurs $KursNr, &bdquo;$Kursname&ldquo;, $Versionsname<br>
    Aufgabenheft $AufgabenheftNr, Aufgabe $AufgabenNr
  </div>
  <h1>Best&auml;tigung Ihrer Einsendung</h1>
  $EMBED
  <p>von $Vorname $Nachname, Matrikelnr. $MatrikelNr<br>
  f&uuml;r &bdquo;$Kursname&ldquo;, $KursNr<br>
  Aufgabenheft $AufgabenheftNr, Aufgabe $AufgabenNr, Teilaufgabe a</p>
  <hr><br>
  <p>In Feld 1 haben Sie eingegeben: </p>
  <pre>$Feld1P</pre>
  <p>In Feld 2 haben Sie eingegeben: </p>
  <pre>$Feld2P</pre>
  $/EMBED
  <hr>
  <a href="$WebAssignServer/$Veranstaltername/StudentenStartSeite/$KursNr/$VersionsNr/">Zur&uuml;ck zur Aufgaben&uuml;bersicht</a>
</body>
</html>

Die Seite könnte unverändert so eingesetzt werden, sie enthält z.B. bereits Embedding-Marken und Variablen zur Einbindung der Feldinhalte. Die eher generischen Texte/Beschriftungen wie »In Feld 1 haben Sie eingegeben:« möchte man jedoch z.B. oft gerne gegen speziellere Texte mit Bezug zur konkreten Aufgabenstellung austauschen. Eventuell möchte man auch gewisse Formatierungen z.B. per CSS ändern oder die Feldeingaben z.B. in einer Tabelle darstellen, falls auch die Eingabefelder im Aufgabenformular tabellarisch angeordnet waren.

Auch die Art der Einbindung der Einsendungen lässt sich noch beeinflussen, wie im Folgenden genauer beschrieben wird.

Variablen für Quittungsseiten

Sie können alle oben im Abschnitt Variablen des Online-Übungssystems vorgestellten Standard-Variablen auch hier wieder verwenden. Insbesondere wird der Einsatz von $EMBED / $/EMBED empfohlen, um den damit markierten Inhalt der Quittungsvorlage in eine zentrale Seitenlayout-Vorlage einzubetten, die ein globales Webdesign und Menüs zur Navigation z.B. zurück zur Aufgabenstellung oder zu den anderen Aufgaben desselben Hefts bietet.

Neben diesen Standard-Variablen spielen in Quittungsseiten vor allem diejenigen Variablen eine zentrale Rolle, über welche die Einsendungen und ggf. Vorkorrekturen in der Quittung präsentiert werden. Darüber hinaus gibt es noch spezielle Variablen mit Studentendaten, die in Quittungen und Korrekturen sinnvoll eingesetzt werden können (vgl. z.B. die obige generierte Quittungsseite).

Feldvariablen

Zur Anzeige der studentischen Eingaben in der Quittung spielen die Feldnamen eine zentrale Rolle, mit denen die Eingabefelder im Formular der Aufgabenseite benannt wurden. Die entsprechenden Variablen zum Einfügen der Feldwerte in die Aufgabenseite haben praktisch denselben Namen wie die Felder auch, nur entfällt bei Quittungsseiten die Angabe des Buchstabens für die Teilaufgabe, da jede Quittungsseite ohnehin teilaufgabenspezifisch ist23.

Eine Variable für Feldinhalte (in Quittungen!) hat folgenden Grundaufbau:

$Feld<FeldNr><Suffix>

Die Feldnummer entspricht der auch im Feldnamen angegebenen, und das Suffix ist optional und kann die Darstellung des Feldwerts beeinflussen.

Im begleitenden Fallbeispiel mit zwei Teilaufgaben gibt es drei Eingabefelder mit den Namen FeldA1, FeldA2 und FeldB1. Dazu wären zwei Quittungsseiten zu erzeugen, wobei in quittung1.1.a.html die Variablen $Feld1 und $Feld2, sowie in quittung1.1.b.html die Variable $Feld1 einzubinden sind.

Die folgende Tabelle soll die möglichen Suffixe erläutern; die Feldnummer 1 in den Variablenbezeichnern ist exemplarisch zu verstehen und durch die jeweils konkrete Feldnummer zu ersetzen:

Variable Bedeutung
$Feld1 Automatik-Modus: Texte werden unverändert ins HTML übernommen, Dateiuploads normalerweise als Link dargestellt, Bilddateien in geeigneten Formaten als Inline-Bilder statt Links eingebunden, und der Inhalt hochgeladener Plaintext-Dateien wird direkt eingebettet (nicht bei XML- oder HTML-Uploads). Im Fall von Texteingaben gilt: Die Eingabe des Studenten wird unverändert (unescaped) eingebettet! Falls der Student HTML-Markup eingegeben hat (bzw. das Eingabefeld eine mit WYSIWYG-Editor versehene Textarea ist, in die der Student formatierten Text eingab, welcher wiederum als HTML-Markup eingesendet wird), wird dieses auch 1:1 ins Quittungs-HTML eingefügt und entsprechend vom Browser als HTML-Markup geparst. Dieser Modus eignet sich im Allgemeinen nicht gut für Plaintext-Einsendungen: Insbesondere darf eine solche Eingabe normalerweise keine Kleiner-Zeichen < oder Ampersands & als Payload enthalten, da diese vom Browser als Tagklammern oder Entitäten interpretiert werden könnten!
$Feld1P Automatik-Modus in Programm-/Plaintext-Variante: Erkennt ebenfalls automatisch Dateiuploads, aber im Fall von Texteingaben gilt: Eingabe des Studenten wird als Plaintext interpretiert und daher vor der Einbettung in die Quittungs-HTML-Seite geeignet „escaped“, d.h. alle Vorkommen von <, > und & werden ersetzt durch &lt;, &gt; bzw. &amp;. Sorgt außerdem (durch Einfügen von $NOEXPAND und $/NOEXPAND, s.o.) dafür, dass in der Einsendung enthaltene mit $ beginnende Strings wie $KursNr bei der Auslieferung der fertigen Korrektur an den Studenten nicht vom Übungssystem als Variablen fehlinterpretiert werden können. Im Fall von Dateiuploads gilt zusätzlich: Auch hochgeladene XML- oder HTML-Dateien werden nicht verlinkt, sondern deren Inhalt in die Quittung eingebunden, wobei auch hier Tags und Entities escaped werden, also deren Quelltexte angezeigt werden.
$Feld1HREF Nur für Dateiupload-Felder: Erzwingt die Ausgabe eines Links zur hochgeladenen Datei, verhindert also die Einbettung von Inline-Bildern oder Textinhalten eingesendeter Dateien. Als Linkbeschriftung wird (wie im Automatikmodus) der Dateiname verwendet.
$Feld1URL Nur für Dateiupload-Felder: Gibt nur den URL zur Dateieinsendung aus, sollte also selbst innerhalb des href-Attributs eines (selbst beschrifteten) Links stehen, z.B. <a href="$Feld1URL">Ihre hochgeladene Datei</a>.
$Feld1IMG Nur für Dateiupload-Felder: Erzwingt die Ausgabe als img-Tag mit dem URL im src-Attribut, selbst wenn die Automatik die Einsendung nicht als so darstellbare Bilddatei erkannt hat (nur in Ausnahmefällen zu verwenden).
$Feld1PLAIN Erzwingt die Einbettung des eingesendeten Inhalts als String in die Quittung, selbst wenn es sich um einen Dateiupload handelt, der nicht anhand seines Content-Types als Text erkannt wurde24 und im Automatik-Modus daher als Download-Link dargestellt würde. Texte werden nicht escaped, siehe $Feld1!
$Feld1PPLAIN Kombination aus $Feld1P und $Feld1PLAIN: Erzwingt Dateiinhalts-Einbettung mit Escaping.
$Feld1TEX Erzwingt die Interpretation des eingesandten Textes als TeX-Formel und deren Rendering (vgl. TeX-Formelsatz).
$Feld1JN Bewirkt die Ausgabe von »Nein«, falls in dem Feld nichts eingesendet wurde, ansonsten von »Ja«. Eine data-if-empty-Einstellung für dieses Feld wird ignoriert. Vorgesehen für einzelne Checkboxen (statt Checkbox-Gruppen) in Eingabeformularen, die als Ja-/Nein-Antworten interpretiert und in der Quittung entsprechend ausgegeben werden sollen.

Das bedeutendste Suffix ist also das P: Variablen mit P-Suffix oder ganz ohne Suffix beschreiben beide eine Inhalts-Anzeige im Automatik-Modus. Der Unterschied liegt darin, ob einzufügender Textinhalt escaped wird oder nicht.

Faustregel:
Reine Texteingaben sollten mit P-Suffix eingebunden werden, damit darin enthaltene <-, >- und &-Zeichen zuverlässig angezeigt und nicht als HTML-Markup fehlinterpretiert werden.
Bei Plaintext-Textareas gilt zusätzlich: Damit auch die Zeilenumbrüche oder Einrückungen durch Leerzeichen der Eingabebox mit in die HTML-Seite übernommen werden (nicht vom Browser „reflowed“ werden), sollte die Variable in einem pre-Element stehen!
Einsendungen aus mit WYSIWYG-HTML-Editor versehenen Textareas dagegen dürfen nicht mit P-Suffix eingebunden werden (und nicht in einem pre-Element stehen), denn diese sind durch HTML-Tags formatiert, welche daher auch vom Browser auch als solche interpretiert werden sollen. Eine $FeldiP-Variable würde in diesem Fall den HTML-Quelltext der studentischen HTML-Einsendung in der Quittung zeigen!

Betrachten Sie noch einmal oben stehenden Quelltext einer generierten Quittungsseite: Das Übungssystem hat automatisch die in den meisten Fällen sinnvollste Kombination <pre>$Feld1P</pre> eingefügt, geht also davon aus, dass in Feldern im Normalfall (wenn es sich nicht um Datei-Uploads handelt) reiner Text eingesendet wird, der aus einer Textarea stammen könnte, also Zeilenumbrüche und Whitespace-Formatierungen enthalten könnte.
Speziell in diesem Beispiel könnten die pre-Tags auch entfernt werden, da die Eingaben aus einem einzeiligen Text-Input und einer Checkbox-Gruppe stammen. Das pre sorgt in diesem Fall standardmäßig auch noch für eine Formatierung in nicht-proportionaler Schrift. Aber eine solche Formatierung (sofern überhaupt gewünscht) könnte man auch per CSS erreichen.

Vorkorrektur

Falls Sie ein Selbsttest-/Vorkorrekturmodul (im Allgemeinen nur als „Vorkorrekturmodul“ bezeichnet, auch wenn es der Realisierung von Selbstkontrollaufgaben dient) verwenden, sollten Sie im Normalfall neben den Eingaben auch die Rückmeldung des Vorkorrekturmoduls mit in die Quittung einbeziehen, um den Studenten ein Sofort-Feedback25 zu liefern.

Im Normalfall wird dazu einfach die Variable $Vorkorrektur eingebunden.

Ein (SOAP-)Vorkorrekturmodul kann einen Text (wahlweise Plaintext oder HTML-formatierten Text) ausgeben sowie optional eine Menge von Dateien (z.B. Anlagen zur Korrektur, modifizierte/korrigierte Dateieinsendungen von Studenten etc.).

Falls Sie ein Modul mit solchen Dateianlagen einsetzen, stehen Ihnen auch hier Varianten dieser Variable durch verschiedene Suffixe zur Auswahl, mit denen Sie entweder alle Vorkorrekturen ausgeben können oder eine ganz bestimmte über ihren Referenz-Namen (i.F. xyz) ansprechen können. (Das Vorkorrekturmodul muss jeder Datei-Vorkorrektur einen solchen Namen zuordnen, über den man diese gezielt referenzieren kann.)

Variable Bedeutung
$Vorkorrektur Gibt den vom Vorkorrekturmodul erzeugten Text aus (sofern vorhanden) – automatisch escaped, falls es sich um Plaintext handelt bzw. unverändert, falls er HTML-formatiert ist26. Ggf. vom Vorkorrekturmodul erzeugte Dateien werden durch diese Variable nicht ausgegeben.
$Vorkorrekturen Alle Vorkorrekturen werden ausgegeben, d.h. der Text wie im Falle von $Vorkorrektur sowie zusätzlich ggf. eine Aufzählung (Bulleted List) von Downloadlinks zu allen vom Vorkorrekturmodul erzeugten Dateien.
$VorkorrekturHREF(xyz) Erzeugt einen Downloadlink zur Dateivorkorrektur mit Referenz-Namen xyz (s.o.)
$VorkorrekturIMG(xyz) Versucht, die Dateivorkorrektur namens xyz als Bild (img) einzubinden. Sollte nur verwendet werden, wenn das Vorkorrekturmodul sicherstellt, dass die erzeugten Dateien dieses Namens immer Bilder in einem von Browsern unterstützten Format sind.
$VorkorrekturURL(xyz) Erzeugt lediglich den URL zur Vorkorrektur namens xyz, der manuell in der Quittungsseite in ein Attribut wie das href-Attribut eines Links oder das src-Attribut eines imgs eingesetzt werden kann.

Falls Sie eine Dateivorkorrektur mit einer der drei letztgenannten Variablen einbinden wollen und Ihr Vorkorrekturmodul ohnehin nur eine einzige Dateivorkorrektur erzeugt, kann die Namensreferenz (xyz) auch entfallen, d.h. es kann dann auch einfach eine Variable der Art $VorkorrekturIMG angegeben werden.

Student

Es ist sinnvoll, in Quittungen (falls ein Student sich diese z.B. ausdruckt und später jemandem vorlegen will) Matrikelnummer und Namen des Studenten mit auszugeben. Das können Sie mit folgenden Variablen erreichen:

Variable Bedeutung
$MatrikelNr Matrikelnummer des einendenden Studenten
$Vorname Vorname des einsendenden Studenten
$Nachname Nachname des einsendenden Studenten
$EMailAdresse E-Mail-Adresse des einsendenden Studenten

Automatisch generierte Quittungsseiten enthalten bereits einen Header mit Matrikelnummer und Namen des Studenten (siehe Listing oben).

Teilaufgabe
Variable Bedeutung
$TeilaufgabenNr Kleinbuchstabe (az), der die Teilaufgabe bezeichnet, zu der eingesendet wurde.
Spezial

Zunächst stehen Ihnen auch in Quittungsseiten dieselben Kontrollvariablen wie im Aufgabenformular zur Verfügung. Genau wie bei Feldvariablen auch, können Sie dabei die Teilaufgabenkennung weglassen, da jede Quittungsseite ohnehin teilaufgabenspezifisch ist (die Einsendung zu genau einer Teilaufgabe quittiert). So können Sie z.B. per $IfNotEmpty1(...) Text ausgeben, der nur sichtbar wird, wenn im Feld 1 der quittierten Teilaufgabe eine nicht-leere Einsendung vorliegt.

Speziell für Quittungen zu Dateiuploads gibt es noch folgende Spezialvariable, deren Anwendung im anschließenden Abschnitt noch demonstriert wird:

Variable Bedeutung
$HinweisLeereDateieinsendung Fügt einen zentral vom Übungssystem vorgegebenen Text in die Quittungsseite ein, der auf eine leere Einsendung hinweisen soll. (Der Wortlaut der Meldung kann sich jederzeit ändern, da der Text zentral vom ZMI gewartet wird.) Diese Variable sollte unbedingt innerhalb eines $IfEmpty…-Blocks stehen, also wirklich nur dann eingebunden werden, wenn eine Leereinsendung festgestellt wurde. (Zwischen diesen Variablen $IfEmpty…, $HinweisLeereDateieinsendung und $/IfEmpty… können Sie dann noch die Darstellung der Meldung gestalten, z.B. per $WarnungsBox…, s.u.)

Eigentlich eher für den Übungssystem-internen Gebrauch vorgesehen sind spezielle Variablen zur Einbindung farblich und mit Icons hervorgehobener Boxen für Erfolgs-, Fehler- oder Warnmeldungen. Für den Einsatz in Aufgaben sind diese normalerweise nicht zu verwenden, und wenn überhaupt (da es sich um Feedback handelt), dann vor allem in Quittungsseiten. (Die korrekte Anzeige solcher Boxen in Ihren Quittungs- oder Aufgabenressourcen setzt voraus, dass Ihr Kurs das jeweils aktuelle Webdesign für die Aufgabenseiten verwendet!)

Insbesondere die Warnmeldung kann im Kontext leerer Dateieinsendungen sinnvoll sein (siehe folgenden Abschnitt):

Variable Bedeutung
$WarnungsBox(Überschrift)…$/WarnungsBox Blendet eine Warnmeldung ein. Der Text in Klammern hinter dem öffnenden $WarnungsBox bildet die Überschrift, der Inhalt zwischen der schließenden Klammer und $/WarnungsBox den eigentlichen Inhalt der Box (HTML-Code).
$InfoBox(…)…$/InfoBox Analog für einen Informationstext
$ErfolgBox(…)…$/ErfolgBox Analog für eine Erfolgsmeldung
$FehlerBox(…)…$/FehlerBox Analog für eine Fehlermeldung
$ConfirmationBox(…)…$/ConfirmationBox Analog für eine Bestätigungsbox. (Gibt nur Sinn, wenn der Inhalt wiederum ein HTML-Formular mit Interaktionsmöglichkeit enthält.)

Quittungen zu (einfachen) Dateiuploads

Normalerweise wird eine Quittungsseite für jedes Eingabefeld i.W. eine Feld-Variable wie $FeldB1 enthalten, der ein geeigneter einleitender Text vorangestellt wird.

Speziell für Dateiuploads gibt es einige Suffixe wie HREF, die Sie an die Variable anhängen können, um je nach Dateityp die Darstellung (z.B. Darstellung eines hochgeladenen Bildes direkt in der Seite oder Darstellung immer Link) zu steuern, siehe obigen Abschnitt zu den Variablen.

Der vorangestellte Text könnte bei Dateiuploads z.B. lauten: „Die folgende Datei ist eingegangen:“

Somit könnte der Quittungsteil zu einem Dateiupload (wie in obigem begleitenden Fallbeispiel) wie folgt aussehen:

<p><strong>Die folgende Datei ist eingegangen:</strong>
$Feld1HREF</p>

Falls, wie im Abschnitt zu einfachen Dateiuploads im Aufgabenformular empfohlen, per data-if-empty-Attribut ein Ersatztext (z.B. „Es wurde keine Datei hochgeladen“) für leere Einsendungen festgelegt wurde, wird im Falle einer leeren Einsendung die Feld-Variable durch diesen Ersatztext ersetzt.

Nimmt nun aber ein Student eine Leereinsendung vor, vielleicht aus Versehen, indem er keine Datei auswählt, bevor er den Upload-Button drückt, wird er „nur“ eine Quittung der folgenden Art erhalten:

Bestätigung Ihrer Einsendung
Die folgende Datei ist eingegangen: Es wurde keine Datei hochgeladen.

Möchten Sie auf diesen Umstand prominenter hinweisen, können Sie in der Quittung gezielt eine Fallunterscheidung vornehmen und für den Fall einer Leereinsendung eine prominente Fehlerbox einblenden lassen:

$IfNotEmpty1
<p><strong>Die folgende Datei ist eingegangen:</strong>
$Feld1HREF</p>
<p>Bitte überprüfen Sie, ob die Datei fehlerfrei übertragen wurde. Im Zweifel können Sie den Upload wiederholen oder eine korrigierte Fassung der Datei einsenden.</p>
$/IfNotEmpty1
$IfEmpty1
$WarnungsBox($Feld1)
$HinweisLeereDateieinsendung
$/WarnungsBox
$/IfEmpty1

Hier wird zunächst zwischen $IfNotEmpty1 und $/IfNotEmpty1 ein Block eingeleitet, der nur angezeigt wird, falls im Feld 1 (der Teilaufgabe des Dateiuploads) eine nicht-leere Einsendung vorliegt, also wirklich eine Datei hochgeladen wurde. Darauf folgt ein mit $IfEmpty1 und $/IfEmpty1 geklammerter Block, der nur bei Leereinsendungen angezeigt wird. Somit wird immer genau einer der beiden Blöcke in der Quittung angezeigt.

Der erste Block für nicht-leere Dateieinsendungen enthält die bereits oben entworfene Standard-Quittung für eingegangene Dateien.

Den zweiten Block für leere Dateieinsendungen könnten Sie prinzipiell beliebig gestalten; in obigem Beispiel wird er aus „Fertigbausteinen“ des Online-Übungssystems zusammengefügt. So wird eine $WarnungsBox-Variable (s.o.) verwendet, um eine Standard-Warnungsbox des Übungssystems generieren zu lassen. Als Überschrift für die Warnungsbox (Text in Klammern hinter der öffnenden Variablen) wurde hier einfach $Feld1 eingesetzt, was wiederum, wie bereits bekannt, bei leeren Einsendungen durch den im Aufgabenformular per data-if-empty-Attribut festgelegten Ersatztext ersetzt wird. Natürlich können Sie hier auch direkt eine Überschrift wie „Keine Datei hochgeladen“ eintragen. Als Inhalt der Warnungsbox wurde in obigem Beispiel die Variable $HinweisLeereDateieinsendung gewählt, die durch einen Standardtext des Online-Übungssystems ersetzt wird.

Insgesamt sieht die Quittung bei leerer Dateieinsendung dann wie in folgendem Screenshot aus:

Warnungsbox bei leerer Einsendung
Warnungsbox bei leerer Einsendung

Einsendetests

Nachdem Sie Aufgabenformular und Quittungsvorlage(n) erstellt haben, können Sie nun erste Tests vornehmen:

Durch Aufrufen der Vorschau der Aufgabenseite erhalten Sie ein immer leeres Formular, in dem Sie als Aufgabenautor ohne anderen Login etwas einsenden können27. Sie können das leere Eingabeformular ganz oder teilweise ausfüllen, einsenden und überprüfen, ob die daraufhin angezeigte Quittung Ihre Eingaben enthält und auf die gewünschte Weise darstellt.

Ein paar typische Fehler:

Zum Test, ob auch existierende Einsendungen bei erneutem Aufruf der Aufgabenstellung korrekt in der Aufgabenseite wieder eingeblendet werden, müssen Sie sich direkt über die Kursstartseite unter »Studentenzugang« mit einem Teststudenten anmelden. In dieser Phase wird ein Teststudent mit Sonderrechten empfohlen, typischerweise der 7777777-Login. Die Sonderrechte erlauben ein Bearbeiten der Aufgabe auch außerhalb des Bearbeitungszeitraums und bei gesetzter Sperre (die es echten Studenten nicht erlaubt, auf die ggf. noch unfertigen Aufgaben zuzugreifen).

Korrekturvorlage erstellen

Sind Aufgabenformular und Quittungsvorlage(n) fertig, fehlt noch mindestens die Korrekturvorlage.

Eine typische Korrekturseite enthält folgende Abschnitte:

  1. Kopf mit Angabe des Studenten (Name, Matrikelnr), ggf. des Korrektors (bei manueller Korrektur) und Korrekturdatums, und natürlich mit der Angabe, um welche Aufgabe es geht (vorzugsweise mit Kursnummer und Semester).
  2. Einsendungen des Studenten.
  3. Ggf. Vorkorrekturen (vgl. Einsatzszenario für Vorkorrekturmodule) oder Autokorrektur.
  4. Bei manueller Korrektur werden in der Regel Abschnitte für Korrektor-Kommentare vorgesehen.
    • Bei In-Browser-Korrektur werden dazu Korrekturformularelemente in einer speziellen Syntax eingebunden. Bei der Korrektur werden diese dann für den Korrektor in ein HTML-Formular konvertiert, bei der Ansicht einer Korrektur durch Betreuer oder Studenten werden an deren Stelle nur die Eingaben des Korrektors angezeigt.
    • Bei herkömmlicher HTML-Korrektur kann der Korrektor ohnehin an beliebiger Stelle in einer Korrekturseite Text einfügen. Dennoch ist es üblich, Kommentarabschnitte mit Überschrift und einem vom Korrektor zu ersetzenden Platzhaltertext vorzusehen.
  5. Anzeige der Bewertung, z.B. »Erreichte Punkte: 5 von 10«

Sie können sich auch hier wieder per Knopfdruck eine Korrekturseite autogenerieren lassen und diese anschließend nachbearbeiten. (Genau wie vor der Generierung der Quittungsseiten auch, sollte zuerst die Funktion Teilaufgaben und Eingabefelder erzeugen ausgeführt worden sein, dann werden automatisch die in Punkt 2. benötigten Feldvariablen eingefügt. Die automatisch erzeugte Korrekturseite für das begleitende Fallbeispiel hat etwa folgenden Aufbau:

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Einsendung zu &quot;$Kursname&quot;, Aufgabe $AufgabenheftNr.$AufgabenNr</title>
</head>
<body>
  <div style="background-color:#ccc; padding: 0.2em">
    Kurs $KursNr, &bdquo;$Kursname&ldquo;, $Versionsname<br>
    Aufgabenheft $AufgabenheftNr, Aufgabe $AufgabenNr
  </div>
  <h1>Einsendung zu $Aufgabenname</h1>
  $EMBED
  <p><strong>Einsendung von</strong> $Vorname $Nachname, Matrikelnr. $MatrikelNr</p>
  <p><strong>Korrektor:</strong> $Korrektor</p>
  <p><strong>Datum:</strong> $KorrekturDatum</p>
  <hr>
  <h2>Aufgabe 1 a)</h2>
  <h4>Eingabe in Feld 1:</h4>
  <pre>$FeldA1P</pre><p><hr>
  <h4>Eingabe in Feld 2:</h4>
  <pre>$FeldA2P</pre><p><hr>
  <h3>Anmerkungen</h3>
  <p>{hier bitte zus&auml;tzl. Anmerkungen eintragen}</p>
  <h3>Erreichte Punktzahl f&uuml;r Teil a: {hier bitte die erreichte Punktzahl eintragen}</h3><p><hr>
  <h2>Aufgabe 1 b)</h2>
  <h4>Eingabe in Feld 1:</h4>
  <pre>$FeldB1P</pre><p><hr>
  <h3>Anmerkungen</h3>
  <p>{hier bitte zus&auml;tzl. Anmerkungen eintragen}</p>
  <h3>Erreichte Punktzahl f&uuml;r Teil b: {hier bitte die erreichte Punktzahl eintragen}</h3><p><hr>
  $/EMBED
</body>
</html>

Auch diese Seite können Sie analog zur Quittungsseite nach Belieben anpassen und die generischen Überschriften wie »Aufgabe 1 a)« oder »Eingabe in Feld 1:« durch sprechenderen Text passend zur Aufgabenstellung ersetzen.

Im Folgenden sei genauer auf den oben aufgelisteten Grundaufbau einer Korrekturseitenvorlage mit Blick auf dieses Beispiellisting eingegangen:

Zu 1.: Schon unter Quittungsvorlage erstellen wurde für Quittungen ein solcher Kopf vorgeschlagen, in Korrekturen ist er noch wichtiger. Falls Sie keinen solchen Kopf einfügen, aber Embedding ($EMBED) mit den Standard-Seitenvorlagen des Online-Übungssystems verwenden, wird durch die Korrektur-Seitenlayout-Vorlage automatisch ein solcher Kopf eingefügt (in der Studenten-Ansicht), aber wenn Sie ihn selbst einfügen, sind sie nicht nur auf der sicheren Seite, sondern können sein Layout auch selbst beeinflussen.

Zu 2.: Dieser Teil der Korrekturseitenvorlage sieht fast genauso aus wie eine Quittungsvorlage, mit folgenden Unterschieden:

Ansonsten gilt das oben zum Erstellen von Quittungsvorlagen bereits Gesagte, insbesondere im Hinblick auf die Suffixe wie P und die Einbindung in pre-Elemente. Quittungs- und Korrekturvorlagen sollten hier zueinander konsistent gehalten werden, d.h. gleiche Felder in beiden Vorlagen gleich formatiert sein.

Zu 3.: Siehe nachfolgenden Unterabschnitt zu Vorkorrektur- und Autokorrektur-Variablen.

Zu 4.: Automatisch erzeugte Korrekturvorlagen sehen noch keine In-Browser-Korrektur vor, sondern lediglich einen Anmerkungs-Abschnitt pro Teilaufgabe. Das Einfügen von In-Browser-Korrekturelementen wird empfohlen, siehe separates Handbuch!

In der Regel, gerade bei In-Browser-Korrektur, ist 4. kein alleinstehender Abschnitt in der Korrekturseite, sondern die Korrektorkommentare werden normalerweise an verschiedenen Stellen zwischen den Einsendungen und ggf. Vorkorrekturen möglich sein.

Zu 5.: Die Datenbank des Online-Übungssystems speichert nur eine einzige Punktzahl zur gesamten Aufgabe: die erreichten Gesamtpunkte. Sollen dem Studenten Teilpunktzahlen für einzelne Fragen oder Teilaufgaben bekanntgegeben werden, kann dies nur durch entsprechende Texteinträge in der Korrekturseite erfolgen. Die oben abgebildete erzeugte Korrekturvorlage sieht z.B. in der Korrekturseite manuelle Einträge der erreichten Teilpunkte pro Teilaufgabe vor. Nach Speicherung der Korrekturseite muss der Korrektor noch die erreichte Gesamtpunktzahl über ein Status-Formular in der Datenbank speichern. Soll diese Gesamtpunktzahl auch in der Korrekturseite angezeigt werden, kann dafür die Variable $KorrekturPunkte verwendet werden – dann muss der Korrektor die Punktzahl nicht redundant an zwei Stellen eintragen. Folgendes Markup wird z.B. in automatisch erzeugte Korrekturseitenvorlagen eingebunden, wenn die Aufgabe nicht in Teilaufgaben zerlegt ist:

<h3>Anmerkungen</h3>
<p>{hier bitte zus&auml;tzl. Anmerkungen eintragen}</p>
<h3>Erreichte Punktzahl: $KorrekturPunkte von $MaximalPunkte</h3>

So etwas können Sie natürlich auch dann in Ihre Korrekturseite schreiben, wenn Sie Teilaufgaben verwenden.

Variablen für Korrekturseiten

Sie können auch in Korrekturseiten alle im Abschnitt Variablen des Online-Übungssystems beschriebenen Standard-Variablen verwenden.

Weiterhin stehen auch fast alle in Variablen für Quittungsseiten beschriebenen Variablen zur Verfügung, mit folgenden Ausnahmen bzw. Besonderheiten:

Im Folgenden seien nur noch Variablen aufgelistet, die nicht in den vorherigen Abschnitten bereits erläutert wurden.

Korrektur allgemein
Variable Bedeutung Beispiel
$Korrektor Name des Korrektors. (Der festgelegte „öffentliche“ Anzeigename.) Klaus Klug
$KorrekturDatum Datum, an dem der Korrektor die Korrektur zuletzt gespeichert hat.  02.03.2014
$KorrekturPunkte Vom Korrektor vergebene Gesamtpunktzahl 20
$KorrekturNote Vom Korrektor für die Aufgabe vergebene Note – nur definiert, wenn für das Aufgabenheft eine [Einzelbenotung pro Aufgabe][Noten] eingestellt ist. 2,7

Anmerkung: Variablen in Korrekturseiten werden zu zwei verschiedenen Zeitpunkten durch konkrete Werte ersetzt: Die meisten Variablen einschließlich der $Feld…-Variablen, Vor- und Autokorrekturen, Studentendaten etc. werden direkt beim sog. Heft-Schließen, also beim Erzeugen der individuellen Korrekturseite für einen Studenten, ersetzt, so dass ein Korrektor später auch statt der Variablen die zu korrigierenden Einsendungen etc. vorfindet. Obige Variablen zur Korrektur selbst werden dagegen natürlich nicht schon vor der Korrektur ersetzt, sondern bleiben während des Korrekturprozesses als Variable erhalten und werden erst bei Anzeige der fertigen Korrektur für den Studenten durch konkrete Werte gefüllt.

Vorkorrekturen und Autokorrekturen

Vorkorrekturen werden in Korrekturseiten fast genauso eingebunden wie in eine Quittungsseite auch, insofern gilt das im Abschnitt zu Vorkorrektur-Variablen für Quittungen Gesagte – mit einem wesentlichen Unterschied:

Da Vorkorrekturen sich auf eine konkrete Teilaufgabe beziehen, muss im Rahmen der Korrekturseite zu jeder $Vorkorrektur…-Variable eine Teilaufgabenreferenz (A bis Z) hinzugefügt werden. Dies geschieht durch Anhängen am Ende (aber noch vor einem optionalen Vorkorrekturnamen in Klammern), d.h. die Variablen heißen nun für z.B. Teilaufgabe A:

Falls Sie ein Korrektur-/Bewertermodul verwenden, sollte natürlich die Ausgabe des Korrekturmoduls in die Seite eingefügt werden. Dies geschieht analog zur Einbindung einer Vorkorrektur, nur beginnen die Variablen nicht mit $Vorkorrektur, sondern schlicht mit $Korrektur, und enthalten keine Teilaufgabenreferenz, heißen also:

Außerdem sind speziell bei Vorliegen von Autokorrekturen auch noch folgende Variablen verfügbar:

Variable Bedeutung
$AutokorrekturDatum Datum, an dem das Korrekturmodul seine Autokorrektur erzeugt hat
$AutokorrekturPunkte Vom Korrektur-/Bewertermodul vergebene Bewertung in Punkten

Diese werden im Normalfall nicht benötigt und stimmen bei vollautomatisch bewerteten Aufgaben mit den oben genannten Variablen $KorrekturDatum bzw. $KorrekturPunkte überein. Ein Unterschied ergibt sich bei Automatischer Bewertung mit Hand-Nachkorrektur: Die beiden $Autokorrektur…-Variablen werden direkt bei Erzeugung der Korrekturseite durch die konkreten Werte ersetzt: Öffnet anschließend ein Korrektor die Korrektur, so sieht er hier die Punkte und das Datum der Autokorrektur, während $KorrekturDatum bzw. $KorrekturPunkte noch als Variablen in der Korrektur stehen, da deren Werte während der manuellen Nachkorrektur noch gar nicht feststehen, sondern erst (bei Korrektureinsicht) das Ergebnis der manuellen Nachkorrektur widerspiegeln sollen.

Feldvariablen für Dateieinsendungen

Für Felder, in denen Studenten Dateien hochladen sollen (die also im Aufgabenformular typischerweise in der Form <input type="file" name="FeldA1"> definiert wurden), sollte in der Korrekturseite im Normalfall immer der Automatikmodus verwendet werden, d.h. das Feld ist einfach per $FeldA1ohne weiteres Suffix (wie HREF) – in die Korrekturseite einzubinden.

Dieser Automatikmodus bewirkt dann folgendes Verhalten:

  1. Wird die Korrekturseite von einem Korrektor geöffnet, sieht er einen Dateilink und ein Dateiupload-Feld. Über den Link kann der Korrektor die vom Studenten eingesandte Datei herunterladen. Dann kann er optional die Datei bearbeiten (z.B. durch Hinzufügen von Markierungen oder Kommentaren) und über das Dateiupload-Feld kann er die bearbeitete/annotierte Version der Einsendung wieder hochladen.
    • Durch einen solchen Upload wird eine so genannte Beikorrektur gespeichert. Die Originaleinsendung des Studenten wird dadurch nicht überschrieben, aber im Folgenden zeigt der Downloadlink in der Korrekturseite immer auf die Beikorrektur, also die vom Korrektor bearbeitete Version der Einsendung.
  2. Ruft ein Betreuer oder der Student selbst die Korrektur auf, wird nur der Link angezeigt (ohne Uploadmöglichkeit). Dieser Link verweist auf die aktuelle Beikorrektur (vom Korrektor annotierte Einsendung), bzw. – falls der Korrektor nie eine solche hochgeladen hat – auf die Originaleinsendung.

Alternativ zu diesem Automatikmodus können Feld-Variablen auch mit bestimmten Suffixen kombiniert werden (teils schon in Feldvariablen für Quittungsseiten eingeführt). Dabei ist dann immer genau zu beachten, ob die Variable dann die Original-Einsendung oder die Beikorrektur verlinkt!

Variable Bedeutung
$FeldA1HREF Erzwingt die Ausgabe eines Links zur hochgeladenen Datei (Originaleinsendung). Als Linkbeschriftung wird (wie im Automatikmodus) der Dateiname verwendet. An dieser Stelle bekommt also weder der Korrektor die Möglichkeit zum Upload einer annotierten Version (Beikorrektur) noch der Student eine Möglichkeit zum Download einer Beikorrektur, sondern es wird immer die Originaleinsendung verlinkt.
$FeldA1URL Gibt nur den URL zur Dateieinsendung aus, sollte also selbst innerhalb des href-Attributs eines (selbst beschrifteten) Links stehen, z.B. <a href="$Feld1URL">Ihre hochgeladene Datei</a>.
$FeldA1IMG Erzwingt die Ausgabe der Originaleinsendung als img-Tag mit dem URL im src-Attribut. Sollte nur angewendet werden, wenn ausschließlich geeignete Dateiformate (i.W. JPEG, GIF und SVG) hochgeladen werden dürfen. Auch hier wird immer die Originaleinsendung ausgegeben, und der Korrektor bekommt an dieser Stelle keine Möglichkeit zum Upload einer Beikorrektur.
$FeldA1UPLFORM Bei Dateiupload-Feldern ist dies identisch zum Automatikmodus (oder anders gesagt: Der Automatikmodus bei Angabe der Variablen $FeldA1 ohne Suffix wählt bei vorliegenden Dateieinsendungen automatisch diesen Modus aus): Erzeugt zunächst (für alle Benutzerrollen) einen Link zum Download der Beikorrektur (bzw. Originaleinsendung, wenn keine Beikorrektur hochgeladen wurde) und gibt dem Korrektor weiterhin die Möglichkeit zum Upload einer Beikorrektur. Insgesamt kann ein Korrektor hier also die Dateieinsendung herunterladen, bearbeiten/annotieren und geändert wieder hochladen. Dieser Beikorrekturupload-Modus sollte nur für Dateiupload-Felder benutzt werden, und da genügt die Variable im Automatikmodus. Die explizite Angabe dieses Variablensuffix' wird daher normalerweise nie benötigt.
$FeldA1BKHREF Wie $FeldA1HREF, allerdings wird ein Link zur Beikorrektur statt zur Originaleinsendung erzeugt. Damit überhaupt eine von der Originaleinsendung abweichende Beikorrektur existieren kann, muss die Korrekturseite zumindest zusätzlich eine Variable Uploadmöglichkeit bieten (Automatik-Modus per $FeldA1 oder eben $FeldA1UPLFORM, s.o.). Da allerdings diese neben dem Upload-Form auch schon selbst einen Link zur Beikorrektur einbindet, besteht normalerweise für diese Variable (für zusätzliche Downloadlinks) kein Bedarf – es sei denn, Sie wollen explizit mehrere Downloadmöglichkeiten für dieselbe Beikorrektur an verschiedenen Stellen der Korrekturseite einbinden.
$FeldA1BKURL Wie $FeldA1URL, allerdings wird der URL zum Beikorrektur-Dowload statt zum Download der Originaleinsendung ausgegeben. Siehe auch Anmerkungen zu $FeldA1BKHREF!
$FeldA1BKIMG Wie $FeldA1IMG, nur wird die Beikorrektur an Stelle der Originaleinsendung als Bild (img) eingebunden. Siehe auch Anmerkungen zu $FeldA1BKHREF!
$FeldA1BKUPLF Erzeugt in der Korrektorensicht ausschließlich eine Uploadmöglichkeit für den Korrektor und ist in allen anderen Ansichten unsichtbar. Im Normalfall (Automatikmodus oder $FeldA1UPLFORM) benötigen Sie diese Variable nicht, da eine entsprechende Uploadmöglichkeit dort (in der Korrektorensicht) zusammen mit dem Downloadlink erzeugt wird. Falls Sie aber explizit Downloadlinks selbst mit einer der oben genannten Variablen wie $FeldA1BKHREF einfügen und ein Korrektor dennoch die Dateieinsendung nicht nur herunterladen, sondern (in bearbeiteter Form) auch wieder als Beikorrektur hochladen können soll, ergänzen Sie Ihre selbst gestaltete Downloadmöglichkeit mittels dieser Variablen um eine Uploadmöglichkeit.

In aller Regel genügt zu einem Dateieinsendung-Feld also das Einbinden der Korrekturvariable im Automatikmodus ($FeldA1).

Mit den oben beschriebenen Spezialvariablen haben Sie aber fortgeschrittene Möglichkeiten.

Falls Sie z.B. vorsehen wollen, dass die Originaleinsendung immer zusätzlich zur Beikorrektur in der Korrekturseite verlinkt sein soll, fügen Sie einfach zwei Variablen ein: $FeldA1HREF als Downloadlink zur Originaleinsendung und $FeldA1 als Downloadlink zur Beikorrektur (mit der Möglichkeit für Korrekturen, Beikorrekturen hochzuladen). In diesem Fall muss die Beikorrektur dann auch nicht mehr unbedingt eine annotierte Fassung des Originals sein, in dem sämtliche Originaleingaben erhalten bleiben müssen, sondern kann auch eine ganz andere Datei sein, z.B. ein Bewertungsformular. Andererseits bietet sich für solche Zwecke auch der im folgenden Abschnitt beschriebene Dateianhangs-Upload für Korrektoren an.

Dateianhangs-Upload für Korrektoren

Neben „normalen“ Beikorrekturen zu Dateieinsendungen können Sie auch weitere Upload-Felder zu einer Korrektur vorsehen, zu denen keine Dateieinsendungen von Studenten existieren, sondern in denen ein Korrektor einfach eine weitere Datei als Dateianlage zur Korrektur hinzufügen kann. Auch diese werden als Beikorrekturen gespeichert und – in Abgrenzung zu Beikorrekturen zu Dateieinsendungen – auch als „angehängte Beikorrekturen“ bezeichnet.

Da jede Beikorrektur sich auf ein Eingabefeld des Aufgabenformulars bezieht, muss zunächst in der Aufgabenseite ein entsprechendes Eingabefeld eingefügt werden. Da in diesem Feld aber ein Student eben keine Dateieinsendung (oder andere Eingabe) vornehmen können soll, sondern das Feld einfach leer und für den Studenten unsichtbar bleiben soll und lediglich der Korrektor später zu diesem Feld eine Datei hochladen können soll, ist dazu typischerweise ein Hidden-Field zu verwenden (in die Aufgabenseite einzufügen):

<input type="hidden" name="FeldA2">

Die Kennung A2 (zweites Eingabefeld der ersten Teilaufgabe) ist natürlich nur als Beispiel zu verstehen.

Dieses Input-Element ist notwendig, damit die Teilaufgaben- und Felderzeugung das Eingabefeld FeldA2 erzeugt, dem der Korrektor später eine Datei zuordnen können soll. Dass es bei Einsendungen leer bleibt, unterscheidet es von „normalen“ Datei-Einsendefeldern, in denen ein Korrektor normalerweise nur annotierte Kopien der studentischen Einsendung speichert (und normalerweise auch nur dann etwas hochladen kann, wenn überhaupt eine Einsendung vorliegt).

Da der Student das Feld nicht sieht und nichts darin einsendet, wird es in der Quittungsseite gar nicht berücksichtigt.

In der Korrekturvorlage nun wird zu diesem Feld eine spezielle Variable eingefügt:

Variable Bedeutung
$FeldA2ABKUPL Erzeugt in der Korrektorsicht eine Uploadmöglichkeit für einen Dateianhang und einen Downloadlink, mit dem der Korrektor seinen ggf. schon hochgeladenen Anhang auch wieder herunterladen/einsehen kann. In der Studentensicht (und Korrekturvorschau f. Betreuer oder Korrektor) wird ein Downloadlink mit Standardbeschriftung angezeigt – sofern eine Datei vom Korrektor hochgeladen wurde. Liegt kein Dateianhang vor, wird auch kein Downloadlink generiert.
$FeldA2ABKUPL{Downloadlink-Text} Dieselbe Funktionalität, legt aber zusätzlich eine Link-Beschriftung für den Downloadlink (in der Studentensicht bzw. Vorschau) fest.

Das Suffix {Downloadlink-Text} ist also optional. Wenn es angegeben wird, legt es die Beschriftung des Links fest, der später den Studenten an dieser Stelle in der Korrektur angezeigt wird und den Download der vom Korrektor hochgeladenen Datei („Beikorrektur“) ermöglicht. Das Variablensuffix ABKUPL sorgt insb. für ein spezielles Upload-Feld, in dem der Korrektor auch dann Beikorrekturen hochladen kann, wenn keine Einsendung des Studenten vorliegt (im Gegensatz zu normalen $Feld…-Variablen bei Dateieinsendungsfeldern).

In dieser Reinform ist ein solches Dateiupload-Feld für jede neue Korrektur zunächst leer, ein Korrektor kann darin eine beliebige Datei pro Korrektur hochladen. Dieses Verfahren kann noch erweitert werden, indem dem Eingabefeld ein spezielles PDF-Formular zugeordnet wird. Diese Variable bietet dem Korrektor dann nicht nur eine Upload-Möglichkeit für eine Datei, sondern – so lange er noch keine Datei hochgeladen hat – auch eine Downloadmöglichkeit für dieses Formular. Mehr zu diesem Thema findet sich in einer gesonderten Dokumentation.

Variablen bei Mehrfachkorrektur

Siehe auch oben Abschnitt Korrekturmodi/Mehrfachkorrektur!

Für jede von einem Studenten bearbeitete Aufgabe wird immer genau eine Korrektur erstellt. Kern dieser Korrektur ist die (HTML-)Korrekturseite, deren Vorlagedatei in diesem Kapitel behandelt wird.

Bei Einfachkorrektur wird die Korrektor genau einem Korrektor zugeteilt, der die Korrekturseite bearbeiten kann und/oder Beikorrekturen erstellen zur Korrektur erstellen kann, wobei es sich um bearbeitete Kopien von Dateieinsendungen oder um eigene vom Korrektor zur Korrektur hinzugefügte Dateianhänge handeln kann, siehe vorhergehende Abschnitte. Neben diesen Dokumenten gehören auch noch Metadaten zur Korrektur (wie der Zustand, der Name des Korrektors, dem sie zugeteilt ist, die vergebene Punktzahl und/oder Note und das Datum der letzten Änderung der Korrektur).

Bei Mehrfachkorrektur sollen mehrere Korrektoren (parallel oder sequentiell) die Korrektur bearbeiten. Dazu werden so genannte Teilkorrekturen zur Korrektur erzeugt, und jede Teilkorrektur wird einem anderen Korrektor zur Bearbeitung zugeteilt. Die Teilkorrekturen umfassen wieder die oben genannten Metadaten (insb. vergibt jeder Korrektor eine eigene Teilpunktzahl und/oder Note, und die Gesamtpunktzahl bzw. Gesamtnote der Korrektur errechnet sich jeweils als Durchschnitt der Teilkorrekturergebnisse). Auch die Beikorrekturen werden pro Teilkorrektur dupliziert, d.h. jeder Korrektor bekommt seine eigene Kopie jeder Dateieinsendung, die er bearbeiten/annotieren kann, und falls die Möglichkeit zum Upload eines Dateianhangs für einen Korrektor geboten wird, kann in dem Feld jeder Korrektor seinen eigenen Anhang hochladenden.

Es gibt aber dennoch auch bei Mehrfachkorrektur immer nur eine (HTML-)Korrekturseite. Das ist die Seite, die dem Studenten bei Ergebniseinsicht angezeigt wird. Diese zentrale Korrekturseite sollte alle Informationen über die einzelnen Teilkorrekturen zusammentragen, z.B. …

Um das zu verwirklichen, gibt es teils neue Variablen, teils besondere Varianten oder Anwendungen bereits oben beschriebener Variablen.

Die $Teilkorrekturen-Schleife

Allgemein kann immer, wenn Informationen über alle Teilkorrektoren zur einer Korrektur ausgegeben werden sollen (z.B. alle Korrektoren, alle Teilbewertungen, Links zu den einzelnen Korrekturen), eine „Für-alle-Teilkorrekturen-gib-jeweils-Folgendes-aus“-Schleife konstruiert werden. Diese wird durch folgende Variablen definiert:

Variable Bedeutung
$Teilkorrekturen leitet den für jede Teilkorrektur einzeln auszugebenden Text ein,
$/Teilkorrekturen beendet den zu wiederholenden Text.

Zwischen diesen beiden Variablen kann HTML-Code stehen, der wiederum alle bereits bekannten Variablen enthalten darf. Folgende Variablen beziehen sich dabei innerhalb dieses Blocks auf die jeweils auszugebende Teilkorrektur, ändern also in jeder Wiederholung des Blocks ihren Wert:

Variable Bedeutung Beispiel
$Korrektor Öffentlicher Anzeigename des Korrektors der jeweiligen Teilkorrektur. Klaus Klug
$KorrekturDatum Datum, an dem der Korrektor die jeweilige Teilkorrektur zuletzt gespeichert hat. 02.03.2019
$KorrekturPunkte Vom Korrektor zur jeweiligen Teilkorrektur vergebene Punktzahl 20
$KorrekturNote Vom Korrektor zur jeweiligen Teilkorrektur vergebene Note – falls für das Aufgabenheft eine [Einzelbenotung pro Aufgabe][Noten] eingestellt ist. 2,7
$TeilkorrekturNr Die Nummer der jeweiligen Teilkorrektur aus. (Die Zählung beginnt bei 1.) 2
$TeilkorrekturNrErst Gibt für die ersten Teilkorrektur den Wortbeginn „Erst“ aus, für die zweite Teilkorrektur „Zweit“, für die dritte „Dritt“ etc.. Diese Variable wird typischerweise durch Anhängen eines Restwortes komplettiert z.B. $TeilkorrekturNrErstprüfer erzeugt für die einzelnen Teilkorrekturen die Wörter „Erstprüfer“, „Zweitprüfer“, „Drittprüfer“ etc. Zweit
$TeilkorrekturNrerst analog, aber mit Kleinbuchstaben beginnend. Damit lassen sich z.B. per $TeilkorrekturNrerste Wertung Ausgaben wie „erste Wertung“, „zweite Wertung“ etc. erzeugen. zweit

Auch von den Feldvariablen für Dateieinsendungen sind alle Varianten, die sich auf eine Beikorrektur beziehen, innerhalb einer solchen Teilkorrekturen-Schleife jeweils unterschiedlich belegt: Da es zu jeder Dateieinsendung genau eine Beikorrektur (ggf. vom Korrektor bearbeitete Kopie der eingesandten Datei) pro Teilkorrektur gibt, bezieht sich eine solche $FeldA1BK…-Variable innerhalb einer Teilkorrektur-Schleife immer auf genau die Beikorrektur zur jeweils auszugebenden Teilkorrektur.

Die Variablen wurden oben bereits ausführlicher beschrieben und werden hier nur nochmals knapp zusammengestellt:

Variable Bedeutung
$FeldA1BKHREF Link zur Beikorrektur (komplettes a-Element mit Standardbeschriftung)
$FeldA1BKURL URL zum Beikorrektur-Dowload (kann in ein href-Attribut eines a-Elements eingefügt werden, um einen Link mit eigener Beschriftung zu erzeugen)
$FeldA1BKIMG Beikorrektur als Bild (img-Element mit Beikorrektur-URL als src)

Weiterhin gibt es – wie unten in Abschnitt Angehängte Beikorrekturen bei Mehrfachkorrektur noch genauer ausgeführt – eine spezielle Variable zum Verlinken einer erst vom Korrektor angehängten Beikorrektur (Dateianlage, der keine Dateieinsendung gegenübersteht, siehe vorhergehenden Abschnitt) innerhalb einer Teilkorrekturschleife:

Variable Bedeutung
$FeldA1ABKLNK Erzeugt einen Link zur vom Korrektor angehängten Beikorrektur – sofern eine solche vorhanden ist. Hat der Korrektor in diesem Feld keinen Upload vorgenommen, wird die Variable ersatzlos entfernt. In dieser einfachen Form erhält der Link eine Standardbeschriftung basierend auf dem Dateinamen der vom Korrektor hochgeladenen Datei.
$FeldA1ABKLNK{Linktext} Wie oben, aber der in geschweiften Klammern angegebene Text wird als Linkbeschriftung verwendet. Falls darin das Teilwort „Erst“ oder „erst“ vorkommt, wird das abhängig von der Nummer der gerade ausgegebenen Teilkorrektur ersetzt. Lautet der Linktext z.B. „Erstgutachten“, so wird er für die zweite Teilkorrektur automatisch in „Zweitgutachten“ umgewandelt.
Variablen mit Teilkorrekturnr.

Alternativ zur Verwendung innerhalb einer $Teilkorrekturen-Schleife können Sie die vier eben genannten Feld-Variablen übrigens auch (außerhalb einer solchen Schleife) mit Nummernsuffixen ausstatten, z.B.: $FeldA1BKHREF1 erzeugt einen Link zur Beikorrektur (zur Dateieinsendung aus Eingabefeld 1 der ersten Teilaufgabe) der ersten Teilkorrektur, auf die zweite Teilkorrektur verlinkt entsprechend $FeldA1BKHREF2 etc. Auch der Variable $Korrektor können Sie eine Teilkorrekturnummer anhängen, siehe nächsten Abschnitt.

Solche Variablen sind aber nur sinnvoll in Kontexten, in denen die Teilkorrekturanzahl feststeht. Selbst bei Prüfungen mit normalerweise zwei Prüfern könnte im Einzelfall ein Drittgutachter hinzugezogen werden, daher ist die Teilkorrekturanzahl in der Regel variabel – und dann ist die Verwendung einer $Teilkorrekturen-Scheife vorzuziehen, da sie immer genauso viele Ausgaben erzeugt wie tatsächlich im konkreten Einzelfall Teilkorrekturen vorliegen.

Hinweise zu $Feld…ABKLNK…-Variablen:

Korrektornamen bei Mehrfachkorrektur

Die Namen der einzelnen Korrektoren, die an der Korrektur mitgewirkt haben (die jeweils eine Teilkorrektur bearbeitet haben), könnten prinzipiell über eine $Teilkorrekturen-Schleife (s.o.) und darin die $Korrektor-Variable ausgegeben werden. Es gibt dazu aber noch folgende Alternativen zur „direkten“ Verwendung ohne Schleife:

Variable Bedeutung
$Korrektoren Erzeugt eine kommaseparierte Aufzählung der Namen aller Korrektoren, beginnend mit dem Erstkorrektor.
$Korrektor Die bereits bekannte Variable $Korrektor gibt im Falle einer Korrektur mit mehreren Teilkorrekturen den Namen des ersten Korrektors (Korrektors der ersten Teilkorrektur) aus, genau wie $Korrektor1, s.u.. (Innerhalb einer $Teilkorrekturen-Schleife, siehe oben, gibt $Korrektor den Namen des Korrektors der jeweiligen Teilkorrektur aus.)
$Korrektor2 Gibt den Namen des Korrektors der zweiten Teilkorrektur aus. Die Nr. 2 in diesem Fall ist nur exemplarisch zu verstehen und kann eine ganze Zahl ab 1 bis hin zur Anzahl der Teilkorrekturen sein. (Diese Variablen sind allerdings normalerweise nur in Kontexten sinnvoll, in denen die Anzahl der Teilkorrekturen immer feststeht, siehe auch obige Anmerkungen Variablen mit angehängter Teilkorrekturnummer.)

Das oben zu Beginn des Abschnitts »Korrekturvorlage erstellen« stehende Beispiel enthält im Seitenkopf z.B. die Zeile:

<p><strong>Korrektor:</strong> $Korrektor</p>

Bei Mehrfachkorrektur kann diese Zeile am einfachsten wie folgt umgestellt werden:

<p><strong>Korrektoren:</strong> $Korrektoren</p>

Das erzeugt z.B. eine Ausgabe der Art:

Korrektoren: Jane Doe, Max Mustermann

Eine Teilkorrekturen-Schleife benötigen Sie nur, wenn Sie die Korrektoren anders formatiert ausgeben möchten, z.B. als Tabelle der Art:

<table>
<tbody>
$Teilkorrekturen
	<tr>
		<th>$TeilkorrekturNrErster Korrektor</th>
		<td>$Korrektor</td>
	</tr>
$/Teilkorrekturen
</tbody>
</table>
Ausgeben der Bewertungen (Teilwertungen & Gesamtwertung)

Die bekannten Variablen $KorrekturPunkte und $KorrekturNote geben im globalen Kontext (außerhalb einer $Teilkorrekturen-Schleife) die Gesamtpunktzahl bzw. Gesamtnote aus, innerhalb einer $Teilkorrekturen-Schleife dagegen, wie oben schon beschrieben, die Bewertung der jeweiligen Teilkorrektur.

Damit könnte die Bewertungsausgabe am Fuße einer Korrekturseitenvorlage z.B. für eine mit Punkten und Note bewertete Prüfung mit zwei (oder mehr) Prüfern wie folgt aussehen:

<h3>Teilwertungen:</h3>
<p>$Teilkorrekturen
$TeilkorrekturNr.) Wertung des $TeilkorrekturNrErstprüfers ($Korrektor): $KorrekturPunkte von $MaximalPunkte Punkten, Note: $KorrekturNote
<br>
$/Teilkorrekturen
</p>
<h3>Erreichte Punktzahl: $KorrekturPunkte von $MaximalPunkte</h3>
<h3>Note: $KorrekturNote</h3>
Dateieinsendungen / Beikorrekturen bei Mehrfachkorrektur

Die einfachste Möglichkeit zum Einfügen einer Dateieinsendung in eine Korrekturseite ist – bei Mehrfachkorrektur genau wie bei Einfachkorrektur – die simple Aufnahme der Variablen $FeldA1 für eine Dateieinsendung (hier im ersten Eingabefeld der ersten Teilaufgabe (A)). Ohne weiteres Variablen-Suffix gilt hier ein Automatikmodus, der im Falle von Mehrfachkorrektur automatisch wie folgt arbeitet:

Wenn Ihnen diese Standard-Ausgaben (mit Standard-Linkbeschriftung und einfachem Zeilenumbruch zwischen den Links) nicht zusagen, haben Sie aber auch alternative Möglichkeiten, den Feldinhalt auszugeben (wieder mit Hilfe einer $Teilkorrekturen-Schleife, s.o).

Möchten Sie z.B. eine Aufzählungsliste (<ul>) mit den Links zu den Beikorrekturen ausgeben, können Sie das wie folgt tun:

<ul>
$Teilkorrekturen
<li>$FeldA1BKHREF</li>
$/Teilkorrekturen
</ul>
$FeldA1BKUPLF

Dieses Beispiel verwendet eine $Teilkorrekturen-Schleife und gibt darin Listenelemente mit Beikorrektur-Links aus. Diese Links verwenden dieselbe Standardbeschriftung („Erste Korrektur zu Dateiname“ bzw. „Erste Kopie von Dateiname“) wie im Automatikmodus.

Beachten Sie, dass – anders als im Automatikmodus – hier nur die Links ausgegeben werden – und das auch nur in der Studenten-/Betreueransicht: Ein Korrektor sieht diese Link-Liste nicht (außer in der Korrekturvorschau, aber nicht in seiner normalen Korrekturansicht)!

Damit ein Korrektor wenigstens „seine“ Kopie der Dateieinsendung herunterladen und vor allem auch eine bearbeitete Kopie davon wieder hochladen kann, ist in diesem Fall ein entsprechendes Upload-Feld über die Variable $FeldA1BKUPLF hinzuzufügen. (Im Automatikmodus wird auch diese Uploadmöglichkeit automatisch bereitgestellt, in dieser selbst formatierten Ausgabe müssen Sie auch das selbst erledigen.)

Diese BKUPLF-Variable (steht für „Beikorrektur-Upload-Feld“) erzeugt besagte Down- und Uploadmöglichkeit für den Korrektor während der Korrekturphase. Für andere Nutzer (Studenten/Betreuer) bzw. in der Korrekturvorschau für den Korrektor ist diese Variable wiederum unsichtbar.

Als letztes Beispiel nehmen wir noch an, dass Sie auch die Linkbeschriftung für die Beikorrektur-Links selbst festlegen wollen. Dann können Sie auch die $FeldA1BKHREF-Variable nicht benutzen, da diese eine Standardbeschriftung generiert, sondern schreiben den Link selbst, z.B. wie folgt:

<ul>
$Teilkorrekturen
<li><a href="$FeldA1BKURL" target="_blank">Einsendung, ggf. mit Anmerkungen des $TeilkorrekturNrersten Prüfers</a></li>
$/Teilkorrekturen
</ul>
$FeldA1BKUPLF

Dieses Beispiel erzeugt eine Link-Liste, die in der fertigen Korrektur dann etwa so aussieht:

Angehängte Beikorrekturen bei Mehrfachkorrektur

Im Abschnitt Dateianhangs-Upload für Korrektoren wurde bereits auf die Möglichkeit eingegangen, ein spezielles Eingabefeld (in der Aufgabenseite leer und versteckt) einzuführen, in dem Studenten nichts einsenden können, zu dem ein Korrektor aber eine sog. angehängte Beikorrektur speichern kann. Bei Mehrfachkorrektur gilt auch dies für jede Teilkorrektur, d.h. jeder der Korrektoren kann seinen eigenen Dateianhang zur Korrektur hinzufügen.

Sie können auch bei Mehrfachkorrektur – genau wie bei Einfachkorrektur – einfach die bereits in oben genanntem Abschnitt eingeführte Variable $FeldA1ABKUPL{Beschriftung} verwenden. Die Auswirkung ist ähnlich wie der oben beschriebene Automatikmodus zu Dateieinsendungen:

Auch hier gibt es alternativ die Möglichkeit, über andere Variablen die Darstellung feiner zu beeinflussen. Die folgende Tabelle zeigt zunächst alle „ABK-Variablen“ im Überblick:

Variable Bedeutung
$FeldA2ABKUPL Erzeugt in der Korrektorsicht eine Uploadmöglichkeit für einen Dateianhang und einen Downloadlink, mit dem der Korrektor seinen ggf. schon hochgeladenen Anhang auch wieder herunterladen/einsehen kann. In der Studentensicht (und Korrekturvorschau f. Betreuer oder Korrektor) wird eine Liste von Downloadlinks zu allen vorliegenden Dateianhängen (der verschiedenen Korrektoren) erzeugt. Hat kein einziger Korrektor eine Datei hochgeladen, wird auch kein einziger Downloadlink ausgegeben.
$FeldA2ABKUPL{Downloadlink-Text} Dieselbe Funktionalität, legt aber zusätzlich eine Link-Beschriftung für den Downloadlink (in der Studentensicht bzw. Vorschau) fest.
$FeldA2ABKLNK Innerhalb einer $Teilkorrekturen-Schleife wird ein Link zu dem Dateianhang des Korrektors der jeweiligen Teilkorrektur ausgegeben – sofern vorhanden. Außerhalb einer $Teilkorrekturen-Schleife erzeugt diese Variable eine Linkliste zu allen vorliegenden Beikorrekturen, genau wie sie auch von $FeldA1ABKUPL in der Studentensicht ausgegeben wird – nur ohne die Uploadmöglichkeit. Außerdem kann an die Variable eine Teilkorrekturnummer angehängt werden, um gezielt einen Link zur Beikorrektur zur jeweiligen Teilkorrektur zu erzeugen (sofern Upload vorhanden), siehe Variablen mit Teilkorrekturnr..
$FeldA2ABKLNK{Downloadlink-Text} Dasselbe, aber mit benutzerdefinierter Beschriftung für den Downloadlink. Falls in diesem Linktext das Teilwort „Erst“ oder „erst“ vorkommt, wird es bei Einsatz innerhalb einer $Teilkorrekturen-Schleife entsprechend der jeweiligen Teilkorrekturnummer ersetzt, z.B. durch „Zweit“ oder „Dritt“.
$FeldA2ABKUPLF Erzeugt explizit eine Uploadmöglichkeit für den Korrektor. Wird nur benötigt, wenn nicht die $FeldA2ABKUPL-Variable verwendet wurde, sondern über andere Variablen bislang explizit nur Downloadmöglichkeiten für Dateianhänge geschaffen wurden. Dann ist hierüber für Korrektoren auch eine Uploadmöglichkeit zu schaffen. (Von der $FeldA1BKUPLF-Variablen unterscheidet sich diese Variable durch Optimierung für den Fall angehängter Beikorrekturen: Ein Upload ist auch möglich, wenn keine Dateieinsendung vorliegt. Falls zum Eingabefeld ein vom Korrektor auszufüllendes PDF-Formular hinterlegt wurde (s.o.), wird dem Korrektor auch entsprechend ein Download dieses Formulars ermöglicht.)

Um z.B. innerhalb einer $Teilkorrekturen-Schleife auch Links zu angehängten Beikorrekturen auszugeben, können Sie die Variable $FeldA1ABKLNK verwenden.

Nehmen wir beispielhaft eine Aufgabe an, in der ein Student in Feld A1 eine Datei hochladen soll, und in der ein verstecktes Feld A2 vorgesehen ist, in dem der Student nichts einsenden kann, aber der Korrektor einen weiteren Dateianhang, z.B. ein Gutachten, hochladen kann. Dann könnten Sie z.B. in Ihrer Korrekturseite (statt z.B. eines Absatzes mit einer $FeldA1-Variablen, die später zur Liste aller annotierten Beikorrekturen zur Dateieinsendung wird, sowie eines darauf folgenden Absatzes mit einer $FeldA2ABKUPL-Variablen, die später in der Korrekturfassung zu einer Liste aller angehängten Gutachten ersetzt wird) eine Tabelle der folgenden Art bauen:

<table>
	<thead>
		<tr>
			<th>Korrektor</th>
			<th>Ggf. korrigierte Dateieinsendung</th>
			<th>Ggf. Gutachten</th>
		</tr>
	</thead>
	<tbody>
	$Teilkorrekturen
		<tr>
			<th>$Korrektor</th>
			<td>$FeldA1BKHREF</td>
			<td>$FeldA2ABKLNK{Erstgutachten}</td>
		</tr>
	$/Teilkorrekturen
	</tbody>
</table>
$FeldA1BKUPLF
$FeldA2ABKUPLF

Da bei Verzicht auf die ABKUPL-Variable, die Download- und Uploadmöglichkeiten kombiniert anbietet, die Tabelle ausschließlich Downloadlinks enthält (und diese auch nur in der späteren Korrekturansicht für Studenten bzw. Korrekturvorschau für Betreuer und Korrekturen funktionieren, nicht aber in der normalen Korrektorsicht), ist in diesem Fall die $FeldA2ABKUPLF-Variable nicht zu vergessen (in obigem Beispiel unterhalb der Tabelle), damit die Korrektoren überhaupt die Möglichkeit bekommen, Dateien hochzuladen.

Ein Hinweis zum Abschluss:
Vielleicht ist Ihnen der Unterschied aufgefallen, wie Sie selbst beschriftete Downloadlinks zu normalen Beikorrekturen (zu Dateieinsendungen) erzeugen (vgl. vorherigen Abschnitt) und wie Sie entsprechend selbst beschriftete Downloadlinks zu angehängten Beikorrekturen erzeugen: Im ersten Fall schreiben Sie selbst ein a-Tag und verwenden $FeldA1BKURL als Wert fürs href-Attribut, im zweiten Fall verwenden Sie die $FeldA2ABKLNK{…}-Variable und geben den Linktext in den geschweiften Klammern an. Die erstere Methode für ist die flexiblere, sie bietet Ihnen noch mehr (HTML-)Gestaltungsspielraum (wie z.B. Bilder im Link, CSS etc.), aber sie erzeugt eben immer einen Link. Bei „normalen“ Beikorrekturen ist das OK und gewollt, der Link ist immer definiert: Liegt eine Beikorrektur (vom Korrektor bearbeitete Kopie der Einsendung) vor, kann diese über den Link heruntergeladen werden, andernfalls verweist der Link auf die Original-Dateieinsendung des Studenten. Bei den angehängten Beikorrekturen gibt es dagegen keine Original-Einsendung. Hat hier ein Korrektor keine Datei angehängt, soll auch gar kein Link erzeugt werden. Daher wird hier insbesondere keine $FeldA1ABKURL-Variable angeboten, weil eben nicht in jedem Fall überhaupt eine Datei existiert, auf die mit einem solchen URL verlinkt werden könnte. Vielmehr ist stets der gesamte Link über eine Variable zu erzeugen, und das Übungssystem entscheidet darüber, ob es überhaupt einen Link ausgibt (nämlich nur, sofern eine Datei vorliegt) oder nicht.

Testen von Korrekturen

Während Sie von Aufgabenseiten jederzeit eine Vorschau öffnen und Quittungsseiten im Rahmen von Probe-Einsendungen z.B. aus dieser Vorschau heraus testen können, muss zum Testen der Korrekturseiten einmal ein Korrekturprozess begonnen werden:

Über das reine Erzeugen und Einsehen der Korrekturseiten hinaus sollte bei handbewerteten Aufgaben auch der Korrekturprozess selbst getestet werden – vor allem bei In-Browser-Korrektur:

Neuerzeugung nach Änderungen an der Seitenvorlage oder Korrekturmoduleinstellungen

Wenn Sie im Rahmen eines Tests einer Korrektur einen Fehler bemerkt und eine Änderung an der Korrekturseitenvorlage (korrektur1.1.html) oder an den Einstellungen eines Korrektur-/Bewertermoduls vorgenommen haben und nun die Korrekturseite zu einer bereits vorliegenden studentischen Einsendung neu erzeugen möchten, so muss das Heft-Schließen (siehe Abschnitt zu Standard-Kursressourcen) wiederholt werden.

Speziell für Neuerzeugung der Korrekturen aller Studenten für eine einzelne Aufgabe finden Sie auf der Betreuerstartseite unter Rubrik »Einsendungen und Korrekturen« die Funktion »Erneute Hefteinsendung für einzelne Aufgaben«.

Um das Heft-Schließen für alle Aufgaben eines Aufgabenhefts aller oder bestimmter Studenten zu wiederholen, benutzen Sie die Funktionen zum »Heft-Öffnen« in der Einsendungs- und Korrekturübersicht oder »Hefteinsendung löschen« in der Übersicht aller Korrekturen eines Korrektors sowie anschließend die »Hefte schließen«-Funktion zum Aufgabenheft in der Einsendungs- und Korrekturübersicht.

Korrekturhinweis- und Musterlösungsseite erstellen

Abschließend können Sie eine Musterlösungsseite für Studenten und bei manuell zu bewertenden Aufgaben eine Seite mit Hinweisen für die Korrekturkräfte erstellen (siehe Standard-Kursressourcen).

Diese beiden Seiten sind optional, wobei zumindest für handbewertete Aufgaben immer eine Musterlösung erzeugt werden sollte. Wie für die anderen Standard-Kursressourcen auch, können Sie sich hier eine Vorlagedatei erzeugen lassen und diese anschließend nachbearbeiten. Die HTML-Seiten können Sie weitestgehend frei bearbeiten, um darin ihre Texte unterzubringen. Dabei stehen Ihnen die oben vorgestellten allgemeinen Variablen zur Verfügung.

Falls Sie in Musterlösungen weitere Kursressourcen referenzieren wollen (einbinden von Grafiken oder verlinken von anderen Dateien wie PDFs oder andere Musterdokumente), beachten Sie die Namenskonventionen zur Taktung, um sicherzustellen, dass auf diese Musterdokumente nicht bereits vor der Freigabe der Musterlösung zugegriffen werden kann.

(Vor-)Korrektur-/Bewertermodule registrieren und konfigurieren

Soll ein Vorkorrekturmodul zu einer Teilaufgabe oder ein Korrektur-/Bewertermodul zur gesamten Aufgabe (vgl. (Vor-)Korrekturmodule) eingesetzt werden, ist ggf. zunächst ein solches Modul zu programmieren, in Betrieb zu nehmen und anzubinden. In der Maske der fortgeschrittenen Aufgabenerstellung können Sie jeweils ein Modul aus der Liste der angemeldeten Module auswählen oder den Namen eines noch nicht angemeldeten Moduls von Hand eintragen, wenn Sie davon ausgehen, dass es bis zum Go-Live sich noch anmelden wird.

Neben selbst programmierten Modulen stehen derzeit zwei intern vom Übungssystem angebotene Module zur Auswahl: »Aufgabenbewerter« (Korrektur-/Bewertermodul für eine ganze Aufgabe) und »Teilaufgabenbewerter« (Selbsttest-/Vorkorrekturmodul, daher mit Teilaufgabenbezug). Beide bilden den im Kapitel „Korrekturmodi“ bereits kurz beschriebenen Internen Aufgabenbewerter für Standardaufgaben wie Multiple Choice etc.

Externe Module

Verwenden Sie selbst entwickelte Korrekturmodule, so ist folgendes zu beachten:

Mehr Informationen finden Sie im Betreuer-Interface des Kurses unter »Entwicklung eigener Korrekturmodule«.

Konfiguration der internen Module

Im Normalfall wird empfohlen, Aufgaben, die mit dem internen Bewerter automatisch korrigiert werden sollen, mit dem Aufgabenerstellungsassistenten (AB) zu erstellen, der dann auch die gesamte Einrichtung des Vorkorrektur- bzw. Bewertermoduls übernimmt.

Falls Sie aber den internen Bewerter im Rahmen der fortgeschrittenen Aufgabenerstellung direkt konfigurieren (oder eine assistentengestützt erzeugte Aufgabenkonfiguration manuell nachbearbeiten) möchten, sei hier dessen Konfiguration beschrieben.

Zunächst ist zu entscheiden, ob die automatische Auswertung sofort bei Einsendung erfolgen soll (Selbsttest) oder erst nach Einsendeschluss (Einsendearbeit), wie schon im Kapitel zur assistentengestützten Aufgabenerstellung beschrieben.

Nach Auswählen des (Vor-)Korrekturmoduls in der erweiterten Aufgabenerstellung wird ein Button »Eigenschaften…« eingeblendet, über welchen Sie nun die Konfiguration des Moduls bearbeiten können.

Eine solche „Eigenschaften“-Konfiguration kann z.B. wie folgt aussehen:

Schablonenoption:
  Musterloesung
  Gesamtbewertung
Init:
  Aufgabentyp: XausN
  Vorgabe: A,B+,C; A,D
  Punkte: 8
  Gewichtung: 1
  N: 4
  Name: Multiple Choice
  Kommentar: Kommentar1
Init:
  Aufgabentyp:	BegriffeIC
  Name: Begriffe
  Kommentar: Die FernUni liegt in der Stadt Hagen im Bundesland Nordrhein-Westfalen (NRW)
  Punkte: 20
  Gewichtung: 1	
  Felder: 2
  Uebereinstimmung:	100
  Wortliste:  Hagen|Hagen, Westfalen|Hagen (Westfalen)
  Wortliste:  Nordrhein-Westfalen|NRW|Westfalen
Init:
  Aufgabentyp: Zahlen
  Name: Zahlen
  Punkte:10
  Gewichtung:1
  Vorgabe: 1.1 / 1.2

Intervall:	12-15
Textbaustein:
Sehr gut, Sie haben den Stoff verstanden.

Intervall:	8-11
Textbaustein:
Gut!

Intervall:	0-7
Textbaustein:
Übung macht den Meister.

Der oberste Bereich Schablonenoption: ist optional. Hierüber können Sie steuern, ob der Bewerter neben der Einzelbewertung pro Frage auch die Gesamtbewertung über alle Fragen ausgeben soll und ob er die Musterlösung verraten soll oder nicht. So können Sie durch Weglassen des Unterpunkts Musterloesung unterhalb von Schablonenoption: die Anzeige der korrekten Lösung unterdrücken: Bei Multiple Choice z.B. wird dem Studenten dann nur noch angezeigt, welche Optionen er angekreuzt hat, und wieviele Punkte er für seine Antwort bekommt, jedoch ohne konkrete Angabe, wo seine Fehler lagen. Wenn Sie das Schlüsselwort Schablonenoption: ohne beide Unterpunkte angeben, werden Musterlösung und Gesamtbewertung beide unterdrückt.

Lassen Sie den gesamten optionalen Bereich Schablonenoption: komplett weg, so gelten die Default-Einstellungen: Musterlösung und Gesamtbewertung werden dann beide ausgegeben.

Es folgen jeweils durch eine Zeile Init: eingeleitete Fragen-Properties: Für jede einzelne Frage in der Teilaufgabe ist genau ein solcher Init-Block zu deren Konfiguration anzugeben. Die Zuordnung der Konfigurationen zur Frage in der Aufgabenseite erfolgt nach der Reihenfolge des Auftretens: Der erste Init-Block konfiguriert die erste Frage der (Teil-)Aufgabe, der darauf folgende Init-Block die zweite Frage u.s.w..

Abschließend finden sich Sequenzen aus je einer Intervall-Property (Angabe eines Punkteintervalls) gefolgt von einer Textbaustein-Property mit ggf. mehrzeiligem Textkommentar. Diese Angaben entsprechen der Rubrik »Kommentar zur Gesamtwertung« des Aufgabenerstellungsassistenten.

Im Folgenden soll genauer auf die Init-Blöcke eingegangen werden. Unabhängig vom Typ der zu bewertenden Frage gibt es einige „globale“ Properties, die immer anzugeben sind:

Property Mögliche Werte  Bedeutung
Aufgabentyp 1ausN, XausN, XausNv2, XausN+, XausN3A, 1-XausN, 1-XausNv2, 1-XausN+, Zuordnung, Zahlen, Begriffe oder BegriffeIC Bewertermodus, d.h. um was für eine Art von Frage bzw. Art der automatischen Auswertung handelt es sich? (Groß-/Kleinschreibung der Bewerternamen ist beliebig.)
Name String  Der Fragetitel. Dieser String wird der Auswertung einer Frage vorangestellt und sollte mit einer entsprechenden Überschrift im Aufgabenformular übereinstimmen, um den Bezug der Auswertung zur Frage herzustellen.
Kommentar String Optionaler Erläuterungstext, der unabhängig vom erreichten Ergebnis unter der Auswertung zu einer Frage angezeigt wird.
Punkte Natürliche Zahl Die zu vergebende Punktzahl bei korrekter Antwort, bzw. Maximalpunktzahl bei Fragen wie Multiple Choice. Ggf. auch mehrere Punktzahlen durch Semikolon getrennt (maximal soviele wie Vorgaben, unterstützt bei 1AusN, XausN… und Zahlen.)
Gewichtung Natürliche Zahl Sollte normalerweise immer 1 sein. Die erreichte Punktzahl wird mit diesem Faktor multipliziert, wodurch mehr als 100% der Punkte erreicht werden können.

Die weiteren Properties sind abhängig vom gewählten Fragentyp (Property Aufgabentyp), darauf werden die nachfolgenden Unterabschnitte eingehen.

Typen 1ausN, XausN, XausNv2, XausN+

1ausN steht für eine Einfachauswahl aus mehreren Alternativen, z.B. per Radiobutton, bewertet mit voller Punktzahl, wenn der Student die richtige Auswahl getroffen hat, andernfalls mit 0 Punkten.

Technische Seite: Die Einsendung eines Studenten ist ein String, und die Musterlösung (Property Vorgabe, s.u.) ist ebenfalls ein String. Stimmen beide überein, wird die Einsendung mit voller Punktzahl bewertet, sonst mit 0 Punkten. Eine typische Realisierung besteht darin, in der Aufgabenseite Radiobuttons oder eine Selectbox einzubinden, über welche ein Student einen aus N vorgegebenen Strings auswählen kann, der dann bei der korrekten Auswahl mit dem Lösungsstring übereinstimmt. Typische Strings sind einfach nur Buchstaben A, B, C u.s.w., mit denen die Alternativen aufgezählt werden, aber prinzipiell sind beliebige Strings möglich.

Bei den im Folgenden genannten Bewertern XausN, XausNv2 und XausN+ soll ein Student ebenfalls aus N vorgegebenen Lösungsstrings auswählen, aber nicht genau einen, sondern eine beliebige Anzahl. D.h. es können beliebig viele der Antwortalternativen richtig oder falsch sein, insbesondere auch alle oder gar keine. (Siehe die im Folgenden noch beschriebenen 1-XausN…-Typen als Variante für Aufgaben, in denen immer mindestens eine der Antwortalternativen richtig ist.)

Die Musterlösung (Property Vorgabe, s.u.) zählt dazu durch Kommas getrennt alle korrekten Lösungsstrings auf (darf auch leer sein, wenn keine Antwort richtig ist), und auch eine studentische Einsendung soll eine solche Aufzählung von Strings sein (darf ebenfalls leer sein). Das HTML-Formular sendet entweder in einem Formularfeld direkt eine (Komma- oder Leerzeichen-separierte) Liste von Strings ein, oder es sendet in mehreren Formularelementen gleichen Namens jeweils einen ausgewählten String ein. Ein typisches Beispiel sind Checkboxen, die alle den gleichen Namen (Attribut name) haben, aber einen unterschiedlichen String (Attribut value) einsenden, wenn sie markiert sind. Aus mehreren unter dem gleichen Namen eingesendeten Strings macht das Übungssystem automatisch eine kommaseparierte Aufzählung, die es dann dem Bewertermodul übergibt.

Die genannten drei Bewerter unterscheiden sich nun in der Art der Punktevergabe und werden im Folgenden gesondert betrachtet:

XausN steht für eine Mehrfachauswahl-Aufgabe (Multiple Choice), z.B. per Checkboxen. Die Bewertung erfolgt nach dem klassischen Lotse-Schema: Bei N Antwortalternativen ist jede Alternative \(\frac{1}{N}\) der erreichbaren Punkte „wert“, und diese werden bei richtiger Antwort zur Gesamtpunktzahl addiert, bei falscher Antwort von der Gesamtpunktzahl abgezogen (als so genannte „Ratekorrektur“, s.u.). Negative Gesamtpunkte werden nicht vergeben, bei mehr falschen als richtigen Antworten werden 0 Punkte vergeben.

Mit „richtiger Antwort“ zu einer Antwortalternative ist dabei gemeint, dass der Student eine laut Lösung richtige Antwortalternative genannt (bzw. angekreuzt) oder eine laut Lösung falsche Antwortalternative nicht genannt/angekreuzt hat. Entsprechend wird das Nennen einer falschen Alternative ebenso wie das Nicht-Nennen einer richtigen Alternative als „falsche Antwort“ gewertet.

Sei also P die erreichbare Punktzahl, N die Anzahl der Antwortalternativen und gebe ein Student davon r viele richtige und f viele falsche Antworten (wobei r + f = N gilt), so berechnet sich die Gesamtpunktzahl G wie folgt:

\[ G = max\left(0, \frac{r - f}{N} P\right) = max\left(0, \frac{2r - N}{N} P\right) \]

Beispiel: Es gebe vier Antwortalternativen A bis D. Die Musterlösung laute „A,D“, d.h. der Student muss genau die Antworten A und D geben (z.B. in Form angekreuzter Checkboxen), darf jedoch weder B noch C antworten, um die volle Punktzahl zu erhalten. Antwortet der Student nun z.B. „A,B“, so ist die Antwort „A“ korrekt, die Antwort „B“ falsch, das Nicht-Geben der Antwort „C“ korrekt, das Nicht-Geben der Antwort „D“ wiederum falsch, so dass er insgesamt r = 2 richtige und f = 2 falsche Antworten gegeben hat und somit \(\frac{2-2}{4} P\) = 0 Punkte erhält. Die Antwort „A,B,D“ dagegen bestünde aus r = 3 richtigen und f = 1 falscher Antwort und würde mit \(\frac{3-1}{4} P = \frac{1}{2} P\), also der Hälfte der erreichbaren Punktzahl bewertet.

(Diese „Ratekorrektur“ in Form von Punktabzug für falsche Antworten stellt sicher, dass nicht durch zufälliges Raten im Schnitt 50% der Punkte erzielt werden können, wie es der Fall wäre, wenn nur die richtigen Antworten gewertet und die falschen ignoriert bzw. mit 0 Punkten bewertet würden.)

XausNv2 bezeichnet ebenfalls eine Multiple-Choice-Aufgabe mit „Ratekorrektur“, jedoch erfolgt die Bewertung nach einem anderen Schema (Lotse-Bewertung Version 2), welches wirklich nur dann 0 Punkte vergibt, wenn alle Alternativen falsch beantwortet wurden. Für noch genau eine richtige Antwort wird noch 1% der erreichbaren Punkte vergeben (gerundet), und für mehr richtige Antworten werden auch anteilig mehr Punkte vergeben, jedoch in immer größeren Stufen, so dass auch hier durch Raten nicht im Schnitt 50% der Punkte erreicht werden können. Bei keinem Fehler oder genau einem Fehler stimmt die Bewertung noch mit der klassischen Lotse-Bewertung überein, bei mehr als einem Fehler werden etwas mehr Punkte als bei der klassischen Bewertung vergeben.

Genauer sieht die Punktevergabe bei XausNv2 wie folgt aus: Sei wieder N die Anzahl der Antwortalternativen und P die erreichbare Punktzahl, so wird für die Anzahl r der vom Studenten gegebenen richtigen Antworten (0 ≤ rN) folgende Gesamtpunktzahl G(r) vergeben:

r G(r)
N P (also 100%)
N – 1 \( \frac{N-2}{N} P \)
N – 2 \( \frac{N-3}{N-1} G(N-1) \)
N – 3 \( \frac{N-4}{N-2} G(N-2) \)
u.s.w., d.h. \( \frac{r-1}{r+1} G(r+1) \) für 1 < r < N
1 \( \frac{P}{100} \) (also 1%)
0 0

Oder kurz und ohne Rekursion zusammengefasst:

\[ G(r) = \left\{\begin{array}{ll} \frac{r}{100} P & , falls \quad 0 \le r \le 1 \\ \left( \prod\limits^N_{i=r+1}{\frac{i-2}{i}} \right) P & , falls \quad 1 < r \le N \end{array} \right. \]

Hat eine Frage z.B. genau N = 5 Antwortalternativen, so werden bei einem Fehler (r = 4) noch \(\frac{3}{5} P\), also 60% der erreichbaren Punkte vergeben, bei zwei Fehlern (r = 3) noch 30% (\(\frac{2}{4} 60\% \)), bei drei Fehlern (r = 2) noch 10% (\(\frac{1}{3} 30\%\)) der erreichbaren Punkte, bei vier Fehlern noch 1% und erst bei fünf Fehlern, also gar keiner richtigen Antwort, 0 Punkte. Sollte sich bei der Berechnung keine ganze Zahl ergeben, so wird diese gerundet.

Falls Sie gar keine „Ratekorrektur“ wünschen, dafür in Kauf nehmen, dass allein durch Raten rund 50% der Punkte erreicht werden können (gute Leistungen also eher im Bereich ab 75% bis 100% liegen müssen), können Sie den Bewertertyp XausN+ verwenden. Dieser vergibt ausschließlich Pluspunkte (\(\frac{1}{N} P\) Punkte) für richtige Antworten, 0 Punkte für falsche.

Vergleich der XausN…-Bewerter für 6 Antwortalternativen:

Richtige Antworten (aus 6) XausN XausNv2 XausN+
6 100,00% 100,00% 100,00%
5 ⅔ ≈ 66,67% ⅔ ≈ 66,67% ⁵⁄₆ ≈ 83,33%
4 ⅓ ≈ 33,33% 40,00% ⅔ ≈ 66,67%
3 0 20,00% 50,00%
2 0 ²⁄₃₀ ≈ 6,67% ⅓ ≈ 33,33%
1 0 1,00% ¹⁄₆ ≈ 16,67%
0 0 0 0

Vergleich der XausN…-Bewerter für 5 Antwortalternativen:

Richtige Antworten (aus 5) XausN XausNv2 XausN+
5 100,00% 100,00% 100,00%
4 60,00% 60,00% 80,00%
3 20,00% 30,00% 60,00%
2 0 10,00% 40,00%
1 0 1,00% 20,00%
0 0 0 0

Vergleich der XausN…-Bewerter für 4 Antwortalternativen:

Richtige Antworten (aus 4) XausN XausNv2 XausN+
4 100,00% 100,00% 100,00%
3 50,00% 50,00% 75,00%
2 0 ⅙ ≈ 16,67% 50,00%
1 0 1,00% 25,00%
0 0 0 0

Für alle vier Bewerter (1ausN, XausN, XausNv2 und XausN+) sind folgende Properties zusätzlich anzugeben:

Property Mögliche Werte  Bedeutung
N Natürliche Zahl  Anzahl der Antwortalternativen. Bei Multiple Choice (XausN…) sollte die Gesamtpunktzahl durch N teilbar sein – zumindest bei XausN und XausN+ sind dann alle möglichen Bewertungen ganze Zahlen. Sollte sich eine nicht-ganze Punktzahl für einen Studenten errechnen, wird diese immer abgerundet (die Nachkommastellen also abgeschnitten)!
Vorgabe String Korrekte Lösung. Bei Einfachauswahl ein einfacher String, der mit dem vom Formular eingesendeten Formularwert (z.B. value-Attribut eines Radiobuttons) übereinstimmen soll, bzw. eine Semikolon-separierte Aufzählung mehrerer alternativer Lösungen, die alle mit der vollen Punktzahl bewertet werden sollen. Bei Mehrfachauswahl eine Komma-separierte Liste der richtigen Antworten, die zusammen die Lösung bilden. Ein +-Suffix an einer Antwort nimmt diese aus der Wertung28, der Student bekommt dann für diese Antwortalternative immer die Punkte, unabhängig davon, ob er die Antwort gegeben hat oder nicht. Auch bei Mehrfachauswahl können mehrere alternative Musterlösungskombinationen angegeben werden, indem mehrere dieser Komma-separierten Lösungskombinationen jeweils durch Semikolon getrennt aufgezählt werden. Alternativ * für „außer Wertung“, s.u.

Bei Angabe mehrerer alternativer Musterlösungen (in Vorgabe durch Semikolon getrennt aufgezählt, s.o.) wird für die Bewertung nach obigen Schemata die Lösung herangezogen, für die r maximal ist, bezüglich der also der Student die meisten richtigen Antworten gegeben hat.

Betrachten Sie z.B. im obigen Beispiel-Listing den ersten Init-Block. Dieser geht davon aus, dass die erste Frage im Aufgabenformular eine Mehrfachauswahl-Frage mit vier Antwortalternativen ist, deren values die Großbuchstaben A, B, C und D sind. Ein Student soll jeweils die volle Punktzahl bekommen, wenn er nur die Antworten A und D gegeben hat oder wenn er A und C und optional noch B, nicht jedoch D geantwortet hat. Antwortet ein Student also z.B. B,C, so bekommt er noch 60% der erreichbaren Punkte: Bezüglich Vorgabe A,D hätte er r = 0 richtige Antworten gegeben, bezüglich Vorgabe A,B+,C dagegen r = 3 Richtige (das Nicht-Nennen von A wäre hier der einzige Fehler), also wird gegen diese Vorgabe gewertet.

Angabe mehrerer Punktzahlen

Falls Sie in Vorgabe mehrere alternative Musterlösungen (durch ; getrennt) vorgeben, können Sie auch in der Property Punkte mehrere Maximalpunktzahlen (ebenfalls durch ; getrennt) eintragen:

Beispiel 1: Betrachtet sei folgender Init-Block für eine Einfachauswahlfrage:

Init:
  Aufgabentyp: 1ausN
  Vorgabe: A; C; D
  Punkte: 10; 20; 15
  Gewichtung: 1
  N: 5
  Name: Einfachauswahl-Demo

In dieser Aufgabe sind maximal 20 Punkte erreichbar, die ein Student genau dann erreicht, wenn er mit C antwortet. Antwortet ein Student mit A, bekommt er dafür noch 10 Punkte (halbe Punktzahl), für Antwort D bekommt er noch 15 Punkte (drei Viertel). Antworten B und E gelten als „komplett“ falsch und werden mit 0 Punkten bewertet.

Beispiel 2: Betrachtet sei folgender Init-Block für eine Mehrfachauswahlfrage:

Init:
  Aufgabentyp: XausN+
  Vorgabe: A,B+,C; E; B,C
  Punkte: 100; 50
  Gewichtung: 1
  N: 5
  Name: Mehrfachauswahl-Demo

Sendet ein Student nun z.B. eine der Antworten A,B,C oder A,C oder B,C ein, erhält er dafür jeweils 100 Punkte gutgeschrieben. Auch die Antwort E wird zwar als volle Übereinstimmung mit einer der drei Lösungen akzeptiert, jedoch als „minderwertige“ Lösung nur mit 50 statt 100 Punkten bewertet.
Die Antwort C,E dagegen stimmt mit keiner der Lösungen vollständig überein, aber stellt eine Teilübereinstimmung mit allen drei Lösungen dar. Verglichen mit Lösung E liegt nur ein Fehler vor, was der XausN+-Bewerter mit 80% von 50 Punkten = 40 Punkten bewerten würde. Verglichen mit Lösung B,C liegen zwar 2 Fehler vor, was der XausN+-Bewerter jedoch mit 60% von 100 Punkten, also 60 Punkten bewertet. Der Student erhielte bei dieser Konfiguration daher 60 Punkte auf die Antwort C,E, da nicht die Antwort mit den wenigsten Fehlern zählt, sondern die, mit der er die bestmögliche Punktzahl erreicht.

Auswahlfrage aus der Wertung nehmen

Falls Sie nach einer Auswertung feststellen sollten, dass eine Auswahlfrage (egal ob Einfach- oder Mehrfachauswahl) missverständlich oder falsch gestellt war, können Sie unter Vorgabe (statt einer oder mehrerer Lösungsvorgaben) einfach ein Sternchen * eintragen und die Aufgaben neu auswerten. Die Auswirkung ist, dass jede beliebige Eingabe akzeptiert und mit voller Punktzahl bewertet wird. Die Frage ist damit dann effektiv aus der Wertung.

Man kann alternativ auch einfach alle möglichen Lösungen als alternative Vorgaben aufzählen, z.B. A+,B+,C+,D+,E+ für eine X-aus-5-Frage oder A;B;C;D;E für eine 1-aus-5-Frage), aber die Vorgabe * ist deutlich kürzer und unabhänigig von der Menge der Antwortalternativen. Zudem gibt es einen erwähnenswerten Unterschied, falls das Eingabeformular zu einer Auswahlaufgabe auch ungültige Antworten ermöglicht (z.B. ein Textfeld enthält, in das Antworten wie A, B eingetippt werden sollen, aber eben auch andere Texte wie Hallo eingetragen werden können, oder Checkboxen zu einer Einfachauswahl-Frage, die, obwohl nur eine Antwort richtig sein kann und gegeben werden darf, dennoch mehrere Antworten ermöglichen – was grundsätzlich als Fehler gilt und mit 0 Punkten bewertet wird). In diesen Fällen bewirkt eine *-Vorgabe, dass wirklich jeder Einsender die volle Punktzahl bekommt, während in den Fällen, in denen die Vorgabe nur sämtliche gültigen Antwortmöglichkeiten aufzählt, ungültige Antworten weiterhin mit 0 Punkten bewertet würden.

Typen 1-XausN, 1-XausNv2, 1-XausN+

Diese Typen stehen für Mehrfachauswahlaufgaben, bei denen eine bis X aus N verschiedenen Antwortalternativen korrekt sind. Sie stellen jeweils eine Variante der oben genannten Typen XausN, XausNV2 und XausN+ dar, mit folgenden Besonderheiten:

Für die Bewertung gilt also: Der Bewerter 1-XausN… vergibt prinzipiell dieselbe Punktzahl wie der XausN… mit gleichem Suffix (ohne das Präfix 1-), außer falls der Student gar keine Antwort gegeben hat (keine Antwortalternative als richtig markiert hat), dann werden grundsätzlich 0 Punkte vergeben, selbst wenn der entsprechende XausN…-Bewerter dafür noch Teilpunkte vergeben hätte.

Beispiel: Bei einer Frage mit fünf Antwortalternativen A bis F sei nur Alternative A korrekt (Konfiguration: Vorgabe: A). Sendet ein Student nun eine leere Antwort ein, so bekäme er z.B. vom XausN- und XausNV2-Bewerter noch jeweils \(\frac{3}{5}\) der erreichbaren Punkte, vom XausN+-Bewerter sogar noch \(\frac{4}{5}\), weil er vier richtige und nur eine falsche Antwort gegeben hat. Die 1-XausN…-Bewerter vergeben dagegen jeweils 0 Punkte, da die Aufgabe ohne Antwort als nicht beantwortet / nicht bearbeitet angesehen wird.

Der 1-XausN…-Aufgabentyp „zwingt“ die Studenten also dazu, mindestens eine Antwort zu geben. Rät der Student aus obigem Beispiel nun aus diesem Grund (statt gar nichts zu antworten) z.B. Antwort B, so erhält er vom 1-XausN-Bewerter (genau wie vom XausN-Bewerter bei gleicher Antwort) noch \(\frac{1}{5}\), von 1-XausNv2 (wie von XausNv2) noch 30% und von 1-XausN+ (ebenso wie von XausN+) noch \(\frac{3}{5}\) der erreichbaren Punkte – in jedem Fall also weniger, als er bei leerer Antwort vom jeweiligen XausN…-Bewerter erhalten hätte.

Typ XausN3A

Dieser Aufgabentyp stellt eine besondere Alternative zu den oben genannten XausN, XausNv2 und XausN+ dar. Der Grund für deren Unterschiede war ja die Behandlung des Einflusses von Raten auf das Gesamtergebnis: Bei XausN+ ohne Ratekorrektur sind bereits im Schnitt durch Raten 50% der Punkte erreichbar, erst Ergebnisse ab etwa 75% sind überhaupt als ausreichend zu betrachten. Die beiden anderen Bewerter gehen dagegen mit einer Ratekorrektur vor.

Alle obigen Aufgabentypen haben dabei gemeinsam, dass ein Student zu jeder Antwortalternative eine von zwei möglichen Antworten geben muss: „richtig“ oder „falsch“ (bei Checkboxen: angekreuzt oder nicht angekreuzt). Ist er sich bei einer Antwort nicht sicher, muss er raten.

Dieser Modus dagegen bietet einem Studenten zu jeder Antwort drei Antwortmöglichkeiten: „korrekt“, „falsch“, „keine Antwort / weiß ich nicht“ (daher das Suffix 3A für „3 Antwortmöglichkeiten“). Dies ermöglicht eine differenziertere Ratekorrektur: Der Student selbst kann bei Antwortalternativen, bei denen er sich nicht sicher ist, entscheiden, ob er die Alternative unbeantwortet lassen will (dann erhält er auf diese nicht gegebene Antwort 0 Punkte) oder ob er raten will – mit der Chance auf Pluspunkte bei korrekter Antwort, aber auf Minuspunkte bei falscher Antwort.

Sei wieder N die Anzahl der Antwortalternativen und P die maximal erreichbare Gesamtpunktzahl, dann ist analog zu XausN jede Antwortalternative \(\frac{1}{N} P\) Punkte „wert“, d.h. für jede richtige Antwort werden \(\frac{1}{N} P\) Punkte vergeben, für jede falsche Antwort entsprechend \(-\frac{1}{N} P\) Punkte, für unbeantwortete Alternativen dagegen 0 Punkte – gerade das ist die Besonderheit im Vergleich zum klassischen XausN-Bewerter.

Die Gesamtpunktzahl G zu einer solchen X-aus-N-Frage errechnet sich in Abhängigkeit der Anzahl richtiger Antworten r und der Anzahl falscher Antworten f wie folgt (wobei hier im Unterschied zu obigen Bewertern 0 ≤ r + fN gilt, also insgesamt weniger als N Antworten gegeben werden können):

\[ G(r,f) = max\left(0, \frac{r - f}{N} P\right) \]

(Im Prinzip ist das die gleiche Formel wie oben unter XausN angegeben, nur ohne die Nebenbedingung, dass r + f = N gilt und entsprechend ohne die Umformungsmöglichkeit in eine nur von r abhängige Gleichung.)

Für N = 5 Alternativen sieht die Bewertung z.B. wie folgt aus:

r f G (in Prozent von P)
5 0 100%
4 0 80%
4 1 60%
3 0 60%
3 1 40%
3 2 20%
2 0 40%
2 1 20%
2 2-3 0
1 0 20%
1 1-4 0
0 0-5 0

Die Konfiguration des Bewertermoduls erfolgt exakt wie bei den obigen Bewertern auch. Insbesondere wird in der Property Vorgabe jede richtige Lösung (in Großbuchstaben) aufgezählt.

Anders ist der Aufbau der vom Aufgabenformular einzusendenden Strings, die das Bewertermodul verarbeiten muss. Bei den obigen Bewertern musste der String eine Aufzählung aller vom Student genannten Antworten enthalten. Das genügt hier bei drei Antwortmöglichkeiten nicht mehr. Vielmehr erwartet dieser Bewerter eine Aufzählung aller Ja- und Nein-Antworten des Studenten, wobei eine Ja-Antwort nur aus Großbuchstaben bestehen darf, eine Nein-Antwort nur aus Kleinbuchstaben. Eine Antwort, die in der Einsendung gar nicht genannt wird (weder in Groß- noch in Kleinschreibung), gilt als „keine Antwort“ (also 0 Punkte).

Beispiel: Angenommen, eine Aufgabe bestehe aus fünf Antwortalternativen A bis E, und die Musterlösung (Property Vorgabe) laute A, C. Eine Einsendung eines Studenten könnte nun lauten: A, b, d, E, d.h. der Student hätte A und E als richtig eingestuft, B und D als falsch, und zu C hätte er keine Antwort gegeben. Damit hätte er 4 von 5 Antworten gegeben, davon r = 3 richtige (Einstufung von A als korrekt und von B und D als falsch) und f = 1 falsche (E), d.h. er bekäme rf = 3 − 1 = 2 Fünftel der erreichbaren Punkte.

Realisierung des Aufgabenformulars durch den Aufgabenerstellungsassistenten
Realisierung des Aufgabenformulars durch den Aufgabenerstellungsassistenten

Ein Aufgabenformular dazu kann man wieder mit Checkboxen realisieren, allerdings mit zwei Checkboxen zu jeder Antwortalternative (jeweils mit groß- und kleingeschriebenem Lösungsstring als value). Vgl. obige Abbildung, die zeigt, wie der Aufgabenerstellungsassistenten ein solches Formular aufbaut. Wenn solche zwei Checkboxen verwendet werden, ist eine Skriptsteuerung sinnvoll, die gleichzeitiges Ankreuzen beider Antworten (richtig & falsch) zur selben Alternative vermeidet. Fehlt eine solche Maßnahme und markiert tatsächlich ein Student eine Antwort gleichzeitig als richtig und als falsch, so erhält er darauf sowohl Plus- als auch Minuspunkte, die sich effektiv auslöschen, d.h. die Antwort wird im Endeffekt genauso mit 0 Punkten bewertet, als hätte er sie gar nicht beantwortet.

Typ Zuordnung

Eine Zuordnungsaufgabe ist eine Sammlung von mehreren Einfachauswahl-Subfragen in einer Frage, wobei die Menge der Antwortalternativen zu jeder Teilfrage identisch ist. Die typische Darstellung ist daher eine Art Matrix mit den Teilfragen als Zeilen und den Antwortalternativen als Spalten (vgl. Abschnitt zum Aufgabenerstellungsassistenten).

Die Konfiguration erfolgt daher fast genauso wie beim 1ausN-Bewerter:

Property Mögliche Werte  Bedeutung
N Natürliche Zahl  Anzahl der Antwortalternativen (für alle Teilfragen gleich)
Felder Natürliche Zahl  Anzahl der Teilfragen (= Anzahl der Eingabefelder für die Antworten)
Vorgabe String Durch Pipe ('|') separierte Liste von Vorgabe-Strings für den 1-aus-N-Bewerter (siehe vorhergehenden Abschnitt). Bei 5 Teilfragen also erst die Vorgabe für die erste Teilfrage (erwartete Antwort oder Semikolon-separierte Liste alternativer Antworten), dann ein Pipe, gefolgt von der Vorgabe für die zweite Teilfrage etc.
Fragen String Optional: Durch Pipe ('|') separierte Liste der Teilfragen (Fragestellungen oder Namen der Teilfragen). Wenn angegeben, wird in der Auswertung dieser String jeweils der Auswertung der jeweiligen Teilfrage vorangestellt, um den Bezug der Auswertung zur Teilfrage herzustellen. Wird diese Property nicht angegeben, findet sich in der Auswertung einfach nur eine Liste von Einfachauswahl-Auswertungen, die alle mit dem Titel der Zuordnungsfrage allein beschriftet sind.

Nehmen wir als Beispiel die folgende Zuordnungsmatrix an:

Beispiel für eine Zuordungsfrage mit alternativen Antwortmöglichkeiten
Beispiel für eine Zuordungsfrage mit alternativen Antwortmöglichkeiten

Dem deutschen Wort »Hallo« soll der Student wahlweise das deutsche »Welt« oder den englisch wie deutsch gleich geschriebenen Namen »Peter« zuordnen dürfen, nicht jedoch das englische Wort »World«. Entsprechend darf dem englischen »Hello« alternativ »World« oder auch »Peter« zugeordnet werden. Die Konfiguration (unter der Annahme, dass die einsendbaren Values die Buchstaben A, B oder C sind wie über der Tabelle angegeben) könnte dann wie folgt aussehen:

Init:
  Aufgabentyp:	ZUORDNUNG
  Name:		Zuordnung
  Kommentar:	
  Punkte:	10
  Gewichtung:	1
  N:		3
  Felder:	2
  Vorgabe:	A;C|B;C
  Fragen:	Hallo|Hello
Typ Zahlen

Gefragt wird nach einer reellen Zahl, die in einem bestimmten Lösungsintervall liegen muss. Jede Antwort in diesem Intervall erhält die volle Punktzahl, Antworten außerhalb des Intervalls 0 Punkte.

Property Mögliche Werte  Bedeutung
Vorgabe Zwei Fließkommazahlen Es sind zwei Zahlen anzugeben, um ein Intervall festzulegen, in welchem die eingegebene Lösung des Studenten liegen muss. Ein Vorzeichen ist optional, als Dezimaltrenner darf wahlweise Punkt oder Komma verwendet werden, Tausendertrenner sind daher nicht erlaubt. Das Trennzeichen zwischen den beiden Intervallgrenzen ist nicht vorgegeben, ein Komma eignet sich aber nicht, da es als Dezimaltrenner gelesen werden könnte, und das Semikolon eignet sich ebenfalls nicht, da es zur Aufzählung alternativer Lösungsintervalle dient (s.u.). Der Aufgabenerstellungsassistent trennt die beiden Angaben z.B. per /. Optional können eckige Klammern als Intervallklammern notiert werden, die explizit signalisieren, ob die jeweilige Intervallgrenze Teil des Lösungsintervalls sein soll oder nicht. Außerdem ist Vorgabe * für „außer Wertung“ möglich, s.u..

Beispiel für die Angabe von Intervallklammern: Bei Angabe von Vorgabe: ]0.0 / 42.0] gehört die Zahl 0 selbst nicht mehr zum Intervall, für eine korrekte Lösung muss gelten: 0 < Lösung ≤ 42. (D.h. Eingaben wie 0.001 oder 0.0000003 gelten noch als korrekt, 0.0 jedoch schon als falsch.)

Wie gesagt sind die Klammern optional, lässt man die Klammern weg, gelten die Intervallgrenzen implizit als eingeschlossen. Die Vorgabe 0,0 / 10,0 ist z.B. gleichbedeutend mit [0,0 / 10,0].

Werden unter Vorgabe mehr als zwei Zahlen angegeben, so werden alle ab der dritten ignoriert. Wird nur eine Zahl angegeben, so muss die studentische Eingabe genau dieser Zahl entsprechen, das Lösungsintervall besteht also nur aus genau dieser Zahl als oberer und unterer Grenze.

Wie bei den obigen Bewertern gilt auch hier: Es können mehrere alternative Vorgaben durch Semikolon getrennt aufgezählt werden.

Angabe mehrerer Punktzahlen

Falls Sie unter Vorgabe mehrere alternative Antwortmöglichkeiten aufzählen, gilt jede davon als richtig und wird mit der volle Punktzahl bewertet. Außerdem haben Sie auch hier wieder die Möglichkeit, jeder möglichen richtigen Antwort, die Sie unter Vorgabe aufzählen, unterschiedliche erreichbare Punktzahlen zuzuordnen, indem Sie in der Punkte-Eigenschaft mehrere Werte durch ; getrennt aufzählen (wie schon oben zu den 1ausN- und XausN*-Bewertern beschrieben).

Beispiel: Angenommen sei folgende Bewerterkonfiguration für eine Zahlen-Frage:

Init:
  Aufgabentyp: Zahlen
  Name: Zahlen
  Punkte: 10; 20
  Gewichtung:1
  Vorgabe: -42 / -40; 40 / 42

Bei dieser Konfiguration wird jede positive Eingabe zwischen 40 und 42 mit 20 Punkten bewertet, bei Minus-Vorzeichen (Zahl zwischen -42 und -40) werden noch 10 Punkte vergeben, alle anderen Eingaben werden mit 0 Punkten bewertet.

Zahlen-Frage aus der Wertung nehmen

Falls Sie nach einer Auswertung feststellen sollten, dass eine Zahlenfrage missverständlich oder falsch gestellt war, so dass weder durch die ursprünglich eingestellten Lösungsintervalle eine gerechte Bewertung möglich ist, noch sich die Musterlösung geeignet anpassen lässt, können Sie unter Vorgabe (statt eines Lösungsintervalls) einfach ein Sternchen * eintragen und die Aufgaben neu auswerten. Die Auswirkung ist, dass jede beliebige Eingabe akzeptiert und mit voller Punktzahl bewertet wird. Die Frage ist damit dann effektiv aus der Wertung.

Typen Begriffe und BegriffeIC

Diese Bewerter gehören zu Fragen, bei denen ein Student einen oder mehrere Begriffe eingeben soll. Dazu wird eine Menge korrekter Begriffe als Musterlösung festgelegt, aus denen der Student alle oder eine Teilmenge nennen muss. Zu jedem Begriff können optional Synonyme definiert werden.

Die beiden Bewerter Begriffe und BegriffeIC verhalten sich fast identisch, der einzige Unterschied ist die Behandlung der Groß-/Kleinschreibung in den studentischen Antworten: BegriffeIC ignoriert die Groß-/Kleinschreibung – „IC“ steht hier für „ignore case“ –, Begriffe dagegen besteht auf korrekte Groß-/Kleinschreibung.

Property Mögliche Werte  Bedeutung
Felder Natürliche Zahl  Anzahl der vom Studenten einzugebenden Begriffe, d.h. der Eingabefelder.
Uebereinstimmung Prozentzahl (1..100) Bei Wert 100 muss eine studentische Eingabe exakt mit einem Vorgabewort übereinstimmen, um gewertet zu werden, bei kleineren Werten dürfen Abweichungen in entsprechend vielen Zeichen bestehen, um fehlertoleranter bei Tippfehlern zu bewerten.
Wortliste Strings Die Property Wortliste: darf mehrfach vorkommen, es gibt je eine Wortliste für jeden abgefragten Begriff. Innerhalb der Wortliste können, durch Pipe-Symbole ('|') getrennt, verschiedene Synonyme aufgezählt werden.

Betrachten Sie die Konfiguration zur Begriffs-Frage im obigen Beispiellisting: Dort wird nach zwei Begriffen gefragt und es werden zwei Wortlisten angegeben, d.h. der Student muss aus jeder der Wortlisten eines der Synonyme nennen. (Es kann auch mehr Wortlisten als verlangte Begriffe geben, dann wird eben nur nach einer Teilmenge der akzeptierten Begriffe gefragt.) Eine zugehörige Frage zu dieser Bewerterkonfiguration könnte lauten: „Nennen Sie die Stadt und das Bundesland, in denen die FernUniversität ihren Sitz hat.“ Der Student erhält zwei Eingabefelder und soll die Begriffe „Hagen“ und „Nordrhein-Westfalen“ angeben. Jeder dieser beiden Begriffe wird als Wortliste-Property festlegt, und zu jedem wurden mehrere Synonyme (alternative Schreibweisen) festgelegt. Die Übereinstimmung wurde auf 100% belassen, was jedoch durch den Bewerter BegriffeIC insofern abgeschwächt wurde, als dass bei der Bewertung die Groß-/Kleinschreibung nicht berücksichtigt wird.

Es ist wichtig, dass im Beispiel „NRW“ und „Nordrhein-Westfalen“ Synonyme sind, also in derselben Wortliste stehen: Bei Eingabe von „NRW“ in eines der beiden Eingabefelder und von „Nordrhein-Westfalen“ ins zweite wird so nur die halbe Punktzahl vergeben, da dies als Doppelnennung desselben Begriffs (nur in verschiedenen Schreibweisen) erkannt wird. Hätte man beide Schreibweise als separate Wortlisten definiert, würden beide Schreibweisen als unabhängige Begriffe gewertet, d.h. diese Eingabe erhielte die volle Punktzahl.

Antworthäufigkeits-Statistik zu einer Aufgabe aktivieren/konfigurieren

Wie eingangs im Abschnitt zu den Standard-Kursressourcen bereits angekündigt, können zu einer Aufgabe spezielle Statistiken zur Häufigkeit gegebener Antworten erstellt werden, indem eine Standard-Kursressource antwortstatistikx.y.xml erstellt wird.

Die folgende Abbildung zeigt beispielhaft eine solche Antworthäufigkeitsstatistik für eine X-aus-5-Multiple-Choice-Frage, genauer zwei verschiedene Statistiken zur selben Frage:

Antworthäufigkeitsstatistik(en) zu Multiple-Choice-Frage
Antworthäufigkeitsstatistik(en) zu Multiple-Choice-Frage

Die erste der beiden Statistiken zeigt die Häufigkeit der einzelnen Antworten, sowie die Markierung, welche dieser Antworten richtig bzw. falsch sind. Die zweite Statistik zeigt die Häufigkeit der tatsächlich gegebenen kombinierten Antworten (als Aufzählung der markierten Antwortalternativen).

Die Statistik aus obiger Beispielabbildung wurde definiert über folgende aufgabenstatistik1.3.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<antwortstatistiken xsi:noNamespaceSchemaLocation="https://online-uebungssystem.fernuni-hagen.de/download/antwortstatistik.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <statistik maxlaenge="10" trenner="," case-sensitive="true">
        <titel>Einh.21/Aufg.03</titel>
        <untertitel>Einzelantworten</untertitel>
        <feld>A1</feld>
        <muster>A</muster>
        <muster>C</muster>
        <muster>E</muster>
    </statistik>
    <statistik maxlaenge="10" case-sensitive="true">
        <untertitel>Antwortkombinationen</untertitel>
        <feld>A1</feld>
        <muster>A,C,E</muster>
    </statistik>
</antwortstatistiken>

Die folgenden Abschnitte behandeln den Aufbau der XML-Datei im Allgemeinen.

XML Schema Definition (XSD)

Eine formale Schema-Spezifikation für diesen XML-Aufbau (im XSD-Format) können Sie im Online-Übungssystem herunterladen (siehe xsi:noNameSpaceSchemaLocation in obigem Listing, außerdem wird das XSD auch in der fortgeschrittenen Aufgabenerstellung verlinkt). Dieses XSD enthält auch deutschsprachige Erläuterungstexte zu den einzelnen XML-Elementen und -Attributen und fungiert somit als Referenz.

Für die Offline-Erstellung-/Bearbeitung der XML-Datei wird ein XML-Editor empfohlen, der das im XML verlinkte XSD lesen und auswerten kann. Im Gegensatz zu einem einfachen Texteditor unterstützt ein solcher XML-Editor i.d.R. Features wie Validieren (also Fehlermeldungen, wenn Sie vom Schema abweichen), Auto-Completion (Vorschläge erlaubter/erwarteter Kindelemente oder Attribute) oder auch Anzeige der Hilfetexte aus dem XSD zum gerade bearbeiteten Element.

Falls Sie eine solche XML-Datei zu einer Aufgabe neu erstellen möchten, wird empfohlen, in der fortgeschrittenen Aufgabenerstellung zunächst die Funktion zum Generieren einer XML-Datei auszuführen und diese dann zur Nachbearbeitung herunterzuladen. Auf diese Weise erhalten Sie insb. bereits den XML-Rahmen samt Referenz aufs XSD „geschenkt“. Alternativ können Sie aber auch eine XML-Datei komplett von Hand erstellen und das Root-Tag z.B. aus obigem Listing kopieren.

Beschreibung des Dateiaufbaus

Ihre Statistikseite kann mehrere Statistiken enthalten: Zunächst kann Ihre Aufgabe ja aus mehreren Fragen bestehen, und Sie können zu jeder Frage eine Statistik erzeugen – oder auch mehr als eine Statistik pro Frage, wie in obigem Fallbeispiel, das zu einer einzigen Multiple-Choice-Frage zwei verschiedene Statistiken definiert.

Für jede zu erstellende Statistik ist im XML (unterhalb des Root-Elements antwortstatistiken) ein statistik-Element zu erstellen.

Attribute von statistik

Das Element statistik hat ein Pflichtattribut, das Sie also in jedem Fall angeben müssen: maxlaenge. Darin ist eine natürliche Zahl (> 0) anzugeben. Diese legt fest, bis zu welcher Länge Eingaben überhaupt gewertet werden. Legen Sie z.B. maxlaenge="5" fest, so werden alle Eingaben aus dem (später noch festzulegenden) Eingabefeld berücksichtigt, die maximal 5 Zeichen lang sind, während längere Eingaben komplett ignoriert, also nicht mitgezählt werden. Die Längenbeschränkung soll sicherstellen, dass die Statistik nicht „explodieren“ kann. Gerade falls lange Eingaben möglich sein sollten, gehören sie in der Regel nicht in eine solche Statistik: Einerseits würden sehr lange Eingaben mitunter schon zu riesigen Tabellenzellen führen, außerdem könnte es von sehr langen Eingaben auch eine so große Anzahl unterschiedlicher Eingaben geben, dass die Anzahl der Tabellenzeilen sehr lang und die Statistik damit dennoch wenig aussagekräftig wird (weil solche langen Eingaben i.d.R. ohnehin nicht mehrfach, sondern nur einmal vorkommen).

In obigem Beispiel einer X-aus-5-Frage können 5 verschiedene Antworten gegeben werden, mit Kommas als Trennzeichen ist die Maximallänge aller gültigen Antworten also 9 Zeichen (Länge von A,B,C,D,E). Das ist im Beispiel auf 10 Zeichen aufgerundet worden.

Optional können Sie noch das Attribut case-sensitive vom Typ Boolean hinzufügen, das festlegt, ob die Groß-/Kleinschreibung der Antworten ignoriert oder beachtet werden soll. Wird das Attribut nicht angegeben, so wird als Defaultwert true angenommen. Es wird empfohlen, diese Option wirklich nur dann auf false einzustellen, wenn Eingaben in unterschiedlicher Groß-/Kleinschreibung überhaupt möglich sind und dennoch unabhängig von ihrer Groß-/Kleinschreibung gezählt werden sollen. In der Statistik-Anzeige (Tabelle) werden dann alle gegebenen Antworten in Kleinschreibung ausgegeben. (Bei der Multiple-Choice-Frage aus obigem Beispiel wäre es z.B. eigentlich egal, ob die Groß-/Kleinschreibung beachtet wird oder nicht, da ohnehin alle Alternativen nur aus Großbuchstaben bestehen. Aber die Ausgabe der Antworten in der Statistik soll in unveränderten Großbuchstaben erfolgen.)

Ebenfalls optional ist das Attribut trenner: Wenn die Antworten aus dem Eingabefeld als Ganzes gezählt werden sollen (wie bei der zweiten Statistik in obigem Beispiel), lassen Sie das Attribut weg. Wird es angegeben, so werden die Eingaben nach dem darin befindlichen regulären Ausdruck in Teileingaben zerlegt, welche dann gezählt werden. Falls mehrere Eingaben aus verschiedenen Input-Elementen im selben Eingabefeld gespeichert werden – wie es z.B. bei Multiple-Choice-Fragen der Fall ist, wo mehrere Checkboxen demselben Eingabefeld (FeldA1 in obigem Beispiel) zugeordnet werden –, zählt das Online-Übungssystem diese Antworten automatisch durch Kommas getrennt auf (siehe Beispielstatistik oben), der übliche Wert für das trenner-Attribut ist daher ein Komma: trenner=",".

Falls nach einer Zahl in einem bestimmten Lösungsintervall gefragt sein sollte, sollten Sie das optionale Attribut nachkommastellen angeben. Es darf den Wert 0 oder größer haben. Wird es angegeben, so werden alle Eingaben, die korrekt als Zahl interpretiert sind, auf die angegebene Anzahl von Nachkommastellen gerundet und dann gezählt. Beispiel: Falls Sie nachkommastellen="2" angeben, so gelten alle Eingaben wie "1,5", "1.50", aber auch "1.498" oder "1,502" als gleich, und ihre gemeinsame Anzahl (hier 4) wird dann in der Statistik angegeben, beschriftet mit "1,50". Einzige Ausnahme: Falls Sie über das unten noch vorzustellende musterinvervall-Element festlegen, dass korrekte Eingaben in einem Intervall wie [1,50..2,00[ liegen müssen, so werden in der Statistik unter Label "1,50" nur die Werte ∈ [1,500..1,505[ zusammengefasst, während die kleineren Werte ∈ [1,495..1,500[ dann separat gezählt und als "< 1,50" aufgeführt werden. Grund ist, dass bei Eingabe eines Lösungsinvervalls korrekte und falsche Antworten getrennt gezählt werden sollen, und eben in diesem Fall die Werte außerhalb des Lösungsintervalls, die erst durch Rundung ins Intervall „rutschen“ würden, extra herausgerechnet werden. Dasselbe passiert natürlich auch im umgekehrten Fall, dass korrekte Eingaben durch Rundung aus dem Lösungsintervall herausrutschen.

Kindelemente von statistik

Die ersten beiden Kindelemente sind titel und untertitel. In titel geben Sie eine Überschrift für die Statistik an, typischerweise einfach den Titel der Frage, zu der die Statistik erstellt wird. Ein Untertitel ist optional und vor allem für den Fall vorgesehen, dass zur selben Frage zwei (oder mehr) Statistiken erzeugt werden sollen – genau wie in obigem Beispiel mit zwei Statistiken zur selben Multiple-Choice-Frage. In diesem Fall geben Sie per untertitel jeder Statistik eine untergeordnete Überschrift. Außerdem ist in dem Fall nur der ersten dieser Statistiken ein titel zu geben, nachfolgende Statistiken, die sich demselben Titel unterordnen sollen, bekommen kein eigenes titel-Kindelement.

Darauf folgt das Pflichtelement feld: Dieses beschreibt den Inhalt der Statistik. Genauer: Die Statistik soll ja zählen, wie oft bestimmte Eingaben (von den einzelnen Teilnehmern) auf eine bestimmte Frage gegeben wurden. Die Eingaben wiederum erfolgen durch Eingabefelder, wie Sie sie im Aufgabenformular erstellt haben. Zur Erinnerung: Das Formular kann ein oder mehrere input-, textarea- oder select-Elemente enthalten, die einen Namen der Form FeldA1 tragen müssen, wobei A hier die erste (technische) Teilaufgabe bezeichnet und 1 die Feldnummer zu dieser Teilaufgabe darstellt.

Um nun also die Eingaben, die in einem bestimmten Feld wie FeldA1 erfolgt sind, in einer Statistik zu zählen, ist dieser das Kindelement <feld>A1</feld> hinzuzufügen. (Die Groß-/Kleinschreibung der Teilaufgabenkennung ist dabei egal, <feld>a1</feld> wäre also auch korrekt.)

Sie haben auch die Möglichkeit, mehrere feld-Elemente hintereinander aufzuzählen. In dem Fall wird die Vereinigungsmenge aller Eingaben zu diesen Feldern gebildet und alle Vorkommen daraus gezählt.

Ein Anwendungsfall dafür liegt z.B. vor bei den vom Aufgabenerstellungassistenten erzeugten Begriffe-Fragen mit mehreren Eingabefeldern. Lautet z.B. eine Frage: »Nennen Sie 10 deutsche Bundesländer.« und enthält das Aufgabenformular dazu entsprechend 10 Eingabefelder (z.B. FeldB3 bis FeldB12) zur Eingabe je eines Bundesland-Namens, so wären hier entsprechend in der Statistik zehn Feld-Elemente einzufügen, z.B.:

…
<statistik maxlaenge="10" case-sensitive="false">
    <titel>Deutsche Bundesländer</titel>
    <feld>B3</feld>
    <feld>B4</feld>
    …
    <feld>B12</feld>
    <muster>Nordrhein-Westfalen</muster>
    <muster>Hamburg</muster>
    <muster>Bremen</muster>
    <muster>Hessen</muster>
    …
</statistik>
…

Nach der Angabe der feld-Elemente ist die eigentliche Statistikdefinition fertig. Sie können jedoch optional noch eine Musterlösung29 zur Frage hinterlegen. Wenn keine Musterlösung angegeben wird, werden zwar alle Antworten gezählt, aber nur bei Angabe einer Musterlösung, können die einzelnen gegebenen Antworten in der Statistikausgabe zusätzlich nach „richtig“ oder „falsch“ klassifiziert werden (siehe Screenshot am Beginn dieses Abschnitts).

Die Angabe der Musterlösungen erfolgt in der Regel durch ein oder mehrere muster-Elemente hinter dem/den feld-Element(en). Jede mögliche Antwort, die in der Statistik als „richtig“ zu markieren ist, ist in einem muster-Element anzugeben, jede andere Antwort wird dann als falsch markiert. (Wenn gar kein muster-Element existiert, entfällt die komplette Ausgabe der »ML«-Spalte mit den richtig-/falsch-Markierungen.)

Beispiele für solche muster-Elemente finden Sie in beiden vorangegangenen XML-Listings. Beachten Sie beim Multiple-Choice-Beispiel oben, dass für die Statistik mit den Einzelantworten (vgl. trenner=","-Attribut) auch die korrekten Einzelantworten jeweils als muster angegeben werden, während bei der Statistik für die kombinierten Antworten in obigem Fall nur ein einziges muster-Element existiert, das die einzig vollständig korrekte Antwortkombination aufzählt. (Falls mehrere Kombinationen als korrekt gelten, könnten aber auch dann entsprechend mehrere muster-Elemente aufgeführt werden.)

Falls die möglichen Antworten keine Strings sind, sondern Zahlen, die in einem bestimmten Lösungsintervall liegen müssen, um als korrekt gewertet zu werden (vgl. obige Ausführungen zum Attribut nachkommastellen), dann können Sie das bzw. die zugehörige(n) Lösungsintervall(e) über ein bzw. mehrere Musterintervall-Elemente angeben30:

Ein Musterintervall hat zunächst zwei Pflichtattribute von und bis, in denen die Intervallgrenzen anzugeben sind. Per Default sind diese implizit Teil des Intervalls, jedoch kann über die optionale Angabe der Boolean-Attribute linksoffen bzw. rechtsoffen explizit gesteuert werden, ob diese Intervallgrenzen noch zum Intervall gehören sollen oder nicht.

Das Lösungsintervall "[0,0..9,5[", also die Menge {x ∈ IR | x ≥ 0,0 ∧ x < 9,5}, könnten Sie auf folgende Weise darstellen:

<musterintervall von="0.0" bis="9.5" linksoffen="false" rechtsoffen="true"/>

Dabei ist die Angabe von linksoffen="false" nicht nötig (da false ohnehin der Defaultwert ist), macht in diesem Fall aber das XML besser lesbar, da so die Kenntnis über den Defaultwert nicht vorausgesetzt wird.

Als abschließendes Beispiel sei das statistik-Element einer Frage angegeben, die nach einer Zahl fragt, für die gilt, dass das Ergebnis einer Rundung auf eine ganze Zahl eine einstellige Zahl ≠ 0 ist. Die Eingabe muss also eine Zahl ≥ 0,5 und < 9,5 sein, wahlweise auch mit negativem Vorzeichen. Eingaben mit mehr als einer Nachkommastelle sollen auf dabei in der Statistik auf eine Nachkommastelle gerundet werden, Eingaben von insgesamt mehr als 25 Zeichen werden nicht berücksichtigt:

<statistik maxlaenge="25" nachkommastellen="1">
    <titel>Zahlen</titel>
    <feld>A10</feld>
    <musterintervall von="-9.5" bis="-0.5" linksoffen="true" rechtsoffen="false"/>
    <musterintervall von="0.5" bis="9.5" linksoffen="false" rechtsoffen="true"/>
</statistik>

Fortgeschrittene Themen

Im vorangegangenen Kapitel wurde die Erstellung von Aufgaben sowohl mit Assistenten als auch mit der sog. „fortgeschrittenen Aufgabenerstellung“ vorgestellt. Jedoch beschränkte sich das Kapitel auf den Normalfall von statischen Aufgabenseiten: Der Student öffnet das Aufgabenformular zu einer Aufgabe, sendet darüber seine Lösungen ein und erhält eine Einsendebestätigung („Quittung“). Das ist ein relativ starres, einstufiges Bearbeitungsmuster. Auch wenn mehrere Teilaufgaben zu bearbeiten sind, wiederholt sich dasselbe Muster für jede Teilaufgabe: Der Student ruft erneut das Aufgabenformular auf, füllt die Felder der Teilaufgabe aus, sendet die Eingaben ein und erhält die Quittung. Etwas mehr Dynamik erhält der Prozess bei Einsatz eines Vorkorrekturmoduls, da die Quittungsseite dann nicht nur eine einfache Eingangsbestätigung enthält, sondern bereits Feedback liefert, woraufhin der Student eine weitere Wiederholung dieser Sequenz (Aufgabenformular, Einsendung, Quittung) vornehmen kann.

In der fortgeschrittenen Aufgabenerstellung kann der Aufgabenautor aber bei Bedarf auch von diesem starren Schema abweichen. In diesem Kapitel sollen verschiedene Anregungen dazu gegeben werden (ohne Anspruch auf vollständige Darstellung aller Möglichkeiten).

Multi-Step-Submit: Aufgabeneinsendung in mehreren Schritten

Im Grundlagen-Kapitel wurde bereits darauf eingegangen, dass eine Aufgabe in mehrere Teilaufgaben zerlegt werden kann, deren Formulareingaben getrennt voneinander einzusenden sind.

Im Normalfall finden sich die Eingabemöglichkeiten für alle Teilaufgaben gleichzeitig sichtbar in ein- und derselben Aufgabenseite – mit den bereits beschriebenen Nachteilen. Es wäre für gewisse Aufgabenstellungen möglicherweise wünschenswert, den Studenten immer nur das Formular einer Teilaufgabe zur selben Zeit anzuzeigen.

Das wäre unter anderem in der Aufgaben-HTML-Seite mittels JavaScript realisierbar, z.B. durch Einbindung von Tabs, mit denen sich scriptgesteuert zwischen den einzelnen Teilaufgaben-Formularen wechseln lässt – wobei das Script auch eine Warnung aussprechen sollte, wenn versucht wird, nach Vornahme von Eingaben aber ohne Submit zu einer anderen Teilaufgabe zu wechseln. (Alternativ wäre zu überlegen, dieses Tabbed Form nicht in Teilaufgaben zu zerlegen, sondern alle Eingaben in allen Tabs in einem einzigen Submit einzusenden, also zu einer einzigen Teilaufgabe zusammenzufassen.)

Ein anderer, explizit vom Online-Übungssystem unterstützter Weg zur getrennten Teilaufgabenbearbeitung (der jedoch kein beliebiges Wechseln zwischen den Teilaufgaben erlaubt, sondern nur die Vorwärtsnavigation in einer vorgegebenen Sequenz, optional auch mit Verzweigungen) basiert auf Teilaufgaben-Formularen innerhalb von Quittungsseiten. Dieser Ansatz ist im Folgenden gemeint, wenn von „Multi-Step-Submit“ die Rede ist.

Beispiel: einfache Multi-Step-Submit-Sequenz

Nehmen wir beispielhaft an, die Aufgabe 2 im ersten Aufgabenheft soll in drei Schritten bearbeitet werden: Der Student soll zuerst nur das Formular der Teilaufgabe A sehen und ausfüllen. Sobald er die Eingaben eingesendet hat, sollen weitere Fragen gestellt werden, die die Teilaufgabe B bilden. Nach deren Einsendung soll wiederum ein drittes Formular (Teilaufgabe C) angezeigt werden. Abschließend, nach Einsendung auch dieses dritten Formulars, sollen alle Eingaben zu den drei Teilaufgaben A, B und C quittiert werden.

Dies ist im Übungssystem (nur in der fortgeschrittenen Aufgabenerstellung) wie folgt realisierbar:

Jeder Student wird in diesem Beispiel also normalerweise dieselben drei Schritte der Aufgabenbearbeitung absolvieren. Unterbricht ein Student die Bearbeitung der Aufgabe z.B. nach der Einsendung zu Teilaufgabe B, so sind die Eingaben zu den ersten beiden Teilaufgaben dennoch gespeichert und können gewertet werden. Ruft der Student später die Aufgabe erneut auf, sieht er zunächst wieder nur das Formular zu Teilaufgabe A, welches seine gespeicherten Eingaben vom letzten Mal enthält. Er kann diese Eingaben ändern oder unverändert neu einsenden, um wieder zur Teilaufgabe B weiterzuwechseln. Auch hier sieht er seine letzen Eingaben und ein erneuter Submit führt weiter zum – in diesem Beispielfall noch leeren – Formular der Teilaufgabe C, in welchem nun die fehlenden Eingaben noch nachgeholt werden können.

Dieses Beispiel ist immer noch relativ „starr“ insofern, als dass immer noch jeder Student immer dieselben Teilaufgaben bearbeitet. Der wesentliche Unterschied zur einzigen Aufgabenseite ist, dass sich die Fragen auf mehrere HTML-Seiten verteilen, die immer in Sequenz abgearbeitet werden.

Der Multi-Step-Ansatz bietet aber auch verschiedene Möglichkeiten zur „Dynamisierung“.

Verzweigungen in Multi-Step-Sequenzen

Auf immer noch statischem Wege lassen sich verschiedene Verzweigungen im Fluss durch die Teilaufgaben erreichen, indem in einem Formular mehrere Teilaufgaben mit separaten Submit-Buttons angelegt werden. Z.B. könnte es in der aufgabe2.1.html zwei Teilaufgaben A und B geben, und je nachdem, welchen der beiden Buttons einsendenA oder einsendenB der Student nun anklickt, können ihm im Anschluss unterschiedliche weitere Fragen gestellt werden, indem z.B. quittung2.1.a.html ein Formular für Teilaufgabe C, quittung2.1.b.html dagegen ein Formular für Teilaufgabe D enthält.

Allerdings stellt diese Konstruktion nicht sicher, dass ein Student wirklich entweder die Sequenz (A, C) oder die Sequenz (B, D) bearbeitet, da er durch erneuten Aufruf der Aufgabe auch die jeweils zweite Sequenz im Anschluss zusätzlich ausführen kann.

Dynamisierung über Vorkorrekturmodule

Dadurch, dass Vorkorrekturmodule teilaufgabenspezifisch direkt nach jeder Einsendung ausgeführt werden und das Aussehen einer Quittungsseite beeinflussen können, ist mit ihnen insbesondere auch eine dynamische Multi-Step-Aufgabenbearbeitung möglich:

Nehmen wir z.B. an, die aufgabe2.1.html enthalte wieder genau ein Formular zu einer Teilaufgabe A mit entsprechendem Submit-Button einsendenA. Zu dieser Teilaufgabe A sei nun ein spezielles Vorkorrekturmodul registriert, dessen Ausgabe in quittung2.1.a.html über die Variable $Vorkorrektur eingebunden wird.

Dann ist es insbesondere möglich, dass das Vorkorrekturmodul ein HTML-Fragment31 zurückgibt, welches ein komplettes, dynamisch berechnetes Formular enthält. Auf diese Weise kann das Vorkorrekturmodul spezifisch die weiteren zu stellenden Fragen berechnen. Es kann bestimmen, welche Eingabefelder das Formular enthalten soll und zu welcher Teilaufgabe deren Inhalte einzusenden sind.

Das Vorkorrekturmodul sollte nur den „dynamischen Kern“ des Formulars erzeugen, während die form-Tags selbst sowie ggf. immer gleiche (statische) Formularelemente in der Vorlagendatei stehen. Bestimmt das Vorkorrekturmodul z.B. nur eine Auswahl von Eingabefeldern für die immer selbe Teilaufgabe, sollte auch der Submit-Button mit in der Vorlagendatei stehen. Entscheidet das Modul dagegen darüber, für welche Teilaufgabe eingesendet wird, wird es auch den entsprchenden Submit-Button selbst generieren und als Teil der Vorkorrektur ausgeben. Das folgende Beispiellisting geht von letzterem Fall aus:

<form method="POST" action="$WebAssignServer/$Veranstaltername/Einsendung/$KursNr/$VersionsNr/$AufgabenheftNr/$AufgabenNr">
  …
  $Vorkorrektur
  <!--| Vorkorrektur fügt dynamisch Formularelemente und Submit-Button ein |-->
  …
</form>

Für vom Vorkorrekturmodul erzeugte Formularfelder gilt dasselbe wie für statische Felder in HTML-Dateien, insbesondere kann ein Vorkorrekturmodul die Felder, die es dynamisch einfügt, auch dynamisch mit gewissen (vom Studenten editierbaren) Inhalten / Vorschlägen füllen. Wie bei statisch vorgefüllten Feldern gilt auch hier, dass einem Studenten diese Vorschläge des Vorkorrekturmoduls nur dann angezeigt werden, wenn er für die zugehörige Teilaufgabe noch nie etwas eingesendet hat – andernfalls sieht er dort seine letzte Eingabe.

Bei diesem Vorgehen ist jedoch ein wichtiger Aspekt der Aufgabeneinrichtung zu beachten: Wie im Abschnitt zur fortgeschrittenen Aufgabenerstellung ausgeführt wurde, muss das Übungssystem auf Einsendeformulare vorbereitet werden. Zu jeder Aufgabe muss das Übungssystem die genaue Anzahl ihrer Teilaufgaben und die Definition der Eingabefelder jeder Teilaufgabe kennen. Dazu erfolgt eine statische Analyse der Aufgaben-HTML-Datei (und ggf. der weiteren Formulare in von dieser direkt oder indirekt erreichbaren Quittungsseiten), die der Aufgabenautor bei der fortgeschrittenen Aufgabenerstellung manuell anstoßen muss (»Teilaufgaben und Felder erzeugen«). Diese Funktion kann natürlich (leider) keine dynamisch von Vorkorrekturmodulen generierten Formulare analysieren! Als Ersatz sind statt dessen statisch Hidden-Fields in ein HTML-Formular einzufügen, eines für jedes Eingabefeld, das in dem vom Vorkorrekturmodul erzeugten Formular vorkommen kann! Dabei müssen diese Hidden-Fields zwar in einem Form-Element stehen, dürfen jedoch nicht im selben Form-Element stehen wie die vom Vorkorrekturmodul erzeugten „echten“ Formularelemente32! In obigem Codeauszug z.B. dürfen diese Hidden Fields nicht im selben form-Element wie die $Vorkorrektur-Variable stehen.

Da die Hidden Fields nur der statischen Codeanalyse zur Aufgabeneinrichtung dienen und ihre Inhalte (typischerweise leere Strings) niemals eingesendet werden sollen, können für diese „Dummy-Felder“ auch einfache, nicht-einsendbare „Dummy-Formulare“ angelegt werden – mit einfachen Form-Tags ohne jegliche Attribute und natürlich ohne Submit-Button im Formular. Falls Sie Embedding verwenden, bietet es sich an, dieses Dummy-Formular auch außerhalb des Embedding-Bereichs einzufügen, so dass es (außer in der Fallback-Darstellung bei fehlgeschlagenem Embedding) auch niemals mit an die Browser der Studenten übertragen wird. (Sobald sich in einer Webseite mit Embedding mehrere Formulare befinden, ist zu beachten, dass diese jeweils vollständig innerhalb oder außerhalb des Embedding-Bereichs liegen müssen, also z.B. das öffnende Form-Tag des auszuliefernden Formulars nicht bereits vor der $EMBED-Marke liegen darf!)

Greifen wir nochmals das obige Codebeispiel auf und nehmen wir an, dass die Ausgabe des Vorkorrekturmoduls dynamisch (abhängig von den Eingaben des Studenten im vorherigen Schritt) entweder ein Formularfeld FeldB1 oder die beiden Formularfelder FeldC1 und FeldC2 (sowie dazu passend einen Submit-Buttons entweder mit Namen einsendenB oder einsendenC) ins Formular einfügt. Dann könnte die Einbindung besagter Hidden-Fields zur Aufgabeneinrichtung in etwa wie folgt aussehen:

$EMBED
<form method="POST" action="$WebAssignServer/$Veranstaltername/Einsendung/$KursNr/$VersionsNr/$AufgabenheftNr/$AufgabenNr">
  …
  $Vorkorrektur
  <!--| Vorkorrektur fügt dynamisch Formularelemente und Submit-Button ein |-->
  …
</form>
$/EMBED
<form> 
  <!-- Aufgabeneinrichtung für ggf. in Vorkorrektur ausgegebene Formularelemente -->
  <input type="hidden" name="FeldB1">
  <input type="hidden" name="FeldC1">
  <input type="hidden" name="FeldC2">
</form>

Teilaufgabeneinsendungen per Ajax

Streng genommen ist es dem Übungssystem egal, ob eine Einsendung zu einer Teilaufgabe ein herkömmlicher Browser-Submit und die Quittungsseite eine „echte“ HTML-Seite ist oder nicht. Statt dessen könnte eine Einsendung auch z.B. als asynchroner sog. Ajax-Request erfolgen (d.h. per JavaScript über ein XMLHttpRequest-Objekt gesendet). Im Browser bliebe dann weiterhin die Aufgabenseite geladen, während der JavaScript-Code im Hintergrund auf die Antwort des Übungssystems wartet. Letztere ist – wie gehabt – die ausgefüllte Quittungsseite, aber diese könnte natürlich auch nur aus einem HTML-Fragment statt einer kompletten HTML-Seite bestehen oder sogar XML-Code enthalten. Das empfangende JavaScript im Aufgabenformular kann die Antwort (Quittung) dann verarbeiten und daraufhin dynamisch das Aufgabenformular modifizieren.

So lange die Quittung nur eine reine Einsendebestätigung darstellt, also die eingesendeten Daten wieder zurücksendet, mag das allein noch wenig nützlich sein, aber in Verbindung mit einem Vorkorrekturmodul, dessen Ausgaben über die Quittungs-Antwort wieder an das JavaScript der Aufgabenseite zurückgegeben werden, sind damit sehr dynamische Aufgabenformulare realisierbar.

Dabei ist jedoch immer im Kopf zu behalten, dass jede Teilaufgaben-Einsendung in erster Linie dazu dient, Eingabe des Studenten zu speichern. Dementsprechend entsteht auch bei einer solchen Ajax-Einsendung ein gewisser Overhead: Die eingesendeten Daten werden zuerst in der Datenbank als Einsendung des Studenten zur Aufgabe gespeichert, bevor das Vorkorrekturmodul ausgeführt wird. Auch dessen Rückgabe wird wiederum in der Datenbank gespeichert, bevor sie in die Quittungsseite eingefügt und so an den aufrufenden Browser gesendet wird.

HTTP-Proxy mit Autorisierungsprüfung

Greifen wir noch einmal das Szenario aus dem vorangehenden Abschnitt auf, nehmen also an, Sie wollen ein dynamisches Aufgabenformular entwickeln, das sich mit Hilfe von Ajax-Requests abhängig von Formulareingaben verändert. Nun seien jedoch die vom externen Server dynamisch zu verarbeitenden Daten rein transienter Natur, so dass weder für die Speicherung der Eingaben noch der berechneten „Vorkorrektur“ ein Bedarf besteht, die oben beschriebene Ajax-Einsendung mit Vorkorrektur also nicht optimal ist.

Nun können Sie natürlich beispielsweise selbst einen kleinen Webservice oder ähnliches entwickeln und Ihren Server direkt ansprechen, statt die Daten über das Übungssystem durchzuschleifen. Das wiederum kann aber auch einige Nachteile haben. So müsste Ihr Server insbesondere öffentlich im Internet erreichbar sein. Setzen Sie dann für diese dynamische Verarbeitung eventuell noch lizenzpflichtige Software ein, die Sie nur FernUni-Studenten zugänglich machen, aber nicht Netz-öffentlich hosten dürfen, dann kommt dieser Ansatz nicht mehr in Frage.

Für derartige Anwendungszwecke bietet das Online-Übungssystem einen speziellen HTTP-Proxy mit zwei wesentlichen Kernfeatures:

Dieser Proxy wird in einem gesonderten Handbuch genauer beschrieben.


  1. Es sind auch Autokorrekturen möglich, die nicht verraten, was der Student genau falsch gemacht hat, sondern z.B. nur die erreichte Punktzahl ausgeben. (Das integrierte Bewertermodul bietet dazu die Wahl, ob neben der Bewertung auch die Lösung verraten werden soll oder nicht.) Darüber hinaus könnte ein (externer) Bewerter ggf. noch Hinweise ähnlich wie im Spiel „Mastermind“ geben, wieviele richtige und wieviele falsche Antworten gegeben wurden.  ↩

  2. HTML = Hypertext Markup Language: Die Sprache, in der Webseiten beschrieben werden.  ↩

  3. Allgemein gilt für diese herkömmliche HTML-Online-Korrektur, dass der Browser in der Lage sein muss, die aktuell geladene Seite in einem Editor zu öffnen, der Editor wiederum in der Lage sein muss, dieselbe Seite ebenfalls (wie der Browser selbst) mit denselben Logindaten über HTTP Basic Authentication zu laden und Änderungen per HTTP-PUT (wieder mit HTTP Basic Authentication) an den Server zurückzusenden. Die Mozilla SeaMonkey-Suite erfüllt diese Voraussetzungen.  ↩

  4. Im Betreuer-Interface, Einsendungs-/Korrekturübersicht unten (derzeit unter der Überschrift „nur in Ausnahmefällen verwendet:“) können Korrekturen-ZIPs für alle oder nur bestimmte Korrekturen erzeugt werden – jedoch nur wenn für den Kurs nicht die Dateibasierte Korrektur (vgl. folgenden Abschnitt) aktiviert ist, in welchem Fall diese Funktion ohnehin nicht benötigt wird.  ↩

  5. Zu finden im Menü der Betreuerstartseite unter »Korrekturzipdateiverwaltung«  ↩

  6. Im Unterschied zu den ZIP-Dateien für den Korrekturassistenten bei herkömmlicher Offline-Korrektur enthält diese ZIP-Datei nur die zu korrigierenden Dateianlagen. Der Korrekturassistent wird für diese Art der Korrektur nicht benötigt.  ↩

  7. Noten können nur bei bestimmten Kursen vergeben werden, deren Aufgaben Prüfungsleistungen statt Einsende- oder Selbstkontrollarbeiten realisieren.  ↩

  8. Bei Online-Korrektur findet der Korrektor in der Korrekturseite neben dem Link zum Download der studentischen Einsendung auch noch einen Downloadlink für das Korrekturformular samt entsprechender Upload-Möglichkeit für das ausgefüllte Formular. Bei Offline-Korrektur rein dateibasierter Korrekturen enthält die heruntergeladene ZIP-Datei neben den von den Studenten eingesendeten Dateien auch für jede studentische Einsendung eine entsprechende Formular-PDF-Datei.  ↩

  9. Bei Online-Korrektur lädt der Korrektor das ausgefüllte Formular wieder über die Korrekturseite einzeln hoch, bei Offline-Korrektur rein dateibasierter Korrekturen packt der Korrektor nach Abschluss der Korrektur alle Dateien (ggf. annotierte studentische Einsendungen sowie ausgefüllte Korrekturformular-PDFs) in eine ZIP-Datei und lädt diese ins Online-Übungssystem hoch.  ↩

  10. Der Terminus „Teilaufgabe“ und der semantische Unterschied zwischen „Frage“ und „Teilaufgabe“ sind möglicherweise anfangs etwas verwirrend. Der Teilaufgaben-Begriff stammt noch aus dem WebAssign-System, aus welchem später das Online-Übungssystem hervorging. Den Begriff der „Frage“ gab es in der Form im WebAssign-System noch nicht. Vielmehr sollte die Untergliederung einer Aufgabe in Teilaufgaben vermutlich als logische und technische Gliederung gleichzeitig dienen – was sich allerdings nicht bewährt hat. Daher brauchte man für die rein logische Gliederung, die von der technischen abweichen kann, einen anderen Namen.  ↩

  11. Ein Aufgabenheft gilt als „abgegeben“, wenn entweder der Einsendeschluss verstrichen ist oder wenn der Student bereits vorher über den optionalen »Heft schließen«-Knopf in der Aufgabenübersicht seine Lösungen endgültig abgibt. Ob Sie diese Möglichkeit überhaupt anbieten wollen, können Sie in den Kursparametern einstellen.  ↩

  12. Zumindest die eigentlichen, zu korrigierenden studentischen Lösungen müssen aus Dateien bestehen, wenn die rein dateibasierte Korrektur verwendet werden soll. Inhalte anderer Formularelemente wie Textfelder wären über eine rein dateibasierte Korrektur nicht vom Korrektor (offline) einsehbar/änderbar. Was Sie dagegen durchaus mit einem Dateiupload kombinieren können, ist eine Element des Typs »Bestätigungsaufforderung« über das ein Student beim Upload eine Bestätigung (z.B. „Ich habe die Aufgaben eigenständig bearbeitet“ abgeben muss.  ↩

  13. Falls Sie semesterabhängige Links zu externen Systemen wie dem LVU verwenden, müssen Sie in jedem nachfolgendem Semester, in dem Sie die Aufgabe wieder anbieten möchten, im Übungssystem den Link von Hand aktualisieren, damit er nicht auf die Aufgabenstellung des vergangenen Semesters verweist. Selbst wenn sich das Aufgaben-PDF im Vergleich zum Vorsemester nicht geändert haben sollte, wäre ein nicht korrigierter Link ein Problem, denn im Normalfall bekommt nur ein Kursbeleger Zugriff auf das Kursmaterial, ein Erstbeleger im aktuellen Semester bekäme also keinen Zugriff auf das Aufgaben-Dokument des vorangehenden Semesters. Wenn Sie die Aufgabendokumente im Übungssystem hosten, kann ein interner Direktlink verwendet werden, der sich beim Duplizieren des Kurses für ein neues Semester automatisch anpasst, also immer auf die Ressourcen des richtigen Semesters verweist. Somit entfällt eine manuelle Link-Anpassung.  ↩

  14. Das Einsenden ist natürlich nur möglich, so lange der Einsendeschluss noch nicht verstrichen ist. Nach Einsendeschluss hat der Student Zugriff aufs Aufgabenformular und kann weiterhin (z.B. zum Abgleich mit einer bereits vorliegenden Korrektur) die Aufgabenstellung einsehen sowie seine Eingaben sehen, aber keine Änderungen mehr einsenden.  ↩

  15. Unterschied: Eine Musterlösungsfreigabe »nur mit Korrektur« erzwingt, dass nur Studenten, die auch etwas eingesendet haben, Zugriff auf die Musterlösung erhalten, sobald auch ihre Korrektur freigegeben wird. »Nicht vor Korrektur« erlaubt auch Studenten ohne aktive Beteiligung den Musterlösungszugriff, sobald alle Korrekturen (der aktiven Teilnehmer) zur Aufgabe freigegeben wurden.  ↩

  16. Auch bei automatischer Korrektur kann dieser Zustand eintreten, nämlich für die Dauer zwischen Einsendeschluss und Heft-Schließen. Ein automatisches Heft-Schließen z.B. findet normalerweise in der Nacht nach dem Einsendeschluss statt. Kursbetreuer können das Heft-Schließen auch manuell sehr kurz nach Einsendeschluss auslösen, um die Wartezeit auf die Korrekturen zu minimieren.  ↩

  17. Zu beachten: Im Online-Übungssystem müssen Aufgabenhefte und Aufgaben innerhalb eines Hefts lückenlos nummeriert sein. Falls Sie nun zu einem Kurs, der noch gar keine Aufgaben und Aufgabenhefte enthält, z.B. eine Datei namens aufgabe3.2.html hochladen, also eine Aufgabenstellung zu Aufgabe 2 aus Heft 3, so werden im Online-Übungssystem drei Aufgabenhefte angelegt und im dritten werden zwei Aufgaben angelegt, wobei die hochgeladene Aufgabenstellung der zweiten Aufgabe zugeordnet wird und die erste Aufgabe noch „leer“ ist.  ↩

  18. Der Text „[leer]“ lässt sich über das data-if-empty-Attribut durch einen beliebigen anderen Text, z.B. „keine Dateieinsendung vorhanden“ austauschen, siehe Das HTML-Formular/Eingabefelder  ↩

  19. Alternativ könnte man statt $IfExistsA2 auch $IfNotEmptyA2 verwenden, um diesen Text nur dann anzuzeigen, wenn wirklich eine nicht-leere Einsendung, in diesem Fall also eine Dateieinsendung vorliegt. Das wird aber nicht empfohlen: Wenn bei leerer Einsendung überhaupt keine Informationen zur vorherigen Einsendung angezeigt werden, kann ein Student nicht mehr sofort erkennen, dass von ihm keine Dateieinsendung vorliegt und er in diesem Feld am besten noch eine Einsendung vornehmen sollte! Insbesondere, falls er schon einmal eine Datei hochgeladen hatte und diese nur versehentlich durch eine leere Einsendung überschrieb, ist es sinnvoll, ihm dies explizit anzuzeigen. (Ohne Anzeige könnte er immer noch der Meinung sein, dass seine Dateieinsendung vorliegt und das lediglich (für beliebige Einsendungen) im Aufgabenformular nicht erkennbar ist.)  ↩

  20. Prinzipiell werden auch mehrere form-Elemente unterstützt, so lange die Formularelemente jeder Teilaufgabe (separat einzusenden) alle im selben form-Element liegen. Falls ein Formular nur eine Teilmenge der Formularfelder einer Teilaufgabe einsendet, verhalten sich die beiden Teile der Teilaufgabe exklusiv: Angenommen eine Teilaufgabe A bestehe aus drei Eingabefeldern FeldA1, FeldA2 und FeldA3, wovon FeldA1 und FeldA2 im selben Formular liegen, FeldA3 jedoch in einem anderen Formular. Dann kann jeder Student nur entweder in den Feldern FeldA1 und FeldA2 etwas einsenden oder in FeldA3, nie in allen dreien! (Jede Einsendung zu FeldA3 im zweiten Formular würde ggf. zuvor über das erste Formular eingesendete Eingaben zu FeldA1 und FeldA2 wieder löschen – und umgekehrt.) Das kann im Ausnahmefall natürlich gewollt sein, z.B. falls ein Student entweder direkt einen Text in ein Textfeld eingeben darf oder eine PDF-Datei einsenden darf. Wichtig bei Verwendung mehr als eines form-Elements in Kombination mit Embedding ($EMBED): Achten Sie in diesem Fall darauf, dass alle Formular-Tags komplett zwischen $EMBED und $/EMBED stehen! (Nur bei genau einem Formular ist das Übungssystem in der Lage, auch die Form-Tags außerhalb des Embed-Berechs zu berücksichtigen.)  ↩

  21. Streng genommen ist der eingesendete Wert, wenn keine Checkbox angekreuzt ist, der leere String! Wird ein (Vor-)korrekturmodul eingesetzt, bekommt dieses entsprechend auch den leeren String als Eingabe zur Korrektur/Bewertung übermittelt. --- ist lediglich der dem Studenten in der Quittung und der Korrekturseite angezeigte Wert, der im Gegensatz zum leeren String sichtbar ist und visualisieren soll, dass eine leere Eingabe erfolgt ist, hier also keine Checkbox angekreuzt wurde.  ↩

  22. Wir empfehlen, diese hier wirkungslose Angabe von data-ignore="empty" dennoch vorzunehmen, denn sie wird im Zweifel wieder wirksam, falls bei einer späteren Überarbeitung der Aufgabe der never-Anteils der Teilaufgabe wegfallen sollte (z.B. durch Ändern der ignore-Einstellung für die Checkboxen, Zuordnen der Checkboxen zu einer anderen technischen Teilaufgabe oder komplettes Entfernen der Checkboxen aus der Aufgabe).  ↩

  23. Tatsächlich muss der Teilaufgaben-Buchstabe nicht unbedingt entfallen, seine Angabe schadet nicht – ist aber unnötige Redundanz und deshalb nicht empfohlen, denn die Teilaufgabe steht ja schon fest. Es ist jedoch im Normalfall nicht möglich, Feld-Variablen von anderen Teilaufgaben in eine Quittung einzubunden, sondern eine Quittung darf nur die eben eingesendeten Daten quittieren und keine, die schon vor der Einsendung gespeichert waren! In quittung1.1.a.html z.B. ist $FeldA1 gleichbedeutend mit $Feld1, während Variablen wie $FeldB1 schlicht entfernt und nicht durch konkrete Werte ersetzt werden. Eine Ausnahme von dieser Regel gibt es jedoch: Im Spezialfall Multi-Step-Submit können tatsächlich auch in Quittungen über Feldvariablen der Art $FeldB1 Einsendungen zu anderen Teilaufgaben mit eingebunden werden, um die in mehreren Schritten über mehrere Teilaufgaben gesammelten Einsendungen in derselben Quittungsseite aufführen zu können.  ↩

  24. Erwarten Sie z.B. von Studenten die Einsendung bestimmter Quelltexte als Textdatei und möchten die Inhalte aber immer in Quittung und Korrektur direkt eingebettet haben, selbst wenn z.B. aufgrund einer dem Browser unbekannten Extension der Content-Type application/octet-stream o.ä. gesendet wird, können Sie dies nutzen (dann vorzugsweise in der P-Variante in einem pre-Element). Allerdings hat das ein paar Haken: Erstens funktioniert bei Dateieinsendungen, die keinen text/*-ContentType haben, die automatische Charset-Erkennung nicht, so dass Sonderzeichen wie Umlaute beim Einbetten fehlerhaft dargestellt werden könnten. Zweitens könnten die Studenten auch Binärdateien einsenden, und das sähe dann ziemlich „hässlich“ aus.  ↩

  25. Ist eine automatische Vorkorrektur ohne Sofort-Feedback gewünscht, kann statt eines Vorkorrekturmoduls ein normales, nach Einsendeschluss ausgeführtes Korrektur-/Bewertermodul gesetzt werden – auch da ist ggf. manuelle Nachkorrektur noch möglich, siehe Korrekturmodus »Automatisch und von Hand«.  ↩

  26. Die Erkennung, ob die Vorkorrektur Plaintext oder HTML-Markup ist, erfolgt nicht durch Analyse des Contents selbst, sondern basiert auf einer Metainformation des Vorkorrekturmoduls selbst: dem zurückgelieferten Content-Type, der entweder text/html oder text/plain lauten muss.  ↩

  27. Es wird jedoch vorausgesetzt, dass ein Teststudent mit der Matrikelnr 7777777 zum Kurs angemeldet ist.  ↩

  28. Dies dient in erster Linie dem nachträglichen Aus-der-Wertung-nehmen von Antwortalternativen, wenn sich die Frage bzw. Antwortalternative z.B. als missverständlich erwiesen hat und man daher niemandem Punkte für diese Alternative abziehen möchte, unabhängig von der Antwort.  ↩

  29. Bei Fragen, zu denen es alternative Lösungen gibt, hängt es von der Art der Statistik ab, ob es sinnvoll bzw. möglich ist, diese Musterlösungen hier zu hinterlegen. Nehmen wir wieder die eingangs gezeigte Multiple-Choice-Frage (X aus 5) als Beispiel: In obiger Beispielabbildung ist genau eine Musterlösung definiert: Die Antworten A, C und E sind korrekt. Nehmen wir nun an, alternativ sei auch die Musterlösung A,C,D korrekt. Für die zweite Statistik der kombinierten Antworten könnten dann problemlos beide Musterlösungen A,C,D als auch A,C,E angegeben werden, beide Antworten würden dann in der Statistik als (vollständig) korrekt markiert. Bei der Statistik der Einzelantworten dagegen könnte man zwar nun sowohl A, C, D als auch E als korrekte Antworten hinterlegen, aber dann würden laut der Statistik-Ausgabe alle diese vier Antworten als korrekte und lediglich B als falsche Antworten markiert, der Zusammenhang aber, dass nur bestimmte Kombinationen zusammen als korrekt gelten (also nicht die Nennung von D und E zusammen) ginge dabei verloren. Es ist in diesem Fall vielleicht ein wenig Geschmacksache, ob man diese Anzeige dann überhaupt noch wünscht oder bei der Statistik lieber auf die Markierung der korrekten und falschen Antworten ganz verzichtet. Der Aufgabenerstellungsassistent jedenfalls wird für X-aus-N-Aufgaben nur dann eine Musterlösung zur Einzelantwort-Statistik hinterlegen, wenn diese eindeutig ist.  ↩

  30. Sie können nur entweder muster- oder musterintervall-Elemente zu einer statistik angeben, beide sind nicht kombinierbar.  ↩

  31. Zu Beachten ist bei Erstellung des Vorkorrekturmoduls in diesem Fall, dass es seine produzierte Textausgabe als HTML (Content-Type: text/html) und nicht als Plain-Text (Content-Type text/plain) kennzeichnet.  ↩

  32. Angenommen, Ihr Vorkorrekturmodul soll unter gewissen Bedingungen dynamisch ein Formularfeld namens FeldC1 in das Aufgabenformular einfügen und zur Vorbereitung der Datenbank fügen Sie in dasselbe Formular noch <input type="hidden" name="FeldC1"> ein. Was passiert dann beim Submit? Falls das Vorkorrekturmodul sich gegen ein Einfügen des Formularfelds entschieden hat, wird dennoch eine (leere) Einsendung zum FeldC1 vorgenommen. Hat das Vorkorrekturmodul dagegen ein Input-Element namens FeldC1 eingefügt und der Student darin z.B. den Text Hello World eingegeben, so werden die Inhalte beider gleichnamiger Felder (leerer String aus Hidden Field sowie Hello World aus dynamisch eingefügtem Textfeld) eingesendet und vom Übungssystem durch Komma aufgezählt, d.h. die Einsendung lautet am Ende ,Hello World (oder Hello World,, je nach Reihenfolge der Formularelemente). Um diese Effekte zu vermeiden, darf also das Hidden Field nicht im selben Formular stehen.  ↩