====== 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". {{:howto:git:grading:classroom_moodle_user.png?400|}} ===== Aufgabe erstellen ===== ==== Vorlage-Repository für die Aufgabe ==== - Öffne das Repositry [[https://github.com/BZZ-Commons/python-template]]. - Erstelle eine Kopie des Repositorys um alle benötigten Dateien zu erhalten: * ''.github/workflows/autograding.yml'' * ''.github/autograding/unittest.json'' * ''.github/autograding/lint.json'' - Markiere im Menu "Settings" das Repository als Template. - Passe die Konfigurationen für Unittests und Linter an. === autograding.yml === TODO === unittest.json === TODO === lint.json === TODO ==== GitHub Classroom Assignment ==== - 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 ==== - Erstelle eine neue Aktivität im Moodle-Kurs. Wähle "External Assignment" als Art der Aktivität. - 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. * unittest.json: Test-Funktionen und Bewertung für die Unittests * lint.json: Konfiguration des Linters. ==== 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. - Checkout des Repositories des Lernenden - Checkout des Repositories [[https://github.com/BZZ-Commons/pygrader]] mit den Skripts für pytest und pylint. - Ausführen der Tests - Ü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.