Skip to content
Snippets Groups Projects
Forked from bwinf / JWINF Aufgaben public
Loading

Öffentliche Aufgaben für die Wettbewerbsplattfom jwinf.de

Dieses Repository enthält die öffentlichen Aufgaben für die Programmierwettbewerbsseite jwinf.de.

Dieses Repository ist im BWINF Gitlab und auf Github erreichbar.

Pull-Requests / Merge-Requests zum Hinzufügen eigener Aufgaben sind möglich und erwünscht!

  • Trainingsaufgaben die als Vorlage für eigene Aufgaben fungieren können finden sich unter training/.
  • Minimale Beispiele für Aufgabensammlungen und einzelne Aufgaben finden sich unter beispiel/.
  • Eigene Aufgaben und Aufgabensammlungen können unter user/ angelegt werden.

Für Fragen kann im Gitlab ein Ticket oder auf Github ein Issue angelegt werden

Inhalt

Struktur einer einzelnen Aufgabe

Eine Aufgabe besteht üblicherweise aus drei Dateien:

  • index.html für die Texte der Aufgaben
  • task.js für die Aufgabenlogik
  • task.yaml für Metadaten

zusätzlich können noch weitere Dateien, wie z. B. Bilder zu einer Aufgabe gehören.

task.yaml

Eine task.yaml für eine Aufgabe kann z. B. so aussehen

standalone: true

name: "Name der Aufgabe"
secret: apfel

languages:
  - blockly
  • standalone: true muss gesetzt werden.
  • name: setzt den Namen der Aufgabe.
  • secret: apfel vergibt ein Wettbewerbspasswort mit dem die Aufgabe auf jwinf.de gefunden werden kann.
  • languages: gibt die Liste der Programmiersprachen für die Aufgabe an. Mögliche Werte sind blockly und python.

Beispiel

Unter beispiel/Turtle-Aufgabe_einzeln findet sich ein Beispiel für eine einzelne Aufgabe mit einer task.yaml.

Struktur einer Aufgabesammlung

Es können mehrere Aufgaben zu einer Aufgabensammlung ('contest') zusammengefasst werden. Die einzelnen Aufgaben brauchen dann keine task.yaml (aber sie schadet auch nicht).

Eine Aufgabensammlung besteht aus einer contest.yaml, die mehrere Augaben zusammenfasst.

contest.yaml

Eine contest.yaml kann einen beliebigen Namen haben, muss aber auf .yaml enden und darf nicht task.yaml heißen.

Sie kann z. B. so aussehen

category: public

name: "Name des Wettbewerbs"
secret: apfel
duration_minutes: 0

language: blockly

tasks:
  "Name der ersten Aufgabe":
    "ersteAufgabe/index.html": {stars: 4}
  "Name der zweiten Aufgabe":
    "zweiteAufgabe/index.html": {stars: 4}
  • category: public muss gesetzt werden.
  • name: setzt den Namen des Wettbewerbs.
  • secret: apfel vergibt ein Wettbewerbspasswort mit dem der Aufgabensatz auf jwinf.de gefunden werden kann.
  • duration: muss gesetzt werden und gibt die Zeit (in Minuten) an, für die ein Teilnehmer den Aufgabensatz bearbeiten kann. Ein Wert von 0 erlaubt unbeschränkte Bearbeitung.
  • language: gibt die Programmiersprachen für die Aufgaben an. Mögliche Werte sind blockly und python. Im Gegensatz zu den einzelnen Aufgaben kann hier (zur Zeit) nur ein Wert angegeben werden.
  • tasks: beschreibt die einzenen Aufgaben die zu dem Aufgabensatz gehören.

Beispiel

Unter beispiel/aufgabensammlung.yaml findet sich ein Beispiel für eine Aufgabensammlung bestehend aus zwei Aufgaben.

Veröffentlichen von Aufgaben

Aufgaben hinzufügen

Neuen Aufgaben können im Verzeichnis user angelegt werden. Bitte im Verzeichnis user einen eigenes Verzeichnis mit dem eigenen Namen / Nutzername anlegen, z. B. user/RobertCzechowski oder user/zgtm.

Pull request / Merge request erstellen

Um die Aufgaben zu veröffentlichen kann auf Github ein Pull Request oder im Gitlab ein Merge Request erstellt werden. Diese werden dann von uns geprüft und zeitnah bearbeitet.

Aufgaben auf jwinf.de aufrufen

Damit die Aufgaben auf jwinf.de gefunden werden können, sollte ein Wettbewerbspasswort (secret) gesetzt werden..

Eingabefeld für das Wettbwerbspasswort

Alternativ kann unter https://jwinf.de/contest/?secret=<passwort> direkt auf alle Aufgaben mit dem Wettbewerbspasswort <passwort> verwiesen werden. Ist als Wettbewerbspasswort z.B. beispiel gesetzt:

Wenn es mehrere Aufgaben mit dem gleichen Passwort gibt werden alle dort angezeigt.

Hinweis: Dieses Passwort bietet keine Sicherheit, dass die Aufgaben nicht von anderen gesehen werden können, da die Passwörter in diesem Repository im Klartext auffindbar. Wir empfehlen einfache Passwörter aus Alltagswörtern oder Schul-/Lehrkraftnamen. Kleinschreibung der Passwörter hilft Falscheingaben zu vermeiden.

Lokale Entwicklung der Aufgaben

Fork erstellen und klonen

Um eigene Aufgaben oder Aufgabensätze zu erstellen muss zunächst ein Fork des Repositories erzeugt werden und dieser lokal geklont werden. Für das klonen wird ein Account auf Github oder im BWINF Gitlab benötigt. Lehrkräfte mit einem AMS-Account / BWINF-Login können sich mit diesem auch im BWINF Gitlab anmelden; beim Login unten auf "BWINF-Login" klicken.

Repository einrichten

Zunächst muss dieses Repository lokal geklont werden.

Für das lokale Ausführen der Aufgaben muss das Git-Repository bebras-modules als ../_common/modules/ erreichbar sein.

Außerdem muss der Branch jwinf von bebras-modules ausgecheckt werden!

Auf der Kommandozeile geht dies z. B. durch Ausführen des folgenden Kommandos:

git clone https://github.com/bwinf/bebras-modules _common/modules -b jwinf

Die Verzeichnisstruktur muss dann so aussehen:

┌───┐     ┌───────────────────────┐     ┌─────────────┐
│ . │ ─┬─ │        _common        │ ─── │   modules   │
└───┘  │  └───────────────────────┘     └─────────────┘
       │  ┌───────────────────────┐
       └─ │ jwinf-aufgaben-public │
          └───────────────────────┘