Programmiermethoden-CampusMinden / Deploy-to-Grading

"Deploy-to-Grading" is a toolchain for automated analysis and grading of programming tasks.
Creative Commons Attribution Share Alike 4.0 International
3 stars 1 forks source link

[D2G] Sammlung an Auto Grading Tools #12

Closed AKirsch1 closed 1 year ago

AKirsch1 commented 1 year ago

Unvollständige Liste an Inspirationen für D2G:

Weitere siehe hier und hier.

AKirsch1 commented 1 year ago

JGrade

JGrade ist ein Plugin für Gradescope Autograders, kann aber auch unabhängig davon genutzt werden. Seit drei Jahren wird das Original-Repo nicht mehr fortgeführt.

Grundsätzlich ist JGrade zum Benoten von Java-Code gedacht und nutzt dafür primär JUnit-Tests, die alle eine unterschiedliche Anzahl an Punkten geben können. Zusätzlich wird noch Checkstyle genutzt und es bietet eine Schnittstelle für CLI-Tests. @cagix Gibt es/Stellt ihr Aufgaben, in denen Studierende CLI-Anwendungen programmieren müssen?

Die Ausgabe der Ergebnisse ist entweder im JSON-Format oder für Gradescope Autograders möglich.

Unabhängig von JGrade selbst gibt es in dem oben verlinkten Repo, in dem das Projekt fortgeführt wird, ein YT-Video, in dem deren Umsetzung der Bewertung und Aufbau der Ordnerstruktur beschrieben wird:

Erstmal vorweg, wirklich optimal finde ich die nicht. Folgendermaßen ist die Ordnerstruktur aufgebaut:

src/main/java
-- staff                        Sammelordner für irgendwie alles, was nicht von Studierenden kommt
-- -- hello                             
-- -- -- GradeHello.java        JGrade-spezifische Klasse, die die Tests anstößt
-- -- -- Greeting.java          Interface, das von beiden Hello-Klassen implementiert wird
-- -- -- Hello.java             Beispielimplementierung/Lösung
-- -- -- HelloTest.java         Klasse mit Tests im JGrade-Format (siehe Anmerkung 1)
-- student
-- -- hello
-- -- -- Hello.java             Lösung von Studis. Ist bei denen schon vorhanden (mit TODOS)

Anmerkung 1: Nutzen hier einen bool, um zwischen Grading der Beispiellösung und der Studierendenlösung zu wechseln.

Des Weiteren interessant ist in dem Video, wie "Log"-Tests durchgeführt werden. So wird über System.setOut ein anderer Out-Stream gesetzt. Damit könnte man zum Beispiel dieses hier gut testen.

AKirsch1 commented 1 year ago

Code FREAK

Code FREAK ist eine Online Plattform, auf der Studierenden Aufgaben gestellt werden können, die direkt auf der Online-Plattform bearbeitet und evaluiert werden. Die Plattform spuckt KEINE finale Note aus.

Die Dokumentation bleibt sehr wage, womit Code FREAK alles verwendet werden kann, da es sehr offen gestaltet ist. Im Grunde stößt es Tools wie JUnit über Docker an und stellt dessen Ergebnisse schön formatiert dar. Als Beispiele, welche Tools genutzt werden können, werden JUnit, Checkstyle, pytest und pylint genannt. Verallgemeinert zählen sie Unit-Tests, Static Code Analysis und Linting auf.

Assignments werden in einer codefreak.yml definiert. Die Definition erinnert stark an die Cmd GitHub Actions.

Ansonsten gibt es meiner Meinung nach nichts mehr, was für uns relevant sein könnte.