Ausrichtung eines Programmierwettbewerbs für Studierende

Dieser Anwendungsfall ermöglicht es Hochschulen, Programmierwettbewerbe mithilfe einer skalierbaren und automatisierten Plattform auszurichten. Er bietet Studierenden eine praktische Möglichkeit, ihre Programmierkenntnisse zu verbessern, während der Bewertungsprozess für Dozierende optimiert wird.

Idea
Plan
Prototype
Pilot
Live

Übersicht

Mehrwert: Dieser Anwendungsfall ermöglicht es Hochschulen, Programmierwettbewerbe mithilfe einer skalierbaren und automatisierten Plattform auszurichten. Er bietet Studierenden eine praktische Möglichkeit, ihre Programmierkenntnisse zu verbessern, während der Bewertungsprozess für Dozierende optimiert wird.

Problem: Die manuelle Organisation und Auswertung eines Programmierwettbewerbs ist arbeitsintensiv und fehleranfällig. Es erfordert erheblichen Aufwand, Aufgaben vorzubereiten, Einreichungen zu verwalten und einer großen Anzahl von Teilnehmenden zeitnahes Feedback zu geben.

Lösung: Nutzung einer zentralen GitLab-Instanz mit CI/CD-Pipelines zur Automatisierung des gesamten Wettbewerbsablaufs. Ein dediziertes Tool, das 'Contest-Framework', wird verwendet, um Aufgaben zu verwalten, Einreichungen automatisch zu testen und ein Live-Leaderboard zu berechnen, was sowohl für Teilnehmende als auch für Organisator*innen eine nahtlose Erfahrung bietet.

Wer profitiert

Primär

  • Studierende
    • Üben und Verbessern von Programmierkenntnissen in einem wettbewerbsorientierten Umfeld.
    • Erhalt von sofortigem Feedback zu ihren Lösungen.
    • Teilnahme an einer unterhaltsamen und motivierenden Lernerfahrung.

Sekundär

  • Dozierende / Organisator*innen
    • Automatisierte Bewertung und Punktevergabe, was erhebliche Zeit spart.
    • Skalierbare Plattform zur Bewältigung einer großen Anzahl von Teilnehmenden.
    • Einfache Verwaltung von Wettbewerbsaufgaben und Einreichungen.

Wann geeignet

  • Für die Ausrichtung von Programmierwettbewerben als Teil eines Kurses oder als außerschulische Veranstaltung.
  • Wenn Sie das Testen und Bewerten von Code-Einreichungen vieler Teilnehmender automatisieren müssen.

Wann nicht geeignet

  • Für kollaborative Projekte oder Aufgaben, die nicht in ein wettbewerbsorientiertes, zeitbasiertes Format passen.

Prozess

  1. 1. Organisator*innen bereiten die Wettbewerbsaufgaben vor und laden sie in ein zentrales GitLab-Repository hoch.
  2. 2. Das Contest-Framework-Tool wird eingerichtet, um den Wettbewerb zu verwalten, einschließlich Zeitplan und Leaderboard.
  3. 3. Studierende registrieren sich und erhalten Zugriff auf ein persönliches GitLab-Repository zum Einreichen ihrer Lösungen.
  4. 4. Wenn ein*e Student*in Code pusht, kompiliert und testet eine CI/CD-Pipeline diesen automatisch gegen vordefinierte Testfälle.
  5. 5. Die Pipeline meldet die Ergebnisse an den/die Student*in zurück und aktualisiert das zentrale Leaderboard.
  6. 6. Nach dem Wettbewerb werden die Ergebnisse finalisiert und können für die Benotung oder Preisvergabe verwendet werden.

Voraussetzungen

Personen

  • Organisator*innen (Dozierende, wissenschaftliche Hilfskräfte) zur Vorbereitung von Aufgaben und Verwaltung der Veranstaltung.
  • Teilnehmende (Studierende) mit Grundkenntnissen in Git.

Daten-Inputs

  • Wettbewerbsaufgaben, einschließlich Problembeschreibungen und Testfällen.
  • Code-Einreichungen der Studierenden.

Tools & Systeme

  • Eine GitLab-Instanz mit CI/CD-Funktionen.
  • Das 'Contest-Framework'-Tool für das Wettbewerbsmanagement.
  • Ein Server zum Hosten des Leaderboards.

Richtlinien & Compliance

  • Teilnehmende benötigen individuelle Konten auf der GitLab-Instanz.
  • Klare Regeln und Richtlinien für den Wettbewerb müssen allen Teilnehmenden zur Verfügung gestellt werden.

Risiken & Gegenmaßnahmen

  • Die automatisierte Test-Pipeline (CI/CD) könnte unter hoher Last ausfallen oder verzögert werden.

    • Verwendung skalierbarer GitLab Runner mit ausreichender Kapazität.
    • Durchführung eines Probelaufs vor der Hauptveranstaltung, um potenzielle Engpässe zu identifizieren und zu beheben.
  • Studierende könnten Schwierigkeiten mit Git haben, was zu Problemen bei der Einreichung führen kann.

    • Bereitstellung eines kurzen Tutorials oder Schnellstart-Leitfadens zu den notwendigen Git-Befehlen.
    • Angebot von Support über einen dedizierten Chat-Kanal während des Wettbewerbs.

Erste Schritte

Um Ihren eigenen Programmierwettbewerb auszurichten, benötigen Sie Zugriff auf eine GitLab-Instanz und das 'Contest-Framework'-Tool. Teilnehmende sollten ein grundlegendes Verständnis von Git haben.

  1. Richten Sie das Contest-Framework ein und bereiten Sie Ihre Wettbewerbsaufgaben in einem GitLab-Repository vor.
  2. Führen Sie das Onboarding der Teilnehmenden durch und stellen Sie sicher, dass sie Zugriff auf ihre individuellen Repositories haben.
  3. Starten Sie den Wettbewerb und überwachen Sie die automatisierte Bewertung und das Leaderboard.

FAQ

Welche Programmiersprachen werden unterstützt?

Die unterstützten Sprachen hängen von der Konfiguration der CI/CD-Pipeline ab. Typischerweise werden gängige Sprachen wie C++, Java und Python unterstützt.

Wie wird Betrug verhindert?

Während die Plattform nicht alle Formen von Betrug verhindern kann, ist die Durchführung automatisierter Plagiatsprüfungen bei Einreichungen nach dem Wettbewerb eine gängige Praxis. Die individuelle, zeitgebundene Natur der Veranstaltung entmutigt zudem die Zusammenarbeit.

Glossar

Contest-Framework
Ein spezialisiertes Tool, das zur Organisation und Verwaltung des Programmierwettbewerbs verwendet wird, einschließlich Aufgabenmanagement und Leaderboard-Generierung.
CI/CD-Pipeline
Ein automatisierter Prozess, der Code-Einreichungen von Studierenden jedes Mal kompiliert, testet und bewertet, wenn sie in das Repository gepusht werden.