# Müssen die Übungsaufgaben abgegeben werden? Gibt es Musterlösungen?

Quelle: https://inf.zone/faq/uebung-solutions/

Eine Pflicht zur Abgabe gibt es nicht. Von Ihren Abgaben hängt aber ab, ob Ihnen die Bonuspunkte aus dem Midterm gutgeschrieben werden. Dafür gilt die Joker-Regel: Jede Übung, die Sie nicht fristgerecht abgeben, kostet einen Joker. Sie haben drei Joker in den C-Übungen und einen in den Übungen zu Python und Web und setzen nie zwei hintereinander ein. Als abgegeben zählt eine Übung, wenn Ihre Abgabe ihren Test besteht. Die Regel steht auf der Seite [E-Prüfung](https://inf.zone/extras/exam/#joker-regel).

Sie geben im Terminal mit dem Befehl `inf upload` ab. Kurz darauf sehen Sie, welche Tests Ihr Programm bestanden hat und ob die Übung ihren Stern hat, also für die [Joker-Regel](https://inf.zone/extras/exam/#joker-regel) zählt. Dafür muss nur einer der Tests bestehen; Sie können also auch abgeben, wenn eine Aufgabe noch nicht ganz läuft. Abgeben können Sie so oft, wie Sie wollen: Es zählt Ihr bester Versuch bis zur Frist. `inf` kommt mit Ihrem [Setup](https://inf.zone/extras/setup/), das Sie spätestens im ersten Tutorium gemeinsam einrichten. Mehr dazu steht [unten](#inf-einrichtung). Im Virtuellen Campus (VC) laden Sie keine Übungen hoch.

Die Lösungen gibt es als Lösungsvideos. Den Link dazu bekommen Sie im Tutorium, wenige Tage vor der Frist der Übung, und nur dort. Er hängt nicht mehr davon ab, ob Sie etwas hochgeladen haben.

Für die [Warm-ups](https://inf.zone/faq/uebung-warm-up/) und die [Checks](https://inf.zone/faq/uebung-checks/) gibt es keine Lösungen. Beide sind freiwillig und spielen für die Joker-Regel keine Rolle.

## Abgeben mit `inf`

### Einrichtung

`inf` kommt mit Ihrem [Setup](https://inf.zone/extras/setup/), Sie installieren es nicht eigens. Es bleibt auch da, wenn Ihr Codespace oder Dev Container neu erstellt wird.

Tippen Sie zur Probe `inf` ins Terminal: Erscheint eine Liste der Befehle, ist alles bereit. Meldet das Terminal `inf: command not found`, führen Sie die Zeile aus [Schritt 4 der Codespace-Anleitung](https://inf.zone/extras/setup/codespace-cloud/#codespace-einrichten) aus, auch im Dev Container. Hilft das nicht, kommen Sie damit ins Tutorium.

Mit `inf update` holen Sie sich die neueste Version von `inf`, im Codespace wie im Dev Container. Nötig ist das, wenn `inf` Sie dazu auffordert.

**`inf` von Hand neu installieren:**

> [!CAUTION]
> **Nie wahllos Skripte aus dem Internet laden und ausführen.** Eine Zeile wie diese lädt ein Programm aus dem Internet und reicht es sofort zum Ausführen weiter (`| bash`, `| iex`), mit allen Rechten Ihres Benutzerkontos und ohne dass Sie es vorher sehen. Wer Ihnen so eine Zeile unterschiebt, kann damit Ihre Dateien löschen, Passwörter mitlesen oder Schadsoftware einrichten. Führen Sie sie deshalb nur aus, wenn Sie der Quelle vertrauen, und genau so, wie sie dort steht: von dieser Seite (Adressen auf `inf.zone`) oder von der offiziellen Seite des Programms. Zeilen aus Foren, Chats, E-Mails, Videos oder von einer KI führen Sie nie ungeprüft aus.

Nur nötig, wenn das Tutorium Sie darum bittet. Die Zeile installiert nur `inf`, ohne den Rest der Einrichtung.

```bash
curl -fsSL https://upload.inf.zone/install | bash
```

Schließen Sie danach das Terminal und öffnen Sie ein neues. Erst im neuen Terminal funktioniert alles, was `inf` mitbringt.

### Anmelden

Bevor Sie zum ersten Mal abgeben, melden Sie sich einmal an. Tippen Sie dazu `inf login` ins Terminal. Tippen Sie gleich `inf upload`, beginnt die Anmeldung von selbst. Dann geht es so weiter:

1. `inf` fragt nach Ihrer Uni-E-Mail-Adresse. Geben Sie nur den Teil vor dem `@` ein, bei `max.mustermann@stud.uni-bamberg.de` also `max.mustermann`.
2. An diese Adresse geht eine Mail mit einem sechsstelligen Code. Tippen Sie ihn ein; er gilt zehn Minuten. Kommt keine Mail, sehen Sie im Spam-Ordner nach. Haben Sie sich bei der Adresse vertippt, brechen Sie mit `Strg + C` ab und fangen neu an.
3. Nur beim ersten Mal: Geben Sie Ihre Matrikelnummer ein, zur Kontrolle zweimal. Gemeint sind die sieben Ziffern, nicht Ihre BA-Nummer (`ba…`).

Ob Sie die Prüfung mit 6 oder mit 9 ECTS ablegen, fragt `inf` nicht: Für die [Joker-Regel](https://inf.zone/extras/exam/#joker-regel) gilt, was zu der Klausur passt, die Sie am Ende schreiben.

Danach bleiben Sie angemeldet. `inf whoami` zeigt, mit welcher Adresse; `inf logout` meldet Sie ab. Wurde Ihr Codespace oder Dev Container neu erstellt, fragt `inf` wieder nach Adresse und Code. Die Matrikelnummer kennt der Server dann schon.

### Abgeben

Wechseln Sie im Terminal in den Ordner Ihrer Lösung und geben Sie mit dem Befehl ab, der auf der Aufgabenseite unter „Abgeben“ steht. Bei Hello, It's Me (Ordner `me`) ist das:

```bash
cd
cd me
inf upload me
```

Drücken Sie nach `inf upload ` die Tab-Taste, zeigt `inf` alle Aufgaben, die Sie gerade abgeben können. `inf` lädt Ihre Dateien hoch, lässt die Tests laufen und zeigt, welche Tests Ihr Programm bestanden hat und ob die Übung ihren Stern hat. Für den Stern muss nur einer der Tests bestehen; welcher, steht auf der Seite der Übung im Kasten mit den Aufgaben, und in der Ausgabe von `inf` steht ★ dahinter. Mit dem Stern zählt die Übung für die [Joker-Regel](https://inf.zone/extras/exam/#joker-regel).

Sie können so oft abgeben, wie Sie wollen. Für den Stern zählt Ihr bester Versuch: Es reicht, wenn eine einzige Abgabe bis zur Frist den Test mit dem Stern besteht. Eine spätere Abgabe, die ihn nicht besteht, nimmt der Übung den Stern nicht wieder weg.

Klappt es im Terminal gar nicht, geben Sie im Browser auf [upload.inf.zone](https://upload.inf.zone) ab. Dort melden Sie sich mit Ihrer vollständigen Uni-Adresse an und bekommen ebenfalls einen Code per Mail. Das ist als Ausweg gedacht: Kommen Sie mit dem Problem ins Tutorium, damit `inf` beim nächsten Mal klappt.

### Stand ansehen

`inf status` zeigt Ihren Stand für die [Joker-Regel](https://inf.zone/extras/exam/#joker-regel): je Übung ihre Frist und ob sie zählt. Darunter steht, wie viele Übungen bisher zählen, wie viele Joker Sie in jedem Teil noch haben und welche Übung Sie als Nächstes nicht auslassen dürfen. Unterscheidet sich das zwischen der Prüfung mit 6 ECTS und der mit 9 ECTS, nennt `inf` beide getrennt. Solange Sie die [Tasse](https://inf.zone/extras/exam/#joker-regel) noch bekommen können, steht dort auch, wie viele Übungen Ihnen dafür fehlen. Etwa so:

```text
$ inf status
Inf-Einf-B WS 2026/27: dein Stand

   Übung  Stand             Frist
 ★ 0      zählt             Mo 26.10., 23:59
 ✗ 1      verpasst          Mo 02.11., 23:59
 · 2      offen             Mo 09.11., 23:59
 · 3      offen             Mo 16.11., 23:59
   4      noch nicht offen  Mo 23.11., 23:59
   5      noch nicht offen  Mo 30.11., 23:59
   6      noch nicht offen  So 06.12., 23:59
   7      noch nicht offen  Mo 14.12., 23:59
   8      noch nicht offen  Mo 21.12., 23:59
   9      noch nicht offen  Mo 18.01., 23:59
   10     noch nicht offen  Mo 25.01., 23:59
   11     noch nicht offen  Mo 01.02., 23:59
   12     noch nicht offen  So 07.02., 23:59

Stand: 1 von 2 Übungen.
Joker:
  - C-Übungen: 2 von 3 übrig
  - Übungen zu Python und Web: 1 von 1 übrig

Übung 2 musst du abgeben: Zwei Joker hintereinander gehen nicht.

Midterm am 7. Dezember.
```

Die Zeichen vor den Übungen:

- `★` zählt: Die Übung hat ihren Stern
- `·` offen, die Frist läuft noch
- `✗` verpasst
- `○` entschuldigt (ein [Härtefall](https://inf.zone/extras/exam/#joker-regel), mit dem Kursteam abgesprochen)
- kein Zeichen: noch nicht offen

Denselben Stand sehen Sie im Browser auf [upload.inf.zone](https://upload.inf.zone), nachdem Sie sich mit Ihrer vollständigen Uni-Adresse und einem Code per Mail angemeldet haben. Die Übersicht dort zeigt außerdem Ihre letzten Abgaben mit ihren Ergebnissen.

### Challenges

Zu vielen Aufgaben gibt es eine Challenge: eine kleine Änderung an Ihrem eigenen Programm, etwa „Geben Sie die unterste Zeile der Pyramide mit Punkten statt Rauten aus“. Besteht Ihre Abgabe ihren Test, schlägt `inf upload` Ihnen die Challenge gleich vor. Auf der Aufgabenseite steht sie unter „Challenge“, nach „Abgeben“.

Ändern Sie dafür Ihr Programm und geben Sie es mit `--challenge` ab, bei Mario also mit `inf upload mario --challenge`. Die Challenge hat eigene Tests, und Sie sehen wie gewohnt, welche Ihr Programm besteht. Vorher ausprobieren können Sie sie mit `check50`; der Befehl steht bei der Challenge.

Challenges sind freiwillig. Für die [Joker-Regel](https://inf.zone/extras/exam/#joker-regel) spielen sie keine Rolle, dafür zählt nur Ihre normale Abgabe. Die bleibt, wie sie ist: Eine Challenge-Abgabe ersetzt sie nicht, und solange Sie keine Challenge abgeben, sehen Sie keinen ihrer Tests. Wollen Sie die ursprüngliche Fassung Ihres Programms behalten, kopieren Sie den Ordner vorher, etwa mit `cp -r mario mario-challenge`, und geben Sie aus der Kopie ab.

Wozu das Ganze? Eigenen Code gezielt zu ändern ist genau die Art Aufgabe, die im [Midterm](https://inf.zone/extras/exam/#midterm) vorkommen kann: „Ändern Sie den Code so, dass …“. Eine KI löst auch die Challenge, geübt haben Sie dann aber nichts.

### Alle Befehle

Statt `me` steht jeweils der Name Ihrer Aufgabe, wie er auf der Aufgabenseite unter „Abgeben“ steht.

| Befehl | Was er tut |
| --- | --- |
| `inf upload me` | gibt die Aufgabe `me` ab und lässt sie prüfen; im Ordner Ihrer Lösung aufrufen, so oft Sie wollen |
| `inf upload me --challenge` | gibt die [Challenge](#inf-challenge) zu `me` ab und lässt sie prüfen |
| `inf status` | zeigt Ihren [Stand](#inf-status) für die Joker-Regel |
| `inf appeal me` | legt Einspruch gegen das Testergebnis Ihrer letzten Abgabe zu `me` ein, wenn sie den Test mit dem Stern Ihrer Meinung nach zu Unrecht nicht bestanden hat; geht bis einen Tag nach dem Test, das Team sieht sich die Abgabe dann an |
| `inf appeal --last` | dasselbe für Ihre letzte Abgabe überhaupt; `inf` schlägt es nach einem nicht bestandenen Test selbst vor |
| `inf whoami` | zeigt, mit welcher Adresse Sie angemeldet sind |
| `inf login` | meldet Sie [an](#inf-anmelden); `inf upload` beginnt die Anmeldung auch von selbst |
| `inf logout` | meldet Sie ab |
| `inf update` | holt die neueste Version von `inf` |
| `inf` oder `inf --help` | zeigt diese Befehle |
