YAPEX

Yet Another Practical EXercise Platform
YAPEX is a system for programming language independent, automatic testing and assessment of exercises

Projektziele

Erleichtern von Übungen

Die Lösungen der Nutzer sollen erfasst und gespeichert werden. Es soll in kurzer Zeit möglich sein, grob zu entscheiden, ob der Nutzer die Aufgabe erfolgreich bearbeitet hat. Idealerweise arbeiten alle Nutzer auf dem gleichen System, damit sich die Programme immer gleich verhalten. Um Papier zu sparen und ein besseres Arbeiten zu ermöglich, sollte die Plattform alle nötigen Funktionen zum lösen der Aufgabe bieten (Aufgabe anzeigen, Editor, Testen, begrenzte Bearbeitungszeit).

Plattform zum Üben für Nutzer

Nutzer sollen auf der Plattform im Browser die Aufgaben lösen können. Zum Üben sollen den Nutzern freie Aufgaben zur verfügung gestellt werden. Um Aufgaben weiter zu vertiefen sollen Nutzer auch eigene Aufgaben/Projekte erstellen können. Wurde die Aufgabe in der Übung nicht rechtzeitig oder nicht erfolgreich abgeschlossen, sollen Nutzer auch nachträglich die Aufgabe noch bearbeiten und lösen können.

Webbasierte Plattform

Die Plattform soll auf nahezu jedem Computer laufen, ohne aufwendige Installation. Perspektivisch soll die Plattform oder Teile davon mit anderen Systemen zusammenarbeiten. In diesem Zusammenhang soll die Plattform (z.B. frü Prüfungen) in einem Kiosk Modus laufen können.

Benutzerfreundlich / Modern

Die Plattform sollte benutzerfreundlich sein und visuell ansprechend. Für gute Wartbarkeit sollte auf moderne, aber gleichzeitig auch weit verbreitete Technologien gesetzt werden.

Key Features

Aufgabenstellung in Markdown / PDF / Text

Markdown
  • Syntax highlighting in fenced code blocks (```java )
  • Zeilennummern in fenced code blocks
  • Button zum Kopieren von fenced code blocks
  • Mathe Formeln
PDF
  • Fertige PDFs als Aufgabenstellung verwenden
  • Zoomen, Drucken, ... alle PDF Funktionen, die der Browser unterstützt
Text
  • Keine schnörkel oder Code, einfach nur Text

Dateien Vorgeben (Templates)

Bei vielen Aufgabenstellungen will man Nutzern schon Code vorgeben (Boilerplate Code) z.B. die Hauptklasse oder Helper um Dateien einzulesen. Templates können schreibgeschützt eingestellt werden und so als Testdateien verwendet werden. Z.B. kann damit bei Java per Reflektion bestimmte Eigenschaften getestet werden. Wenn Testdateien komplex werden und die Nutzer abschrecken könnten, kann der Inhalt dder Datei auch versteckt und nur beim Ausführen eingebunden werden.

Aufgaben freigeben

Aufgaben können mehrfach freigegeben werden, z.B. kann für jede Übung eine Separate Freigabe erstellt werden. Die Lösungen zu den Freigaben werdedn dann entsprechend einzeln aufgelistet. Freigaben können automatisch oder manuell freigegeben werden, die Bearbeitungszeit kann ebenfalls eingeschränkt werden.

Aufgabe nachträglich lösen

Nach Ablauf der Freigabe bzw. der Bearbeitungszeit können Nutzer eine Kopie ihrere Lösung bearbeiten und so die Aufgaben zuhause noch lösen.

Tests

Black Box Tests
  • Konsolenparameter, Eingaben-/Ausgabe, Ausgabe als Regex prüfen
  • Rückgabewerte/Exit Code?? des Programms testen
  • Erstellte Dateien des Nutzerprogramms vergleichen
  • Dateien automatisch ins Testverzeichnis kopieren lassen
  • ??Funktionieren mit allen aktuellen und zukünftigen Sprachen, da sprachunabhängig??
Regex Tests
  • Einen oder mehrere Regex gegen Dateien ausführen
Versteckte Tests
  • Normale Tests können von den Nutzern immer ausgeführt werden
  • Versteckte Tests werden den Nutzern nicht angezeigt, erst nach Ende der Freigabe
  • Normale und versteckte Tests können nach Ende der Freigabe automatisch ausgeführt werden

Noch umzusetzen / gewünschte Erweiterungen

Gruppen beim Lösen von Aufgaben

Aufgaben können aktuell nur von einem Nutzern allein gelöst werden. In einigen Modulen/Veranstaltungen?? sind die Aufgaben aber optional in Gruppen zu lösen. Dazu sollte es den Nutzern auch ermöglicht werden, kollaborativ zu arbeiten.

Tests

Tests für das Frontend und das Backend. Im Frontend würde sich Testcafe oder Cypress anbieten, im Backend Unit Tests.

Kleinere Features

Es gibt noch viele kleine Features, welche noch auf eine Umsetzung warten.

Timeline/Ereignisse

Heute

SS 2019

Eingesetzt in den Übungen im Modul Datenstrukturen und effiziente Algorithmen an der MLU

2019

WS 2018

Probeklausur mit ILIAS und YAPEX

WS 2018

Eingesetzt in den Übungen im Modul Objektorientierte Programmierung an der MLU

2018

WS 2017

Probeklausur mit ILIAS und YAPEX

WS 2017

Eingesetzt in den Übungen im Modul Objektorientierte Programmierung an der MLU

SS 2017

Oberfläche komplett überarbeitet

2017

WS 2016

Eingesetzt in den Übungen im Modul Objektorientierte Programmierung an der MLU

WS 2016

Erstellt im Zuge der Bachelorarbeit von Janis Dähne

2016

Ein paar Zahlen/Statistik

669
Registrierte Nutzer
150
Erstellte Aufgaben
33
Aufgaben zum freien Üben
321
Freigaben
12 627
Lösungen von Nutzern
45
Projekte von Nutzern

Das Team/Ansprechpartner

Janis Dähne
initial idea, initiator, programming
Steffen Schiele
initiator, testing, feature ideas
Annett Thüring
initiator, testing, feature ideas