Automatisierte Programmierwettbewerbs-Plattform mit Bestenliste

Automatisiert Programmierwettbewerbe für Studierende mit GitLab CI/CD und einer transparenten Bestenliste auf GitLab Pages, um das Engagement zu steigern und sofortiges Feedback zu geben.

Idea
Plan
Prototype
Pilot
Live

Übersicht

Mehrwert: Automatisiert Programmierwettbewerbe für Studierende mit GitLab CI/CD und einer transparenten Bestenliste auf GitLab Pages, um das Engagement zu steigern und sofortiges Feedback zu geben.

Problem: Die Durchführung fairer, skalierbarer Wettbewerbe mit konsistenter, reproduzierbarer Bewertung ist zeitaufwändig und fehleranfällig, wenn sie manuell erfolgt. Studierenden fehlt es an sofortigem Feedback und Motivation, und Lehrende verbringen viel Zeit mit Benotung, Koordination und der Bekanntgabe von Ergebnissen.

Lösung: Jede*r Studierende reicht in ein privates Repository ein. CI/CD führt Tests aus, bewertet Lösungen und schreibt eine Benchmark-Datei (JSON/CSV). Artefakte werden aufbewahrt und eine statische Bestenliste wird erstellt und über GitLab Pages veröffentlicht, was transparente Rankings ermöglicht, während die Privatsphäre geschützt und Fristen durchgesetzt werden.

Wer profitiert

Primär

  • Studierende (BSc/MSc)
    • Sofortiges Feedback zu Einreichungen
    • Transparente Rangliste und Fortschritt über die Zeit
    • Motivation durch Wettbewerbsmechanik
    • Übung mit Git- und CI-Workflows

Sekundär

  • Lehrende, Betreuer*innen, Systemadministrator*innen
    • Automatisierte, reproduzierbare Bewertung im großen Maßstab
    • Zentrale Aufsicht über alle Repositories
    • Audit-Trail über Artefakte und Pipelines
    • Einfachere Kommunikation über Issues und Meilensteine

Wann geeignet

  • Kurse oder Labore mit Programmieraufgaben und objektiven Tests
  • Hackathons oder Übungswettbewerbe mit 50–200 Teilnehmer*innen
  • Aufgaben mit deterministischen, automatisierten Bewertungskriterien

Wann nicht geeignet

  • Aufgaben, die subjektive oder manuelle Bewertung erfordern
  • Aufgaben ohne zuverlässige automatisierte Tests oder Datensätze
  • Situationen, die externe Zusammenarbeit während des Wettbewerbs erfordern

Prozess

  1. Vorbereiten der Aufgabenvorlage, Tests und Bewertungsregeln
  2. Bereitstellung privater Studierenden-Repositories aus der Vorlage
  3. Studierende implementieren Lösungen und pushen zu GitLab
  4. CI/CD führt Tests aus, generiert Benchmark-JSON/CSV, lädt Artefakte hoch
  5. Pipeline aktualisiert eine statische Bestenliste (GitLab Pages)
  6. Abschluss des Wettbewerbs, Veröffentlichung der Endergebnisse, Archivierung der Repositories

Voraussetzungen

Personen

  • Projektleitung / Dozent*in
  • Tutor*innen / Betreuer*innen
  • Systemadministrator*in (GitLab/Runner/Pages)
  • Studierende

Daten-Inputs

  • Testdatensätze und Fixtures
  • Bewertungsskripte und Benotungsregeln
  • Kursliste für die Repository-Bereitstellung
  • Metadaten für die Bestenliste (z. B. Tie-Breaker)

Tools & Systeme

  • Git und GitLab
  • GitLab CI/CD mit Docker-basiertem Runner (Isolation pro Job)
  • Python- und/oder Java-Toolchains (aufgabenabhängig)
  • JSON/CSV-Parser und Skripte zur Generierung der Bestenliste
  • GitLab Pages für statische Bestenliste
  • E-Mail- oder Webhook-Benachrichtigungen bei Einreichung und Bewertung

Richtlinien & Compliance

  • Datenschutz und Anonymisierung für veröffentlichte Ergebnisse
  • Prüfungsrichtlinien und Fristendurchsetzung
  • Repository-Aufbewahrung und Archivierung (1 Jahr nach Wettbewerb)
  • Geschützte Branches zur Verhinderung verspäteter Commits

Risiken & Gegenmaßnahmen

  • Betrug oder Absprachen zwischen Teilnehmer*innen

    • Private Repositories pro Studierendem/Studierender
    • Plagiatsprüfungen und randomisierte Tests
  • Instabile oder unzuverlässige Tests, die zu unfairen Ergebnissen führen

    • Deterministische Testumgebung und Seed-Kontrolle
    • Klare Dokumentation der Bewertung und Umgebung
  • Erschöpfung der Runner-Ressourcen und lange Warteschlangen

    • Timeouts pro Job und Ressourcenlimits
    • Autoscaling oder dedizierte Runner für den Kurs
  • Datenschutzprobleme auf der Bestenliste

    • Anonymisierung mit pseudonymen IDs
    • Veröffentlichung nur aggregierter Metriken

Erste Schritte

Voraussetzungen: Zugriff auf GitLab-Gruppe, ein Docker-basierter GitLab Runner und ein GitLab Pages-Projekt oder eine Domain. CI/CD ist derzeit nicht eingerichtet (Planungsphase).

  1. Erstellen eines Vorlagen-Repositories mit Aufgabenbeschreibung, Tests und .gitlab-ci.yml, die ein Benchmark-JSON/CSV ausgibt und als Artefakt speichert
  2. Bereitstellung privater Repositories für jede*n Studierende*n aus der Vorlage; Gewährung von Zugriff für Dozent*in/Tutor*in
  3. Konfigurieren eines Jobs oder Begleitprojekts zum Erstellen und Veröffentlichen einer statischen Bestenliste auf GitLab Pages aus dem neuesten Artefakt
  4. Bekanntgabe von Fristen über Meilensteine; Bearbeitung von Fragen und Vorfällen über Issues
  5. Nach dem Wettbewerb: Veröffentlichung der Endergebnisse, Sammeln von Feedback und Archivierung der Repositories für ein Jahr

FAQ

Können wir mehrere Sprachen unterstützen (z. B. Python und Java)?

Ja. Verwenden Sie sprachspezifische Docker-Images und aufgabenspezifische CI-Jobs, um Tests in isolierten Umgebungen auszuführen.

Wie setzen wir Fristen durch und verhindern verspätete Commits?

Verwenden Sie geschützte Branches, markieren Sie die Frist in Meilensteinen und konfigurieren Sie Pipelines so, dass verspätete Einreichungen abgelehnt werden.

Wie können wir die Bestenliste anonymisieren?

Veröffentlichen Sie pseudonyme Identifikatoren und vermeiden Sie das Speichern von persönlich identifizierbaren Informationen in Artefakten.

Was ist, wenn wir Moodle integrieren müssen?

Fügen Sie optional Webhooks hinzu oder exportieren Sie Noten aus dem Benchmark in CSV für den Import in Moodle.

Glossar

Benchmark-Datei
Strukturiertes JSON/CSV, das von CI mit pro-Einreichung-Metriken geschrieben wird, die zur Berechnung von Rankings verwendet werden.
Artefakt
Dateien, die von einem CI-Job produziert und von GitLab zum Download oder für weitere Jobs aufbewahrt werden.
Bestenliste
Statische Seite auf GitLab Pages, die aktuelle Rankings und Metriken anzeigt.