- Mit 73 Programmierprojekt-Ideen so zusammengestellt, dass Entwickler gleichzeitig Lernen und kreative Herausforderungen erleben können
- Jedes Projekt deckt unterschiedliche Bereiche ab, darunter Netzwerke, Systeme, AI, Grafik, Sicherheit und Datenbanken
- Die meisten Ideen sind darauf ausgelegt, zentrale technische Prinzipien direkt selbst zu implementieren, sodass sich Theorie und Praxis gemeinsam erlernen lassen
- Zu jedem Eintrag gehören passende Paper, offizielle Dokumentation und Tutorial-Links, die einen klaren Lernpfad aufzeigen
- Bietet einen Anlass, Programmierung nicht nur als Coding, sondern als Kunst des Erforschens und Erschaffens zu begreifen
Überblick
- Viele Entwickler möchten ein Side Project starten, wissen aber nicht, was sie bauen sollen
- Im Internet gibt es viele gängige und langweilige Ideen
- Dieser Beitrag stellt 73 unterhaltsame Projekte mit hohem Lernwert vor
- Jedes Projekt ist so aufgebaut, dass man bestimmte technische Konzepte durch eigene Implementierung lernen kann
Netzwerk- und Systemprojekte
- BitTorrent-Client: Implementierung eines Datei-Download-Clients, um die Funktionsweise von P2P-Netzwerken zu lernen
- DNS-Server: Aufbau eines Servers mit Query-Empfang, Paket-Parsing, Domain-Auflösung und Caching
- Container-Runtime: Lernen von Kernel-Namespaces,
chroot und Prozessisolierung ohne Docker
- TCP/IP-Stack: Direkte Implementierung des TCP/IP-Protokolls im Linux-User-Space
- Load Balancer: Implementierung von Request-Verteilung, Health Checks und Session-Persistenz zwischen Backend-Servern
Daten und verteilte Systeme
- RAFT-Protokoll: Implementierung eines Systems für verteilten Konsens und Fehlerbehebung
- Redis-Klon: Aufbau einer In-Memory-Datenbank mit Basisbefehlen, RDB-Persistenz, Replikation und Transaktionen
- Kafka-Broker: Implementierung eines verteilten Log-Systems, das Topic-Erstellung sowie Message-Producer- und -Consumer-Anfragen verarbeitet
- SQL-Engine und Optimizer: Lernen von Query-Ausführung und Optimierung, angelehnt an die Struktur von SQLite
- CI-System: Aufbau eines integrierten Systems zur automatischen Überwachung von Git-Repositories, Ausführung von Tests und Berichterstattung der Ergebnisse
Künstliche Intelligenz und Algorithmen
- Wordle-Solver: Programm zur Wortableitung auf Basis von Informationstheorie und Entropie
- Deepfake-Generator: Implementierung von Gesichtsverwandlung mit Optimal Transport
- Random Forest: Lösen von Klassifikationsproblemen durch eigene Implementierung von Entscheidungsbäumen und Random Forest
- Neuronales Netzwerk-Framework: Aufbau eines Deep-Learning-Frameworks mit Tensoren, Autograd und Optimierern
- Evolutionäres Design: Simulation zur automatischen Evolution mechanischer Strukturen mit genetischen Algorithmen
Grafik und Spieleentwicklung
- Ray Tracer: Rendering einer 3D-Szene mit Kugeln, Ebenen und Beleuchtung
- OpenGL-Renderer: Implementierung eines Mini-Renderers zum Erlernen der Grundlagen der Grafikprogrammierung
- Dangerous-Dave-Remake: Nachbau des klassischen Spiels mit SDL
- Schach-Engine: Implementierung eines Schachspiels inklusive UCI-Engine
- Procedural Crossword: Automatische Kreuzworträtsel-Erzeugung mit Constraint Propagation
Sicherheit und Kryptografie
- Authentifizierungsserver (JWT/Sessions): Implementierung von Kryptografie, Token-Ablauf und Session-Management
- Anonymes Wahlsystem: Entwurf einer kryptografischen Abstimmung mit Zero-Knowledge-Proofs (ZKP)
- VPN: Aufbau eines Mesh-VPN, das Traffic ohne zentralen Server weiterleitet
- Malware-Experimente: Test von Firewall-Reaktionen in einer virtuellen Maschinenumgebung
- Zip-Archivierer: Eigene Implementierung von Komprimierung, Verschlüsselung und Bündelung
Web- und Anwendungsentwicklung
- Webserver: Unterstützung für HTTP-Request-Verarbeitung, Auslieferung statischer Dateien, Routing und Reverse Proxy
- Kollaborativer Editor: Implementierung eines verteilten Texteditors auf Basis von CRDT
- Browser-Engine: Aufbau einer einfachen Engine für HTML/CSS-Parsing und Rendering
- Video-Editor: Client-seitiger Editor, der im Browser ausgeführt wird
- Browser-Erweiterung: Speichert Passwörter, Formulare und Zwischenablagezustände und füllt sie automatisch aus
Datenvisualisierung und Suche
- Googlebot: Einen Webcrawler bauen, um die Grundstruktur von Suchsystemen zu lernen
- Wikipedia-Suchmaschine: Implementierung von Indexierung, Tokenisierung und Ranking-Algorithmen
- Wissensgraph: Visualisiert Beziehungen zwischen Entitäten und aktualisiert sich automatisch aus dem Web
- Google-Maps-Engine: Kartensystem zur Indexierung von Straßen-, Gelände- und Ortsdaten
- CDN-Caching-System: Entwurf einer Cache-Struktur, die doppelte Requests für statische Assets verhindert
Hardware und Embedded
- Laser-Tag-System: Echtzeit-Erkennungssystem mit IR-Codierung und MQTT-Kommunikation
- Smart-Home-App: IoT-Projekt mit Unterstützung für IR-Gerätesteuerung, Zeitplanung und Automatisierung
- Game Boy Advance-Emulator: Nachbildung von CPU-, Speicher-, Grafik- und Eingabestruktur
Blockchain und Finanzen
- Bitcoin-Node: Implementierung von Block-Download und Validierungsfunktionen
- Aktienhandels-Bot: Automatisierter Handel auf Basis eines eventgesteuerten Systems
- Anonyme Abstimmung und Smart Contracts: Zuverlässiges Wahlsystem auf Blockchain-Basis
Fazit
- Die 73 Projekte betonen einen experimentellen Ansatz des Lernens durch direkte Implementierung zentraler Technologien
- Jede Idee verweist über offizielle Dokumentation, Paper und Tutorials auf praxisorientiertes Weiterlernen
- Ein praktischer Vorschlag, um Programmierung wieder als Kunst des Erforschens und Erschaffens zu entdecken
Noch keine Kommentare.