YAPEX

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

Projektziele

Unterstützung des Lernprozesses bei Programmieraufgaben

Programmieren erfordert eine Fülle an kognitiven Prozessen und gerade Programmieranfänger können schnell überfordert werden. Das Projekt YAPEX verfolgt mehrere Ziele: Einerseits sollen unnötige Hürden beseitigt oder reduziert werden, andererseits soll der Lernprozess durch automatisierte und zeitnahe Rückmeldungen begleitet und unterstützt werden.

Reduzierung der kognitiven Belastung

Die Nutzung von YAPEX erfolgt mit einem Internetbrowser ohne zusätzlichen Installationsaufwand oder größeren Ressourcenbedarf. Darüber hinaus wird das Ziel verfolgt die Nutzeroberfläche funktional zu halten und diese zugleich auf das Wesentliche zu beschränken. Zu bearbeitende Aufgabe, ein entsprechender Editor mit Syntax-Highlighting und Ergebnisse des Compilers/ Interpreters sowie Ausgaben verschiedener Testfällen müssen übersichtlich in einem Fenster angezeigt werden, so dass ein nahtloses Bearbeiten der sich ergebenden Teilaufgaben möglich ist.

Automatisierte Rückmeldungen

Zeitnahe Rückmeldungen zu einzelnen (Teil)Lösungen sind ein wichtiger Bestandteil der Unterstützung des Lernprozesses, da dieser dadurch angepasst bzw. hinterfragt werden kann. Als hoch angesetztes Ziel soll mittels YAPEX automatisiert Feedback und Hinweise gegeben werden können, um Fehler oder potenzielle Fehler aufzudecken sowie entsprechende Hinweise und Tipps dem Nutzer zur Verfügung zu stellen. Auch das schrittweise nachvollziehen des Programmablaufes soll ermöglicht 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
  • 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

Geplante Erweiterungen

Kollaboratives Arbeiten

Aufgaben werden aktuell nur von einem Nutzern allein gelöst. Wünschenswert wäre es, wenn Aufgaben auch durch eine Gruppe bearbeitet werden können. Die Ausgestaltung des kollaborativen Arbeitens kann bis zum zeitgleichen Bearbeiten der gleichen Datei führen und erfordert auch mindestens einen weiteren Kommunikationskanal.

Debugger

Momentan können Testfälle zum Testen der Programm verwendet werden. Hilfreich wäre außerdem die Integration eines Debuggers, welcher alle aktuellen Belegungen sämtlicher Variablen anzeigen könnte.

YAPEX Interna

Neben der Funktionalität von YAPEX soll diese Lernplattform auch selbst verbessert werden. Ob unschöne Versionsabhängigkeiten oder das Fehlen von automatischen Tests beim Einchecken von neuem Code - es gibt immer viel zu tun.

Kleinere Features

Natürlich gibt es viele kleinere Verbesserungsvorschläge und Ideen YAPEX noch besser zu gestalten, welche zum größten Teil in unserem Gitlab unter Issues bzw. Tickets festgehalten sind und auf eine Umsetzung warten.

Timeline

Heute

Ws 2022

Online Open Book Klausur

Ws 2022

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

2022

Ws 2021

Elektronische Klausur / Online Open Book Klausur

Ws 2021

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

2021

Ws 2020

Elektronische Klausur

Ws 2020

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

2020

Ws 2019

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

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

Das Team

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