# Online: GitHub Codespace

Quelle: https://inf.zone/extras/setup/codespace-cloud/

Diese Anleitung basiert auf der Anleitung zum [Setup von Visual Studio Code bei CS50](https://cs50.readthedocs.io/cs50.dev/). Dort finden Sie ausführlichere Erläuterungen.

- [>> Zur Video-Anleitung für GitHub Codespaces](https://inf.zone/extras/setup/codespace-cloud-video)

## 1. GitHub-Account erstellen

Falls Sie noch keinen GitHub-Account haben, erstellen Sie einen **[hier](https://github.com/signup)**.

## 2. Für GitHub Education anmelden (optional)

**GitHub Education** ist für Studierende erhältlich und bietet zusätzliche [Ressourcen](https://docs.github.com/de/education/explore-the-benefits-of-teaching-and-learning-with-github-education/github-education-for-students/about-github-education-for-students). Es ist für die Nutzung der CS50-Codespace-Umgebung nicht zwingend erforderlich, aber hilfreich.

   1. Gehen Sie zu [GitHub Education](https://education.github.com/pack).
   2. Klicken Sie auf **„Sign up for Student Developer Pack“** und melden Sie sich mit Ihrem GitHub-Account an. Sie werden auf eine Seite mit dem Titel „Access free GitHub Education benefits“ weitergeleitet.
   3. **Verifizierung des Studierendenstatus:** Wählen Sie unter der Sektion „Application“ die Otto-Friedrich-Universität aus und fügen Sie als Nachweis der Universitätszugehörigkeit Ihre persönliche Universitäts-E-Mail-Adresse (@stud.uni-bamberg.de) hinzu. Diese muss anschließend im Postfach bestätigt werden.

## 3. Im CS50-Codespace anmelden

   1. Besuchen Sie den [CS50-Codespace](https://cs50.dev/).
   2. **Codespace im Browser nutzen:** Klicken Sie auf „Log In“. Nach dem Login und der Zustimmung zu den Nutzungsbedingungen öffnet sich die Online-Version von VS Code. Weiter geht es mit Schritt 4.
   3. **Alternativ: Codespace im VS Code auf dem Desktop nutzen:** Der Codespace kann nicht nur online, sondern auch in der Desktop-Version von VS Code genutzt werden. Diese muss zuvor [installiert](https://code.visualstudio.com/docs/setup/windows) werden. Nachdem sich der Codespace geöffnet hat, wählen Sie im Menü „☰“ > „Open in VS Code Desktop“. VS Code wird geöffnet und Sie werden aufgefordert, die Extension „GitHub Codespaces“ zu installieren. Nach einer erneuten Anmeldung öffnet sich der Codespace in VS Code.

## 4. Codespace für den Kurs einrichten

Mit einer Zeile richten Sie Ihren Codespace einmal für den Kurs ein. Sie bringt das Abgabewerkzeug `inf` mit, und alles bleibt auch nach Updates des Codespace da. Im Video kommt dieser Schritt nicht vor.

Unten im Fenster sehen Sie das Terminal (fehlt es, öffnen Sie es über Menü „☰“ > „Terminal“ > „New Terminal“). Fügen Sie dort diese Zeile ein und drücken Sie Enter:

> [!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.

```bash
curl -fsSL https://inf.zone/setup-container.sh | bash
```

Am Ende steht „Container eingerichtet.“ Steht dort stattdessen eine Fehlermeldung, führen Sie die Zeile noch einmal aus. Hilft das nicht, kommen Sie damit ins Tutorium. Schließen Sie dann das Terminal mit dem Papierkorb-Symbol oben rechts im Terminalbereich und öffnen Sie ein neues. Erst im neuen Terminal funktioniert alles, was die Einrichtung mitbringt. Tippen Sie dort zur Probe `inf` ein: Erscheint eine Liste der Befehle, ist alles bereit.

## 5. Erste Schritte in VS Code

   1. **Terminal:**
      - Im unteren Bereich, im Terminal, können Sie ENTER drücken, um ggf. die bereits vorhandene Ausgabe zu entfernen.
      - Alternativ: Ein neues Terminal kann im Menü über „Terminal“ > „New Terminal“ oder mit der Tastenkombination `Strg+Shift+Ö` gestartet werden. Die Tastenkombination `Strg+Ö` kann verwendet werden, um das gerade geöffnete Terminal zu verkleinern und wieder zu öffnen.
      - Geben Sie im Terminal ein: `code hello.c`
   
   2. **Schreiben Sie den Code:**
      - Die Datei wird erstellt und geöffnet. Geben Sie folgenden Code ein.
      ```c
      #include <cs50.h>
      #include <stdio.h>

      int main(void)
      {
          printf("Hello, World!\n");
          return 0;
      }
      ```

   3. **Kompilieren des Programms:**   
      - Geben Sie im Terminal folgenden Befehl ein, um das Programm zu kompilieren: `make hello`
      - Dieser Befehl erzeugt eine ausführbare Datei mit dem Namen `hello`.
      - *Tipp:* Im Terminal kann der Dateiname durch Drücken der `Tab`-Taste automatisch vervollständigt werden.

   4. **Das Programm ausführen:**
      - Um das Programm zu starten, geben Sie folgenden Befehl im Terminal ein: `./hello`
      - Nun sollte die Ausgabe „Hello, World!“ im Terminal erscheinen.

## 6. Beim Abgabewerkzeug `inf` anmelden

Melden Sie sich jetzt bei `inf` an, damit beim ersten Abgeben alles bereit ist:

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.

## 7. Codespace beenden und starten

GitHub bietet bei Codespaces eine kostenlose Nutzungsdauer von bis zu 60 Stunden pro Monat bzw. mit aktiviertem Student Developer Pack bis zu 90 Stunden (Stand: September 2026; GitHub rechnet in Kernstunden, 120 bzw. 180 im Monat, und ein Codespace mit 2 Prozessorkernen verbraucht zwei davon pro Stunde). Um diese Zeit effizient zu nutzen, sollte der Codespace nach der Nutzung ordnungsgemäß geschlossen werden:

### Bei Nutzung des Codespaces im Browser

  - **Verbindung schließen:** Um die Nutzung zu beenden, schließen Sie den Browser-Tab, in dem der Codespace geöffnet ist. Nach einer Weile ohne Aktivität (in der Voreinstellung 30 Minuten) hält GitHub den Codespace von selbst an; erst dann endet die Nutzungszeit.
  - **Verbindung aufbauen:** Um den Codespace erneut zu nutzen, melden Sie sich erneut auf [cs50.dev](https://cs50.dev) an. Wenn mehrere Codespaces geöffnet sind, können diese unter [cs50.dev/codespaces](https://cs50.dev/codespaces) verwaltet werden.

### Bei Nutzung des Codespaces in VS Code

  - **Verbindung schließen:** Die Verbindung zum Codespace kann im Menü unter **„File“ > „Close Remote Connection“** geschlossen werden.
  - **Verbindung aufbauen:** Um sich erneut zu verbinden, öffnen Sie das **Remote Explorer**-Panel im linken Seitenmenü (Bildschirm-Symbol). Das Symbol erscheint erst, wenn die Erweiterung „GitHub Codespaces“ installiert ist und Sie in VS Code mit GitHub angemeldet sind. Fehlt es, ist Schritt 3.3 noch nicht abgeschlossen. Im Panel können Sie unter **„GitHub Codespaces“** den gewünschten Codespace auswählen und sich mit einem Klick auf **„Connect to Codespace …“** erneut verbinden. Die Codespace-Umgebung wird daraufhin wieder geöffnet.

Bei Fragen oder Problemen können Sie Susi fragen, den Chatbot der Kursseite (Knopf unten rechts oder eine Stelle dieser Anleitung markieren). Außerdem sind wir Ihnen im Tutorium gerne behilflich. Viel Spaß!
