# Glossar

Quelle: https://inf.zone/extras/glossar/

Fachbegriffe, die auf inf.zone vorkommen, kurz erklärt. Im Text sind sie gepunktet unterstrichen: Fahren Sie mit der Maus darüber oder tippen Sie sie an, dann erscheint die Erklärung.

- **Basis**: Die Inhalte und Aufgabentypen, die zum Bestehen der Klausur reichen. Auf den Seiten der Shorts steht, welche Folien dazugehören (Basis-Code: selbst schreiben können; Basis-Konzept: erklären und von Hand durchspielen). Alles darüber hinaus heißt Kür. [Mehr dazu](https://inf.zone/extras/lernen/#was-sie-zum-bestehen-können-müssen)
- **Befehlszeilenargument**: siehe Kommandozeilenargument
- **Bibliothek**: Sammlung fertiger Funktionen, die Sie in eigenen Programmen aufrufen, zum Beispiel `printf` aus der Standardbibliothek von C oder `get_int` aus der CS50-Bibliothek.
- **Bonuspunkte**: Bis zu 20 Punkte, die zum Ergebnis Ihrer Prüfung addiert werden und die Note verbessern, wenn die Prüfung schon ohne sie bestanden ist: bis zu 15 für Ihr Projekt auf der Projektmesse, bis zu 5 aus dem Midterm. Die Übungen selbst bringen keine Bonuspunkte; von ihnen hängt ab, ob die Bonuspunkte aus dem Midterm zählen (Joker-Regel). [Mehr dazu](https://inf.zone/extras/exam/#bonuspunkte)
- **`cd`**: Wechselt das Verzeichnis: `cd me` geht in den Ordner `me`, `cd ..` eine Ebene nach oben, `cd` allein ins Homeverzeichnis.
- **Challenge**: Freiwillige Zusatzaufgabe zu vielen Übungsaufgaben: eine kleine Änderung an Ihrem eigenen Programm, etwa die unterste Zeile von Mario mit Punkten statt Rauten. Für die Joker-Regel spielt sie keine Rolle, dafür zählt nur Ihre normale Abgabe; sie übt aber genau das, was im Midterm vorkommen kann. Sie geben sie mit `--challenge` ab, etwa `inf upload mario --challenge`, und sehen, welche ihrer eigenen Tests Ihr Programm besteht. Ihre normale Abgabe bleibt davon unberührt. [Mehr dazu](https://inf.zone/faq/uebung-solutions/#inf-challenge)
- **`check50`**: Prüfprogramm von CS50: Es testet Ihr Programm mit vorgegebenen Eingaben und zeigt mit fröhlichen und traurigen Gesichtern, welche Tests es besteht.
- **`code`**: Öffnet eine Datei in VS Code und legt sie an, falls es sie noch nicht gibt: `code hello.c`.
- **Codespace**: Eine Arbeitsumgebung auf einem Rechner von GitHub im Internet, auf dem die CS50-Werkzeuge installiert sind. Sie öffnen ihn unter cs50.dev im Browser und arbeiten dort in VS Code. [Mehr dazu](https://inf.zone/extras/setup/codespace-cloud/)
- **Compiler**: Programm, das Quellcode in Maschinencode übersetzt; diesen Vorgang nennt man kompilieren. Jedes C-Programm muss kompiliert werden, bevor es laufen kann. [Mehr dazu](https://inf.zone/faq/tech-ide/)
- **Container**: Abgeschottete Umgebung mit einem eigenen kleinen Linux und fertig installierten Programmen, die auf Ihrem Rechner läuft, ohne Ihr System zu verändern. Der Container für den Kurs enthält den Compiler, `make`, `check50` und die übrigen CS50-Werkzeuge.
- **Debugger**: Werkzeug, mit dem Sie ein Programm Zeile für Zeile ablaufen lassen und dabei die Werte der Variablen ansehen. In CS50 startet `debug50 ./programm` den Debugger von VS Code.
- **Dev Container**: Ein Container, mit dem sich VS Code verbindet. Sie bedienen VS Code wie gewohnt, aber die Befehle im Terminal laufen im Container. [Mehr dazu](https://inf.zone/extras/setup/devcontainer-local/)
- **Docker**: Programm, das Container (abgeschottete Mini-Umgebungen) auf Ihrem eigenen Rechner startet und verwaltet. Unter macOS installieren Sie dafür „Docker Desktop“; unter Windows richtet unser Einrichtungsskript Docker im WSL ein.
- **Eingabeaufforderung (Prompt)**: Das Zeichen am Anfang der Zeile im Terminal, etwa `$` oder `me/ $`. Es zeigt, dass das Terminal auf Ihren nächsten Befehl wartet. Steht davor ein Ordnername wie `me/`, befinden Sie sich gerade in diesem Ordner. Unter Windows heißt außerdem ein Programm so (`cmd`), in dem man Befehle eintippt. Die Setup-Anleitung für den Dev Container meint dieses Programm.
- **Erweiterung (VS Code)**: Zusatzmodul, das VS Code um Funktionen ergänzt, etwa „Dev Containers“ oder „GitHub Codespaces“. Sie installieren es im Extensions-Panel (Strg+Shift+X).
- **FlexNow**: Das Prüfungsverwaltungssystem der Universität Bamberg. Dort melden Sie sich zu Prüfungen an und sehen später Ihre Noten.
- **Git**: Programm, das frühere Stände Ihres Codes speichert, sodass Sie zu ihnen zurückkehren und mit anderen am selben Code arbeiten können. Ein Projektordner unter Git heißt Repository.
- **GitHub**: Plattform von Microsoft, auf der man Code speichert und gemeinsam bearbeitet. Für den Codespace brauchen Sie dort ein kostenloses Konto.
- **Hashwert**: Kurze Zeichenfolge, die aus dem Inhalt einer Datei berechnet wird und sich komplett ändert, sobald sich auch nur ein Byte ändert. Damit lässt sich später prüfen, ob eine Datei unverändert ist. Einen SHA-256-Hashwert berechnen Sie im Codespace oder unter Linux mit `sha256sum datei.pdf`, unter macOS mit `shasum -a 256 datei.pdf` und unter Windows in der PowerShell mit `Get-FileHash datei.pdf`.
- **Header-Datei**: Datei mit der Endung `.h`, die ankündigt, welche Funktionen eine Bibliothek bereitstellt. `#include <cs50.h>` macht zum Beispiel `get_string` verfügbar.
- **Homeverzeichnis**: Ihr persönlicher Ordner auf einem Linux-System, auf den Prüfungslaptops zum Beispiel `/home/student`. Der Befehl `cd` ohne weitere Angabe bringt Sie dorthin.
- **`inf`**: Das Abgabewerkzeug des Kurses: `inf upload me` im Terminal lädt Ihre Lösung hoch, lässt die Tests laufen und zeigt, ob die Übung ihren Stern hat, also für die Joker-Regel zählt. Sie installieren es einmal mit einer Zeile im Terminal und melden sich mit einem Code an, der an Ihre Uni-Mail geht. Im Codespace auf cs50.dev verschwindet es, wenn der Codespace neu erstellt wird; dann installieren Sie es noch einmal. `inf status` zeigt Ihren Stand über alle Übungen. [Mehr dazu](https://inf.zone/faq/uebung-solutions/#inf-installieren)
- **Interpreter**: Programm, das Quellcode liest und gleich ausführt, ohne dass Sie vorher kompilieren müssen. So laufen Python-Programme: `python3 hello.py`.
- **Joker-Regel**: Bedingung dafür, dass die Bonuspunkte aus dem Midterm zählen: Jede Übung ohne Stern, die Sie also 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. Für die Prüfung mit 6 ECTS zählen nur die C-Übungen, für die mit 9 ECTS beide Teile. Warm-ups, die Checks „Stadt, Land, Fluss“, Scratch und Challenges kosten keinen Joker. [Mehr dazu](https://inf.zone/extras/exam/#joker-regel)
- **Kommandozeilenargument**: Angabe, die Sie beim Start eines Programms hinter dessen Namen schreiben. Bei `./caesar 13` ist `13` das Argument; in C kommt es über `argc` und `argv` im Programm an.
- **kompilieren**: siehe Compiler
- **Linux**: Ein Betriebssystem wie Windows oder macOS. Die CS50-Umgebung und die Prüfungslaptops laufen mit Linux.
- **`ls`**: Listet die Dateien und Ordner im aktuellen Verzeichnis auf.
- **`make`**: Befehl, der den Compiler mit den richtigen Einstellungen aufruft: `make hello` erzeugt aus `hello.c` das Programm `hello`.
- **man pages**: Handbuchseiten zu C-Funktionen und Linux-Befehlen, im Terminal aufrufbar mit `man`, etwa `man 3 printf`. Mit `q` verlassen Sie die Anzeige. Während des Semesters finden Sie dieselben Informationen einsteigerfreundlicher unter [manual.cs50.io](https://manual.cs50.io). In der Prüfung stehen die man pages auf den Laptops zur Verfügung.
- **Maschinencode**: Befehle als Nullen und Einsen, die der Prozessor direkt ausführt. `make hello` erzeugt den Maschinencode in der Datei `hello`.
- **Midterm**: Klausur von 75 Minuten mitten im Semester, in C an den Prüfungslaptops. Sie bringt bis zu 5 Bonuspunkte für die Prüfung. [Mehr dazu](https://inf.zone/extras/exam/#midterm)
- **`mkdir`**: Legt einen neuen Ordner an: `mkdir me` erzeugt den Ordner `me`.
- **Notes**: Die schriftliche Fassung einer Vorlesung auf dieser Website, zum Nachlesen und Nachschlagen.
- **`pip`**: Programm, das Python-Pakete (fertige Bibliotheken) aus dem Internet installiert, zum Beispiel `pip install flask`.
- **Port**: Nummer, unter der ein Programm auf einem Rechner Verbindungen annimmt. Webseiten laufen meist auf Port 80 oder 443, Flask beim Entwickeln auf Port 5000.
- **Prompt**: siehe Eingabeaufforderung (Prompt)
- **Pseudocode**: Die Schritte eines Programms in normaler Sprache, ohne die Regeln einer Programmiersprache. Oft schreibt man ihn als Kommentare in die Datei, bevor man den eigentlichen Code schreibt.
- **PSI-Postfach**: Webportal unseres Lehrstuhls (PSI), in dem Sie persönliche Dokumente abrufen, etwa nach der Prüfung Ihre korrigierte Klausur. Sie melden sich mit Ihrer Uni-Kennung an. Die digitale Einsichtnahme nach der Prüfung funktioniert nur im Netz der Universität oder über VPN.
- **Quellcode**: Der Programmtext, den Sie schreiben, zum Beispiel die Datei `hello.c`. Ein C-Programm kann erst laufen, wenn ein Compiler den Quellcode übersetzt hat.
- **Repository**: siehe Git
- **Reverse Proxy**: Server, der Anfragen aus dem Internet entgegennimmt und an Ihre eigentliche Anwendung weiterreicht, die selbst nicht direkt erreichbar ist.
- **`rm`**: Löscht Dateien. Es gibt keinen Papierkorb; was mit `rm` gelöscht ist, lässt sich nicht wiederherstellen.
- **Shorts**: Kurze Videos zu je einem Thema der Vorlesung, jeweils mit Folien. Am Ende stehen „Die drei Extra-Minuten“; sie gehen meist über die Basis hinaus (Kür).
- **Spickzettel**: Ein Blatt DIN A4, das Sie eigenhändig von Hand beschrieben haben und als Hilfsmittel in die Klausur mitbringen dürfen. Im Midterm ist er nicht erlaubt. [Mehr dazu](https://inf.zone/extras/exam/#spickzettel)
- **Stern**: Den Stern einer Übung bekommen Sie, wenn Sie bis zur Abgabefrist mit `inf upload` abgeben und Ihr Programm einen bestimmten Test besteht, den Test mit dem Stern (★). Mit dem Stern zählt die Übung für die Joker-Regel. Welcher Test es ist, steht auf der Seite der Übung im Kasten mit den Aufgaben. Die übrigen Tests zeigen, was noch fehlt; Sie können also auch abgeben, wenn eine Aufgabe noch nicht ganz läuft. [Mehr dazu](https://inf.zone/extras/exam/#joker-regel)
- **`style50`**: Prüfprogramm von CS50, das zeigt, wo Ihr Code von den Formatierungsregeln abweicht. In Grün zeigt es, was Sie ergänzen sollten, in Rot, was wegfallen soll. [Mehr dazu](https://inf.zone/extras/style-c/)
- **Terminal**: Fenster, in dem Sie dem Computer Befehle als Text eintippen statt zu klicken. In VS Code liegt es im unteren Bereich des Fensters. Auch „Kommandozeile“, „Konsole“ oder „Shell“ genannt. Im Kurs kompilieren, starten und prüfen Sie Ihre Programme im Terminal, zum Beispiel mit `make hello` und `./hello`. [Mehr dazu](https://inf.zone/faq/tech-command-line/)
- **`unzip`**: Entpackt eine ZIP-Datei in das aktuelle Verzeichnis.
- **venv**: Eine „virtuelle Umgebung“ für Python: ein Ordner (meist `.venv`) mit eigenen Paketen, also Bibliotheken, für genau ein Projekt, damit sich Projekte nicht gegenseitig stören.
- **Verzeichnis**: Anderes Wort für Ordner. Im Terminal befinden Sie sich immer in genau einem Verzeichnis, dem aktuellen Arbeitsverzeichnis. `pwd` zeigt es an, `cd` wechselt es.
- **VPN**: Verbindung, über die Ihr Rechner von zu Hause aus so ins Internet geht, als stünde er im Netz der Universität. Manche Dienste der Uni funktionieren nur so.
- **VS Code**: Visual Studio Code, der kostenlose Code-Editor von Microsoft, in dem Sie im Kurs programmieren.
- **`wget`**: Lädt eine Datei aus dem Internet in das aktuelle Verzeichnis herunter, im Kurs zum Beispiel das Aufgabenmaterial einer Übung.
- **WSL**: Das „Windows-Subsystem für Linux“, eine Funktion von Windows, mit der ein Linux im Hintergrund läuft. Docker braucht sie unter Windows.
