Durch den vermehrten Einsatz von GitHub und Classrooms müssen wir unsere Repositories organisieren.
Organisation | Einsatzzweck | ||
---|---|---|---|
Für Lehrpersonen | |||
bzz-fgict | Aktuell für alles, etwas chaotisch | ||
teacher-python | Aufgaben, Leistungsbeurteilungen, Lösungen für M319, M320, ??? | ||
teacher-java | Aufgaben, Leistungsbeurteilungen, Lösungen für M403, M404, M120, M320, M322, ??? | ||
Modulbereich “Programmierung - Webapplikationen” | Aufgaben, Leistungsbeurteilungen, Lösungen für M133/M151 | ||
BZZ-Commons | Skripts, Workflows, … die wir weltweit freigeben | ||
Für Vorlagen (Templates) | |||
templates-python | Vorlagen für Assignments im Classroom | ||
templates-java | |||
Für Lernende | |||
BZZ-2022 | Jahrgang 2022 (IA22a, IA22b, IM22a, IM22b, …) | ||
BZZ-2023 | Jahrgang 2023 (IA23a, IA23b, IM23a, IM23b, …) |
Ich beschreibe den Ablauf jeweils am Beispiel einer neuen Programmieraufgabe im Modul 319. Der Titel der Aufgabe lautet: “LU06.A01: Listen”. Ich möchte diese Aufgabe bei den Klassen IM22a und IM22b einsetzen.
Bei dieser Variante wird nur ein Repository mit Branches für die Vorlage (main
) und den Lösungsvorschlag (solution
) genutzt.
Ich erstelle ein neues Repository für diese Aufgabe (siehe Vorlage für Pycharm mit GitHub Classroom ). Dieses Repository ist public definiert. Die Lernenden müssen Zugriff auf dieses Repository haben.
Ich kennzeichne dieses Repository als “Template”.
Die Vorlage enthält alle Dateien und Funktionen, welche die Lernenden als Startpunkt erhalten:
lists.py | Dieses Skript sollen die Lernenden erstellen/ergänzen | |
lists_test.py | Unit-Tests für die Lernenden | |
.gitignore | ||
requirements.txt | Libraries die importiert werden müssen | |
.github | Ordner für die Workflows | |
classroom/autograding.json | Testfälle mit Bewertung | |
workflows/classroom.yml | Workflow zum Durchführen der Testfälle |
Die Musterlösung kann direkt im gleichen Repository als eigener Branch z.B. solution erstellt werden.
Mein Repository ist nun vollständig.
Bei dieser Variante haben die Lernenden keinen Zugriff auf den Branch “solution”. Dieses Vorgehen ist vor allem bei Leistungsbeurteilungen sinnvoll.
Ich erstelle ein neues Repository für diese Aufgabe. Dieses Repository ist internal (oder private) definiert. Die Lernenden sollen keinen Zugriff auf dieses Repository erhalten.
Die Vorlage enthält alle Dateien und Funktionen, welche die Lernenden als Startpunkt erhalten:
lists.py | Dieses Skript sollen die Lernenden erstellen/ergänzen | |
lists_test.py | Unit-Tests für die Lernenden | |
.gitignore | ||
requirements.txt | Libraries die importiert werden müssen | |
.github | Ordner für die Workflows | |
classroom/autograding.json | Testfälle mit Bewertung | |
workflows/classroom.yml | Workflow zum Durchführen der Testfälle |
Die Musterlösung kann direkt im gleichen Repository als eigener Branch z.B. solution erstellt werden.
Mein Repository ist nun vollständig.
Ich erstelle eine Kopie meines Repositories, wobei ich nur den main-Branch hochlade. Damit wird meine Lösung nicht übernommen wird.
Dieses Repository kennzeichne ich als “Template”.
Um ein Repository in einem Classroom zu verwenden, muss das Repository public sein oder in der gleichen Organisation wie der Classroom liegen.
Falls noch kein Classroom für meine Klassen “IM22a”, “IM22b” und das Modul “319” existiert, erstelle ich einen neuen Classroom in der Organisation “BZZ-2022”.
Ich erstelle ein Assignment im Classroom “M319-2022” für die Aufgabe.
Den Link zu diesem Assignment stelle ich den Lernenden zur Verfügung.
Anpassungen am Template werden in künftigen Repositories übernommen. Es gibt keinen Automatismus um bereits erstellte Repositories der Lernenden zu aktualisieren.
Aufräumen von Organisationen / Repos / Benutzerkonten