sys_arch: common_core

das Curriculum

Der „42“-Lehrplan ist ein umfassender, spielerisch gestalteter und peer Lernprozess auf der Grundlage von C und C++, der darauf ausgelegt ist, Sie zu einem hochqualifizierten Softwareentwickler auszubilden.

// methodology

Lernmodell

Peer-to-Peer

Lerne, indem du anderen etwas beibringst. Dabei entwickelst du Führungskompetenzen, indem du deinen Peers komplexen Code erklärst.

Projektbasiert

Keine Vorlesungen. Du löst ab Tag 1 Probleme aus der realen Welt. Dein GitHub Profil ist dein Portfolio.

Kompetenzbasiertes Lernen

Keine Noten. Du kommst nur weiter, indem du deine Skills beweist. "Try, Fail, Retry" ist die Kernphilosophie.

Gamifiziertes System

Sammle XP und steige im Level auf. Erreiche Level 11, um den Fortgeschrittenenlehrplan (entspricht einem Master-Abschluss) freizuschalten.

Technische Expertise
DevOps & Netzwerke

Virtualisierung, Docker, Systemadministration, TCP/IP, Sockets.

Systemtechnik

Parallelität, Syntaxanalyse, Verzweigungen, Pipes, Grafikdarstellung

Objektorientiertes C++

Klassen, Vorlagen, Container, Operatorüberladung.

Algorithmische Entwicklung

C, manuelle Speicherverwaltung, Sortieren und Big-O-Komplexitätsanalyse.

Professionelle DNA
Autonomes Lernen

Die Fähigkeit, jede neue Technologie oder jedes Framework selbstständig ohne Anleitung zu erlernen.

Zusammenarbeit

Projektleitung, Git-Workflow und konstruktive Code-Reviews.

Resilienz

Mit dem Scheitern wachsen und in schnelllebigen Technologieumgebungen erfolgreich sein.

Katalysator
NODE_01 // KATALYSATOR

Community-Initiierung

Cluster
NODE_02 // CLUSTER

Peer-to-Peer-Logik

Zugang
NODE_03 // ZUGANG

Systemeinstieg

Küche
NODE_04 // SYNERGIE

kollektive_synergie

// roadmap

Deine Reise

01 // 12-18 MONATE

Core Curriculum

Die Grundlagen. Sie erlernen C und C++ mithilfe eines spielerisch gestalteten Systems aus miteinander verknüpften Projekten. Sie entwickeln Standardbibliotheken, UNIX-Programme, 3D-Rendering-Engines und Netzwerkserver von Grund auf.

Die durchschnittliche Studiendauer beträgt 18 Monate bei Vollzeitstudium. Die maximale Studiendauer beträgt 24 Monate.

Libft Minishell Cub3d
02 // 4-6 MONATE

Berufserfahrung

Zeit für die Integration. Absolviere ein bezahltes Praktikum im Tech-Sektor. Bringe deine neu erworbenen Fähigkeiten in einer echten Produktionsumgebung ein, Seite an Seite mit erfahrenen Entwickler*innen.

Zugang zum Partnernetzwerk Kostenloser Support durch den Karrieremanager
03 // BIS ZU 5 JAHRE

Spezialisierung

Schalte das Advanced Curriculum frei. Wähle deinen eigenen Weg und tauche tief in spezifische high-level Bereiche ein. Werde Expert*in in deiner gewählten Architektur.

Künstliche Intelligenz Cybersicherheit Web-/Mobilentwicklung Betriebssysteme Grafik
04 // 6 MONATE

Finale Expertise

Sammle Arbeitserfahrung auf Senior-Niveau bei einem Tech-Unternehmen, trage maßgeblich zu einem Open-Source-Framework bei oder starte dein eigenes unternehmerisches Projekt.

Spezialisiertes technisches Fachwissen Gründung eines Start-ups
// system_architecture

Kompetenzen im Detail

Acht Themenbereiche, die als verzweigter Baum strukturiert sind. Schließe ein Projekt ab, um den nächsten Zweig freizuschalten.

mod_01 :: Grundlagen

Imperative Programmierung in C

Lernen Sie C von Grund auf. Entwickeln Sie Ihre eigenen Tools und erfahren Sie dabei, wie der Speicher tatsächlich funktioniert. Zeichenfolgenbearbeitung, dynamische Speicherzuweisung, Datei-I/O und die Disziplin, Code zu schreiben, der unter strengen Standards fehlerfrei kompiliert werden kann.

SpeichersteuerungManuelle Zuweisung und Freigabe
GrundbegriffeZeiger und verkettete Listen
Build-SystemeMakefiles und automatisierte Kompilierung
Standards„The Norm“, der Programmierstandard von 42
AbschlussprojektLibft (benutzerdefinierte Standardbibliothek)
mod_02 :: algorithmisch

Datenstrukturen und Algorithmen

Entwickeln Sie die Denkweise eines Problemlösers. Entwerfen Sie Algorithmen, die Effizienz und strenge Ressourcenbeschränkungen in Einklang bringen, und beweisen Sie anschließend unter peer , dass Ihre Lösung optimal ist.

StrategieSortierung nach Zugzahlgrenzen
AnalyseBig-O-Komplexität
StrukturenStapel, Warteschlangen, Bäume
OptimierungRadix- und Hybridverfahren
Abschlussprojektpush_swap (Sortierung mit zwei Stacks)
mod_03 :: Admin

Netzwerk- und Systemadministration

Schlüpfen Sie in die Rolle eines Systemadministrators. Bauen Sie eine Serverinfrastruktur von Grund auf auf, sichern Sie sie ab und verwalten Sie sie. Partitionieren Sie Festplatten, härten Sie eine Firewall ab, automatisieren Sie Aufgaben und containerisieren Sie anschließend das Ganze.

InfrastrukturVirtualisierung und Festplattenpartitionierung
SicherheitFirewall und Umsetzung von Richtlinien
TechnologienDocker und Containerisierung
ManagementAuftragsplanung und Automatisierung
AbschlussprojekteBorn2beroot, Gründung
mod_04 :: Parallelität

Parallele Programmierung

Nutzen Sie das Potenzial paralleler Systeme. Verwalten Sie Threads, Prozesse und gemeinsam genutzte Ressourcen, ohne dass es zu Deadlocks kommt. Erstellen Sie anschließend Ihre eigene Shell, um zu sehen, wie UNIX einen Befehl tatsächlich verarbeitet.

ThreadingThreads, Mutexe, Semaphoren
ProzesseVerzweigung, Pipes, Umleitung
SynchronisationWettlaufbedingungen und Deadlock
SignaleKommunikation zwischen Prozessen
AbschlussprojektePhilosophen, Minishell
mod_05 :: Grafiken

Grafikprogrammierung

Wo Logik auf den Bildschirm trifft. Erstellen Sie mit MiniLibX 2D- und Pseudo-3D-Grafikprogramme und nutzen Sie dabei lineare Algebra und Rendering-Mathematik, um etwas zu erzeugen, das Sie sich tatsächlich ansehen können.

2D-RenderingSprites, Ereignisschleifen, Fensterverwaltung
RaycastingPseudo-3D-Projektion
RaytracingLicht, Schatten und Reflexion
MathematikIsometrische Projektion und Vektorgeometrie
Abschlussprojektecub3D, miniRT, FdF, fract-ol, so_long
mod_06 :: Objekte

Objektorientierte Programmierung in C++

Der Übergang vom prozeduralen zum objektorientierten Denken. Neun aufeinander aufbauende Module führen Sie von Ihrer ersten Klasse bis hin zu Vorlagen, Containern und der orthodoxen kanonischen Form.

GrundlagenKlassen, Namespaces, Mitgliedsfunktionen
VererbungPolymorphismus, abstrakte Klassen, Schnittstellen
FortgeschrittenOperatorüberladung, Ausnahmen, Typumwandlung
GenerikaTemplates und STL-Container
AbschlussprojektCPP-Module 00 bis 09
mod_07 :: Netzwerk

Netzwerkprogrammierung

Verstehen Sie das Web von Grund auf. Implementieren Sie die Protokolle, die Sie schon immer verwendet haben, in C++, und bewältigen Sie dabei Hunderte von gleichzeitigen Verbindungen – ganz ohne Framework.

ProtokolleHTTP und IRC – ausgehend vom RFC
SocketsNicht blockierende E/A
Multiplexingpoll und epoll
AdressierungTCP/IP, Subnetze, Routing
Abschlussprojektewebserv, ft_irc, NetPractice
mod_08 :: Web

Webprogrammierung

Der Endgegner. Entwickeln Sie eine vollständige Single-Page-Anwendung, deren Kern ein Echtzeit-Multiplayer-Spiel bildet, und führen Sie das Ganze anschließend in Containern aus. Alles, was Sie gelernt haben, gebündelt in einem einzigen Produkt.

FrontendSPA-Architektur und Echtzeit-Benutzeroberfläche
BackendAPI-Entwurf und Authentifizierung
DatenEntwurf relationaler Datenbanken
BereitstellungDocker-Orchestrierung
Abschlussprojektft_transcendence (Echtzeit-Pong)
// media_stream

in der 42 Berlin.