C / C++ & algorithmique
Gestion mémoire, pointeurs, parsing, structures de données, OOP C++98, héritage, polymorphisme, templates et conteneurs STL.
Je suis Noé Kiefer, étudiant à l'école 42 Luxembourg depuis octobre 2024. Mon parcours est entièrement construit autour de projets concrets : comprendre en profondeur, coder proprement, déboguer avec méthode et livrer quelque chose qui fonctionne vraiment.
Je suis étudiant à 42 Luxembourg depuis octobre 2024, actuellement dans le Tronc Commun. 42 est une école dont la pédagogie repose entièrement sur les projets : pas de cours magistraux, pas de professeurs — uniquement du code, des contraintes, de la peer review et de l'itération.
Cette approche m'a appris à chercher par moi-même, à comprendre en profondeur plutôt qu'en surface, et à construire des solutions robustes dans des contextes exigeants. Je code principalement en C et C++, avec un ancrage fort en programmation système, algorithmique et environnement Unix.
Respect des contraintes, gestion fine de la mémoire, tests, peer review et progression par projets successifs.
Lire les erreurs, isoler les causes, utiliser les bons outils, corriger sans casser le reste.
Linux, terminal, processus, fichiers, réseau : comprendre l'environnement d'exécution avant d'écrire la moindre ligne.
Capacité à apprendre de zéro sur un sujet inconnu, à chercher, tester et valider sans encadrement direct.
Une base solide orientée bas niveau et systèmes, construite projet par projet depuis octobre 2024.
Gestion mémoire, pointeurs, parsing, structures de données, OOP C++98, héritage, polymorphisme, templates et conteneurs STL.
Processus, pipes, signaux, redirections, fichiers, permissions, variables d'environnement, multithreading et synchronisation.
Adressage IP, masques de sous-réseau, routage, sockets TCP/IP, services containerisés, volumes et administration système.
Quatorze projets complétés ou en cours, couvrant la programmation C, le C++, les systèmes Unix, le réseau et l'infrastructure.
Création d'un shell Unix simplifié : lexer, parser, gestion des pipes, redirections, variables d'environnement, builtins et signaux. L'un des projets les plus complets du Tronc Commun.
Projet graphique inspiré de Wolfenstein 3D : moteur de raycasting en C, rendu dynamique en temps réel, gestion des textures, déplacements et validation de la carte.
Simulation du problème des philosophes dîneurs en C : gestion des threads POSIX, mutex, conditions de synchronisation et prévention des deadlocks et race conditions.
Création d'un serveur IRC en C++98 : gestion réseau avec sockets non-bloquants, clients multiples, canaux, authentification et protocole IRC complet.
Infrastructure multi-services containerisée avec Docker Compose : NGINX, WordPress, MariaDB, gestion des volumes, des réseaux internes et des certificats TLS.
Tri d'une pile d'entiers avec deux stacks et un jeu d'instructions limité. L'objectif est de trier les données avec le nombre de mouvements le plus faible possible.
Exercices pratiques sur les fondamentaux du réseau : adressage IP, calcul de sous-réseaux, masques, passerelles et configuration de topologies réseau.
Petit jeu 2D en C avec MinilibX : gestion des textures et sprites, événements clavier, déplacements et logique de jeu dans un environnement tile-based.
Série de dix modules couvrant la programmation orientée objet en C++98 : classes, héritage, polymorphisme, exceptions, casts, templates, conteneurs et itérateurs.
Reproduction du comportement des pipes Unix en C : fork, exec, gestion des descripteurs de fichiers et redirections d'entrée/sortie entre processus enfants.
Introduction à la virtualisation et à l'administration système Linux : configuration Debian, sudo, SSH, pare-feu UFW, partitionnement LVM et script de monitoring.
Recréation des fonctions essentielles de la bibliothèque standard C : manipulation de chaînes, gestion mémoire et listes chaînées. Réutilisée dans tous les projets suivants.
Réimplémentation de la fonction printf en C : gestion des fonctions variadiques, parsing des spécificateurs de format et formatage des différents types de données.
Fonction de lecture ligne par ligne depuis un descripteur de fichier ou l'entrée standard, avec gestion d'un buffer statique et support de plusieurs descripteurs simultanés.
Depuis octobre 2024, chaque compétence acquise est liée à un projet réel, validé en peer review. Niveau actuel : 5.81 — progression : 57 %.
Premiers pas en C : manipulation de la mémoire, des chaînes de caractères et des entrées/sorties bas niveau. Ces projets constituent une bibliothèque réutilisée dans tous ceux qui suivent.
Comprendre le système depuis l'intérieur : administration Linux, processus, pipes, signaux et redirections. Le projet minishell conclut cette phase avec la construction d'un shell Unix complet.
Algorithmique de tri avec contraintes strictes d'efficacité, puis programmation concurrente : threads POSIX, mutex et prévention des problèmes de synchronisation.
Introduction au rendu graphique avec MinilibX : jeu 2D tile-based, puis moteur de raycasting 3D inspiré de Wolfenstein. Gestion des événements et du rendu en temps réel.
Apprentissage de la programmation orientée objet en C++98 par la pratique, puis application directe dans un serveur IRC réseau multi-clients en cours de réalisation.
Fondamentaux du réseau (IP, routage, sous-réseaux) et infrastructure Docker multi-services : conteneurisation, volumes, réseaux internes et administration système avancée.