Abgabesystem
Damit Sie über GitHub Classroom abgeben können, müssen Sie einen Account auf github.com anlegen. Wie Sie sich nennen und welche Mailadresse Sie benutzen, ist Ihnen überlassen; falls Sie schon einen GitHub-Account haben, können Sie auch diesen verwenden (Ihre Abgaben sind nur für das Progra-Team sichtbar).
In den folgenden Videos erklären wir Ihnen, wie Sie Ihre Lösungen in GitHub Classroom abgeben, Abgaben nachbessern können und wo Sie Ihr Korrekturfeedback einsehen können.
Der Dienst GitHub ist eigentlich nicht primär zur Abgabe von Übungsaufgaben gedacht, sondern ist eine populäre Website, über die Entwickler:innen Code Ihrer Software mit der Welt teilen. Im Programmierpraktikum werden Sie auch weiter mit GitHub arbeiten und die eigentliche Kernfunktionalität außerhalb des Classrooms kennenlernen. Wir verwenden nur sehr, sehr wenige Funktionen von GitHub (und fast bis zum Ende kein git) in der Veranstaltung Programmierung.
Abgeben
Erhöhen Sie gerne die Wiedergabegeschwindigkeit über das Zahnrad unten rechts.
Hinweis: Der gezeigte Code und die Terminal-Befehle am Anfang des Videos weichen leicht vom dem ab, was Sie in der ersten Vorlesung gelernt haben. Für den eigentlich Video-Inhalt spielt dies aber keine Rolle.
Transkript
Wie du deine Lösungen für die Übungsaufgaben in Programmierung abgibst, erkläre ich dir in diesem Video anhand der Hello-World-Aufgabe des ersten Übungsblatts.
Ich gehe jetzt davon aus, dass du die Aufgabe bereits gelöst hast und einmal auf deinem Computer getestet hast, ob das Programm so funktioniert, wie es von der Aufgabenstellung vorgesehen ist. Außerdem musst du in deinem Browser auf github.com eingeloggt sein.
Um deine Lösung abzugeben, klickst du auf dem Übungsblatt auf das Symbol rechts neben dem Aufgabentitel. Jetzt sollte sich eine GitHub-Seite in deinem Browser öffnen. Dort bestätigst du durch einen Klick auf „Accept this assignment“, dass du die eine erste Lösung abgeben möchtest.
Jetzt dauert es einen kleinen Augenblick. Nach wenigen Sekunden kannst du die Seite neu laden und kannst mit einem Klick auf den jetzt erschienenen Link zur Abgabeseite gehen. Dann siehst du eine Seite, die ungefähr so aussieht. Da du deine Lösung bisher noch nicht hochgeladen hast, wird aktuell noch angezeigt, dass du voraussichtlich 0 Punkte für deine Abgabe bekommst. Darauf wirst du auch in einer E-Mailbenachrichtigungen von GitHub hingewiesen, die standardmäßig aktiviert ist.
Um deine Lösung hochzuladen, klickt du oben rechts auf den „Add file“-Button und wählst „Upload Files“. Ziehe dann alle für die Aufgabe relevanten Code-Dateien hier rein und bestätige anschließend mit einem Klick auf „Commit changes“. Zurück auf der Hauptseite sehen wir jetzt oben rechts am orangenen Kreis, dass die Tests für die automatische Bewertung aktuell ausgeführt werden. In der Regel stehen die Ergebnisse nach wenigen Minuten zur Verfügung. Wenn du die Seite dann neu lädst, siehst du hier, dass in diesem Fall die volle Punktzahl erreicht wurde.
Zum Abschluss noch zwei Hinweise:
- Du hast sicherlich gesehen, dass hier schon andere Dateien in der Abgabe vorhanden sind. Diese sind wichtig für die automatischen Tests und dürfen weder verändert, noch gelöscht werden. Solltest du sie einmal versehentlich verändern, melde dich bitte per Mail beim Organisationsteam und gib deinen GitHub-Namen sowie die betroffene Aufgabe an.
- Falls du nicht sofort die volle Punktzahl erreichst, kannst du deine Abgabe beliebig oft vor der Deadline nachbessern. Das erkläre ich dir im nächsten Video.
Mit welchem Ansatz Sie unsere Aufgaben lösen, ist uns (und den Tests) vollkommen egal. Es ist nur wichtig, dass Sie die in der Aufgabenstellung genannten Anforderungen (z. B. den Programmnamen) genau einhalten. (Auch später in der professionellen Softwareentwicklung ist es sehr wichtig, die formalen Anforderungen an ein System genau einzuhalten, damit Code unterschiedlicher Teams oder Firmen richtig zusammen funktioniert.)
Fehlmermeldungen der automatischen Tests & Abgabe nachbessern
Wir erklären nun, wie Sie die Fehlermeldungen der automatischen Tests einsehen und eine verbesserte Version hochladen können. Anders als im Video gesagt können Sie jederzeit Ihre Lösungen nachbessern; es gibt keine Deadline.
Transkript
Es wird sicherlich allen von euch einmal passieren, dass ihr im ersten Versuch keine vollständig korrekte Lösung abgebt. Wie ihr dann sehen könnt, welcher Testfall fehlgeschlagen ist und wie ihre eure Abgabe nachbessert, erkläre ich euch jetzt.
Wir starten zunächst mit einer frischen Abgabe. Ich habe auf meinem Computer getestet, ob mein Hello-World-Programm hier funktioniert. Ich lade meine java-Datei jetzt, wie im ersten Video gezeigt, hoch.
Nach wenigen Minuten bekomme ich jetzt das Ergebnis der automatischen Tests angezeigt: Ich habe nicht die volle Punktzahl bekommen – über den nicht vollständig erfolgreichen Testdurchlauf wurde ich auch standardmäßig per E-Mail informiert. Um zu sehen, was schiefgegangen ist, klicke ich oben rechts auf das rote X und dann auf „Details“. Unter „Prüfe Abgabe mit automatischen Tests“ kann ich sehen, welche Tests durchgeführt worden sind. Interessant sind jetzt die Tests, die nicht PASSED sind. Hier sehe ich in der Testbeschreibung, dass geprüft wird, ob meine Ausgabe genau „Hello World!“ enthält. Meine Ausgabe enthält aber nicht das geforderte Ausrufezeichen.
Ich bessere jetzt also den Code auf meinem Computer nach, teste nochmal und jetzt kann ich meine nachgebesserten Code hochladen. Dazu öffne ich wieder die GitHub Classroom-Seite für die Abgabe (z. B. über das Übungsblatt), und lade die überarbeite Datei hoch. Nach wenigen Minuten bekomme ich dann wieder das Ergebnis der Tests: Diesmal ist alles richtig.
Wenn ein automatischer Test nicht erfolgreich durchläuft, wird Ihnen – wie im Video gezeigt – eine Fehlerbeschreibung angezeigt. Meistens ist diese Beschreibung einigermaßen gut verständlich, manchmal aber etwas kryptisch. Hier finden Sie eine Liste von typischen Fehlern, was Sie bedeuten, und was eine wahrscheinliche Ursache ist. Wir ergänzen ggf. die folgenden Listen im Laufe des Semesters. Fragen Sie uns um Hilfe, wenn Sie eine Meldung nicht verstehen.
Typische Fehlermeldungen der automatischen Funktions-Tests
Task :compileJava FAILED
java.lang.AssertionError: Expected class Klassenname to exist but it didn't
error: duplicate class: Klassenname
error: cannot find symbol Name
java.util.concurrent.TimeoutException: testName() timed out after 2 seconds oder
Test … SKIPPED in Kombination mit Timeout has been exceeded oder
Requesting stop of task ':test' as it has exceeded its configured timeout oder
Current stacktrace of timed out but not yet stopped task ':test':
SKIPPED … There were failing tests. See the report at:
Vermutlich beansprucht Ihr Code zu viel Arbeitsspeicher und es kommt zu einem OutOfMemoryError. Dies kann z. B. passieren, wenn Sie versehentlich unendlich viele neue Objekte anlegen (z. B. beim Bearbeiten einer dynamischen Datenstruktur). (Hinweis: Den angegeben Report können Sie nicht einsehen.)
Can't find any online and idle self-hosted runner in the current repository
E-Mail: Run failed: Automatische Tests
Sie erhalten diese E-Mail, wenn die automatischen Tests nicht alle erfolgreich bestanden wurden (es kann also z. B. auch sein, dass Sie 9/10 Punkten haben). Schauen Sie wie im Erklärvideo gezeigt nach, welche Tests fehlgeschlagen sind, und bessern Sie Ihre Abgabe ggf. nach.
Die Tests sagen, dass mein Code Optional[etwas] ausgibt, aber ich benutze gar kein Optional im Code?
Beim automatischen Testen müssen wir manchmal mit dem Fall umgehen können, dass es einen oder keinen Rückgabewert gibt. Zum Umgang mit „nur möglicherweise existierenden Werten“ kann in Java der „Container“-Datentyp Optional verwendet werden, den Sie im Programmierpraktikum kennenlernen werden. Bei der Testausgabe können Sie im Wesentlichen das Optional außen herum ignorieren. Wenn z. B. die Tests sagen, dass Optional[0] den Wert 25 nicht enthält, dann heißt das, dass Ihr Programm 0 statt 25 berechnet hat.
java.util.NoSuchElementException … at java.base/java.util.Scanner
Sie lesen Daten von der Standardeingabe, obwohl es nichts mehr auf der Standardeingabe zu lesen gibt. Stellen Sie vorm Lesen von der Standardeingabe mit hasNext sicher, dass es noch Daten gibt, die gelesen werden können. (vgl. Vorlesung zum Thema Standardeingabe)
WARNING: A restricted method in java.lang.System has been called
Typische Fehlermeldungen der automatischen Stil-Tests
siehe auch Unterseite Stil-Prüfung
name '…' must match pattern '…', i.e. lowerCamelCase.
has incorrect indentation level … [Indentation]
'{' at column … should be on the previous line. [LeftCurly]
'}' at column … should have line break before. [RightCurlySame]
'}' at column … should be on the same line as the next part of a multi-block statement (…). [RightCurlySame]
else stehen.Only one statement per line allowed. [OneStatementPerLine]
Falls Sie bei der Fehlerbehebung bzw. der Interpretation der Fehlmeldung nicht weiterkommen, fragen Sie in Ihrer Übung, im Tutorium oder im Ilias. Beachten Sie, dass wir Ihnen im Forum nur weiterhelfen können, wenn Sie Ihren GitHub-Namen nennen. (keine Sorge: Nur die Korrektor:innen haben Zugriff auf Ihre Abgaben im Classroom.)
Falsch hochgeladene Dateien löschen
Wenn Sie eine bereits hochgeladene Datei aktualiseren (aber nicht löschen wollen), muss die betroffene Datei vorher nicht gelöscht werden.
Wenn Sie eine Datei an der falschen Stelle oder mit einem falschen Namen hochgeladen haben, müssen Sie diese löschen. Dann die die automatischen Tests funktionieren ggf. nicht, wenn Sie sich nicht an den vorgegebenen Programmnamen halten.
- Falsch hochgeladene/falsch benannte Datei anklicken.
- Rechts auf das Dreipunktmenü klicken und dann auf „Delete file“.

- Das Löschen mit einem Klick auf „Commit changes“ (oben rechts) und dann nochmal mit „Commit changes“ bestätigen.
Wie bei jeder Änderung an Ihrer Abgabe dauert es dann i. d. R. wenige Minuten, bis Sie das neue Testergebnis sehen. Falls die automatischen Tests bei Ihnen nicht richtig durchlaufen, melden Sie sich bitte per Mail bei uns.
Korrekturfeedback anfordern & einsehen
Wenn Sie Ihre Abgabe wie gezeigt hochladen, bekommen Sie eine automatische Bewertung der Funktionalität und der Codequalität.
Da nicht alles automatisch getestet werden kann, empfehlen wir Ihnen, auch menschliches Korrekturfeedback einzufordern. Sie können so z. B. zu Ihrer Lösungsstrategie oder Ihrem Programmierstil Rückmeldungen erhalten oder vllt. auch eine Erklärung, warum Ihr Programm nicht vollständig richtig funktioniert.
Wenn Sie menschliches Feedback haben wollen, schreiben Sie in die erste Zeile Ihrer Datei // Feedback gewünscht. Für das Einfordern des menschlichen Feedbacks gibt es eine Deadline, die oben auf dem Übungsblatt steht. Spätestens 7 Tage nach dieser Deadline erhalten Sie dann eine Rückmeldung. Im Video erklären wie Ihnen, wie Sie das Feedback einsehen:
(Im Video wird etwas von einer finalen Punktzahl gesagt. Diese tragen wir nicht mehr zusätzlich im Feedback ein.)
Transkript
Ob euer Programmcode die funktionalen Anforderungen erfüllt, testen unsere automatischen Tests. Ihr bekommt aber zusätzlich innerhalb von 7 Tagen nach der Abgabefrist Feedback von unseren menschlichen Korrektor:innen mit Hinweisen zur Codequalität, Verbesserungstipps usw., sowie der finalen Punktzahl für jede Aufgabe. Ich zeige nun, wie Ihr das Feedback einsehen könnt.
Wenn du auf der Upload-Seite der Aufgabe bist, kannst du über den Reiter Issues auf das Korrekturfeedback zugreifen. Dort siehst du die final festgelegte Punktzahl, die in der Regel der automatisch bestimmten Punktzahl entspricht.
Sobald dein Korrekturfeedback angekommen ist, erhältst du standardmäßig auch eine E-Mailbenachrichtigung.
Falls du Rückfragen zu deiner Korrektur hast, melde dich bitte per E-Mail oder (bevorzugt) Rocket.Chat bei der Person, die dich korrigiert hat.
Grundsätzlich empfehlen wir allen, sich ausführliches Feedback zu holen. Wir wollen durch diese Regelung aber vermeiden, dass wir viel Zeit in Feedback für Personen stecken, die das Feeedback sowieso nicht lesen.
Weitere Hinweise
- Wenn Sie im Forum Fragen zu Ihrer Abgabe im Classroom stellen, müssen Sie Ihren GitHub-Namen nennen, da wir sonst nicht wissen, um welche Abgabe es geht. Keine Sorge: Nur die Korrektor:innen haben Zugriff auf die Abgaben im Classroom.
- Eine Übersicht über all Ihre Abgaben bekommen Sie unter https://github.com/hhu-progra.
- Rückfragen zur Korrektur stellen Sie via Rocket.Chat direkt an die Person, die Sie korrigiert hat. Die Zuordnung von GitHub-Namen zu Unikennungen finden Sie auf der Kursstartseite im Ilias. Geben Sie in Ihrer Nachricht die Aufgabe und Ihren GitHub-Namen an. Antworten Sie nicht auf die E-Mail-Benachrichtigung, die Sie von GitHub erhalten; diese Antworten werden eher übersehen.
- Falls Sie versehentlich Dateien löschen, die für die automatischen Tests wichtig sind (Ordner
testund.github), melden Sie sich per Mail bei uns; nennen Sie Ihren GitHub-Namen. - Zu Textaufgaben gibt es keine automatische Rückmeldung. Hier ist es besonders empfehlenswert, mit
// Feedback gewünschtwie oben beschrieben eine menschliche Rückmeldung zu erfragen. - Beachten Sie auch die allgemeinen Infos zu den Übungsblättern.
Was tun, wenn das Abgabesystem technische Probleme hat?
Es kann immer mal unvorhergesehene, technische Probleme geben, die nicht Sie zu verschulden haben (z. B. Probleme im GitHub Classroom). Sagen Sie uns dann bitte über das Forum (Organisatorisches) Bescheid.
Bitte beachten Sie, dass Mitarbeiter:innen am Wochenende in der Regel frei haben und deshalb bei Problemmeldungen am Wochenende vor Montagmorgen nicht mit einer finalen, offiziellen Antwort zu rechnen ist. Nach Veröffentlichung der Lösungsvorschläge akzeptieren wir auch keine Abgaben mehr – schicken Sie uns im Zweifel eine Abgabe per Mailanhang bei kurzfristigen Problemen.