Projekt Name Projekt Beschreibung Projekt Type Projekt Status
PushSwap

Ein Sorting algorythmus mit nur 2 Stacks, wobei nur die folgenden befehle benutzt werden dürfen:
SA SB SS, RA RB RR, RRA RRB RRR, PA PB

Programm: Algorythmus Komplett
SoLong

Ein kleines graphisches spiel, in grid basis, wo ein player alle "Collectables" auf einer karte
einsammeln muss um das ziel freizuschalten.

Programm: Komplett
Minitalk

Ein Text server, welcher von einem client signale geschickt bekommt und diese als text anzeigt.

Programm: Signalstruktur Komplett
Philosophers

N Philosophen sind an einem tisch, jeder hat eine Gabel, eine esszeit, eine schlaflänge und eine denkpause.
Dies wird in diesem programm simuliert, wenn ein Philosoph zu lange nicht gegessen hat, stirbt dieser und das programm schließt sich.

Programm: Recourcen management in Threads Komplett
Minishell

Ein Programm, welches das Terminal von Linux imitiert. es hat eingebaute funktionen, kann aber auch auf externe programme zugreifen.

Programm: Raycasting Komplett
Cub3d

Ein Raycasting algorythmus, welcher eine 2d engine, dazu benutzt eine 3d umgebung zu erzeugen.
Programme wie Wolfenstein3d und Catacomb waren die ersten, die das verwendet haben.

Programm: Raycasting Komplett
WebServ

Ein Webserver in C++, welcher eine Config file als argument nimmt

Programm: WebServer Nicht gestartet
ChatGodApp

Eine webseite, welche GPT, Openai Whisper und Elevenlabs verwendet um mit GPT reden zu können und in verschiedenen aspekten eingesetzt zu werden.

Programm: AI Hold
PushSwap Sorting algorythm

PushSwap

Push Swap ist ein Projekt der 42 Coding Schule, in dem es darum geht, eine gegebene Folge von Zahlen mit möglichst wenigen Operationen zu sortieren. Das Besondere: Es dürfen nur zwei Stacks verwendet werden (Stack A und Stack B) und nur eine festgelegte Menge an Operationen wie Swap, Push und Rotate.

Typische Operationen sind: sa, sb, ss (Tauschen der obersten Elemente), pa, pb (Push zwischen den Stacks), ra, rb, rr (Rotationen nach oben) und die entsprechenden Reverse-Rotationen rra, rrb, rrr.

In diesem Projekt werden Konzepte wie Greedy-Algorithmen, Partitionierung, sowie Analyse von Worst- und Average-Case-Befehlsanzahlen vermittelt.

Minitalk

Minitalk

Minitalk demonstriert die Übertragung von Nachrichten zwischen einem Client und einem Server mithilfe von Signalen (POSIX signals). Der Client kodiert Text in einzelne Bits und sendet sie sequenziell an den Server, der die empfangenen Bits zu Zeichen zusammensetzt und die Nachricht darstellt.

Wichtige Aspekte sind die richtige Bitkodierung, Handshakes oder Acknowledgements, sowie das zuverlässige Verarbeiten asynchroner Signale.

Philosophers

Das Philosophers-Projekt simuliert das klassische "Dining Philosophers"-Problem und veranschaulicht Probleme des Nebenläufigkeitsmanagements: Deadlocks, Race Conditions und Verhungern (starvation). Jeder Philosoph cyclicht durch Denken, Essen und Schlafen und benötigt zwei Ressourcen (Gabeln), um zu essen.

Die Implementierung demonstriert verschiedene Lösungsansätze: Mutexes oder Semaphoren zur Vermeidung gleichzeitiger Ressourcennutzung, festgelegte Pickup-Reihenfolgen, oder Überwachungs-Threads, die Timeouts erkennen.

Philosophers
SoLong game

SoLong

SoLong ist ein kleines, rasterbasiertes Spiel, bei dem der Spieler ein Level vollständig erkunden muss, um alle Sammelobjekte (Collectables) einzusammeln und anschließend das Ziel zu erreichen. (note, das bild ist nicht meine version)

Minishell

Minishell ist eine vereinfachte Umsetzung einer UNIX-Shell, die grundlegende Konzepte der Kommandozeile vermittelt. Dazu gehören das Parsen von Befehlen, Ausführung externer Programme via fork()/exec() sowie interne Builtins wie cd, echo und exit.

Minishell
Cub3d

Cub3d

Cub3d implementiert einen Raycasting-Algorithmus, der aus einer 2D-Kartenansicht eine pseudo-3D-Ansicht erzeugt.

WebServ

WebServ ist ein in C++ umgesetzter Webserver, der Konfigurationsdateien liest und HTTP-Anfragen verarbeitet.

WebServ
ChatGodApp

ChatGodApp

ChatGodApp kombiniert Sprach- und Text-KI-Technologien, um eine interaktive Chat-Erfahrung zu bieten.