Le Common Core constitue le tronc commun obligatoire de 42. C'est un parcours intensif où chaque étudiant développe des compétences fondamentales en programmation, principalement en C. La formation est basée sur le peer-learning et la pratique intensive du code.
Projets du Cercle 0
-
- Recréation des fonctions essentielles de la libc
- Premier projet en C du cursus
- Fondamentaux de la programmation en C
- Gestion de la mémoire (malloc, free)
- Manipulation de chaînes de caractères
- Création et manipulation de listes chaînées
- Fonctions de conversion de types
- Implémentation de fonctions mathématiques de base
- Gestion des erreurs et des cas limites
Projets du Cercle 1
-
- Lecture de fichier ligne par ligne
- Gestion avancée des file descriptors
- Allocation dynamique optimisée
- Buffer management et memory leaks
- Gestion de fichiers multiples simultanément
- Utilisation des variables statiques
- Optimisation des performances de lecture
-
- Reproduction complète de printf
- Gestion des fonctions variadiques
- Parsing complexe de format
- Gestion de multiples conversions (%s, %d, %x, etc.)
- Gestion des flags de format (-, 0, ., *)
- Optimisation des performances d'affichage
- Gestion précise des types de données
-
- Installation complète d'un système Debian/CentOS
- Partitionnement avancé avec LVM
- Configuration sécurisée de SSH
- Mise en place d'un pare-feu UFW/Firewalld
- Politique stricte de mots de passe avec PAM
- Configuration de sudo avec règles strictes
- Script de monitoring système
- Configuration de WordPress avec Lighttpd/Apache
Projets du Cercle 2
-
- Implémentation d'algorithmes de tri efficaces
- Optimisation avec un nombre limité d'opérations
- Manipulation de deux piles avec règles spécifiques
- Analyse de complexité algorithmique
- Gestion des cas d'erreur et de la mémoire
- Développement d'une stratégie de tri optimale
-
Premier choix:
-
- Communication entre processus via signaux Unix
- Utilisation précise de SIGUSR1 et SIGUSR2
- Gestion bit à bit des données
- Transmission fiable de messages
- Gestion des erreurs de transmission
- Support Unicode et caractères spéciaux
-
ou
-
- Reproduction du comportement des pipes shell
- Gestion des processus fils et père
- Redirection des entrées/sorties
- Exécution de commandes shell
- Gestion des erreurs et des cas limites
- Manipulation avancée des file descriptors
-
-
Second choix:
-
- Création d'un jeu 2D avec MinilibX
- Gestion complète des événements
- Parsing de fichier map
- Animation de sprites
- Gestion des collisions
- Path finding basique
- Optimisation du rendu graphique
-
ou
-
- Représentation filaire 3D (Fil de Fer)
- Transformations géométriques complexes
- Projection isométrique et parallèle
- Gestion avancée de la souris et du clavier
- Parsing de fichiers de heightmap
- Rotation et zoom du modèle
- Gestion des couleurs et du gradient
-
ou
-
- Création de différentes fractales (Mandelbrot, Julia...)
- Optimisation graphique poussée
- Gestion avancée des couleurs et palettes
- Zoom infini et déplacement fluide
- Interaction en temps réel
- Multithreading pour les performances
- Paramètres modifiables en temps réel
-
Projets du Cercle 3
-
- Implémentation du problème des philosophes
- Gestion fine des threads et mutex
- Prévention des deadlocks
- Synchronisation des processus
- Gestion des ressources partagées
- Optimisation des performances
- Monitoring de l'état des philosophes
- Gestion du temps précise
-
- Création d'un shell complet style bash
- Gestion du prompt et historique
- Parsing complexe des commandes
- Gestion des pipes et redirections
- Variables d'environnement
- Signaux et contrôle des processus
- Builtins (cd, echo, export, etc.)
- Gestion des quotes et caractères spéciaux
- Expansion des variables
Projets du Cercle 4
-
- Configuration réseau TCP/IP
- Compréhension du modèle OSI
- Calcul de masques de sous-réseau
- Configuration de routage
- Diagnostic des problèmes réseau
- Topologie réseau
- Sécurité réseau de base
-
Choix:
-
- Moteur de raycasting comme Wolfenstein 3D
- Rendu 3D temps réel
- Textures sur les murs
- Gestion des sprites et transparence
- Parsing de fichier de configuration
- Collisions et mouvements
- Optimisation des performances
- Minimap et éléments d'interface
-
ou
-
- Moteur de raytracing complet
- Calculs vectoriels avancés
- Multiples objets géométriques
- Effets de lumière et ombres
- Réflexions et transparence
- Anti-aliasing
- Multi-threading pour les performances
- Format de scène personnalisé
-
Projets du Cercle 5
-
- Configuration de containers Docker
- Orchestration avec docker-compose
- Administration système avancée
- Configuration de Nginx, WordPress, MariaDB
- Gestion des volumes persistants
- Réseaux Docker personnalisés
- SSL/TLS et sécurité
- Scripts d'automatisation
-
- Serveur HTTP complet en C++98
- Gestion des requêtes HTTP
- Configuration style Nginx
- Support CGI complet
- Gestion des sessions
- Multiplexing des connexions
- Gestion des erreurs HTTP
- Tests de performances
Projets du Cercle 6
-
- Implémentation des containers STL
- Vector avec allocation dynamique
- Map avec arbre rouge-noir
- Stack et autres adaptateurs
- Iterators et const_iterators
- Templates avancés
- RAII et exception safety
- Tests de performances vs STL
-
- Serveur IRC complet en C++98
- Protocole IRC (RFC 1459)
- Gestion des clients multiples
- Commandes IRC standard
- Channels et modes
- Opérateurs et permissions
- File transfer
- Gestion des bans et kicks
- Évaluation par les pairs (3 évaluations minimum)
- Validation binaire (succès/échec)
- Points d'expérience (XP) pour chaque projet réussi
- Progression par niveaux
- Défense orale des projets
- Tests automatiques et manuels
- Règles de notation strictes
- Chaque projet réussi débloque les suivants
- Progression non-linéaire possible
- Choix entre projets équivalents selon les préférences
- Système de points d'expérience pour le niveau
- Temps limité pour certains projets
- Bonus disponibles sur certains projets
- Projets avancés débloqués par le niveau
C
| C++
| Shell
| Unix
| Algorithmique
| Git
| Docker
| Réseau
| Systèmes
| POO
Made with ❤️ from 42 Lausanne
Part of my journey at École 42 - Exploring the depths of C programming