Automatisierte Bewertung (ab August 2024)

Eine Kombination von Worksflows, Skripts und eines Moodle-Plugins ermöglicht das automatisierte Bewerten von Aufgaben.

Voraussetzungen

GitHub Benutzername im Moodle-Profil

Die Lernenden müssen Ihren GitHub-Benutzernamen in ihrem Moodle-Profil eintragen. Unter “GitHub Classroom” befindet sich das Feld “GitHub Benutzername”.

Aufgabe erstellen

Vorlage-Repository für die Aufgabe

  1. Erstelle eine Kopie des Repositorys um alle benötigten Dateien zu erhalten:
    • .github/workflows/autograding.yml
    • .github/autograding/unittest.json
    • .github/autograding/lint.json
  2. Markiere im Menu “Settings” das Repository als Template.
  3. Passe die Konfigurationen für Unittests und Linter an.

autograding.yml

TODO

unittest.json

TODO

lint.json

TODO

GitHub Classroom Assignment

  1. Erstelle ein neues Assignment in GitHub Classroom.
    • Der Name des Assignments wird in Kleinbuchstaben und mit Bindestrichen geschrieben, z.B. m111-lu01-a02-exercise
    • Wähle das Vorlage-Repository aus dem letzten Abschnitt aus.

Moodle-Aufgabe

  1. Erstelle eine neue Aktivität im Moodle-Kurs. Wähle “External Assignment” als Art der Aktivität.
  2. Trage die Angaben zum Classroom Assignment ein:
    • Name: Der Name des Assignments, z.B. m111-lu01-a02-exercise
    • URL: Die URL zum Akzeptieren des Assignments für die Lernenden.
    • Punkte
      • Automatische Bewertung: Maximalpunkte aus den automatisierten Tests.
      • Manuelle Bewertung: Maximalpunkte für allfällige manuelle Bewertungen.
      • Bestehensgrenze: Wieviel Prozent der maximalen Punkte (automatisch + manuell) muss ein Lernender erreichen, dass die Aufgabe als erfüllt gewertet wird.

Die Punktzahl aus dem Workflow wird anhand der Angabe in “Automatische Bewertung” skaliert.

Beispiel

  • Bewertung aus dem Workflow: 12 von 20 Punkten
  • Maximum automatische Bewertung in Moodle: 100 Punkte
  • Resultat: 60 Punkte (12 * 100 / 20)

Technische Dokumentation

Vorlage-Repository für die Aufgabe

.github/workflows/autograding.yml

Dieser Workflow steuert die automatisierte Verarbeitung bei jedem Push des Repositories. Er ruft den Workflow in https://github.com/BZZ-Commons/workflows/blob/main/.github/workflows/pygrader.yml auf.

.github/autograding

In diesem Ordner befinden sich die Konfigurationsdateien für die Bewertung.

BZZ-Commons/workflows

py_autograding.yml

Dieser Workflow führt die Skripts zum Prüfen des Python-Sourcecodes aus, den der Lernende auf GitHub gepushed hat.

  1. Checkout des Repositories des Lernenden
  2. Checkout des Repositories https://github.com/BZZ-Commons/pygrader mit den Skripts für pytest und pylint.
  3. Ausführen der Tests
  4. Übermitteln der Resultate an Moodle.

BZZ-Commons/pygrader

Dieses Repository enthält die Skripts um pytest und pylint auszuführen. Die Skripts lesen die Konfigurationsdateien “unittest.json” und “lint.json” aus dem Repository des Lernenden.