Expérience
Juillet 2013 – Aujourd'hui
Assistant Pedagogique en C/Systeme Unix.
– Correction des eleves.
– Encadrement des TPs.
Stage Faculté de Versailles : 1er Juin 2012 - 31 Juillet 2012..
Implémentation de l’Algorithme PEPA, mis en place par mon maître de
stage.
Projets
Langage C++ : Skype-like.
ASM : Réimplémenter une partie la librairie Standard C.
Réimplémentation de module Unix : Script / Ftp / IRC / ls.
Complétent de C.V : Projets réalisés.
1. Au cours de la licence Informatique :
• [1ère année] Pacman en C : Implémentation de l'algorithme du plus court chemin de
Djikstra et de l'algorithme de réalisation de labyrinthe, utilisation d'une surcouche [fournie
par la faculté] la librairie graphique SDL.
• [1ème année] Snake en C : Utlisations des listes chainées, utilisation de la surcouche SDL.
• [1ère année] Création d'un site web en HTML : Utilisation de l'HTML, du CSS pour faire la
mise en forme et interaction via du MySQL avec une base de donnée que l'on gèrait.
• [2ème année] Logiciel de gestion de gare en Java : Utilisation de la librarie graphique
Swing, création d'Interface et d'autres notions de l'Orienté Objet.
• [2ème année] Logiciel de traitement d'image type BMP. Implémentation des filtres de
couleur, de la pixelisation, de la rotation sur l'image, agrandissement et retrecissement et
d'autres fonctionnalités de base.
• [3ème année] Réimplémention d'un Shell basique avec les commandes tel que ls / cd / cp
etc...
• [3ème année] Implémentation d'un logiciel de gestion d'avion de chasse en C++ : Gestion
des moteurs, des vannes, et d'autres pièces techniques. Utlisation de la librairie graphique
QT.
• [3ème année] Implémentation d'un émulateur processeur RISC en C (Projet de groupe) :
Une partie de parsing de langage assembleur [imposé par le sujet] en Bison/Flex et création
d'un machine virtuelle pouvant émuler le comportement d'un processeur RISC en C. Gestion
des breakpoints, visualisation de la mémoire et des registres en temps réel. Une interface
graphique a été ajouté pour être plus user-friendly, elle a été réalisé grâce à Glade.
• [Stage optionnel de 3ème année] : Implémentation de l'Algorithme PEPA (Algorithme
developpe par mon maitre de stage et une collaboratrice Irlandaise). J'ai crée un logiciel
permettant de parser un fichier contenant les informations utiles au fonctionnement de
l'algorithme et par la suite, appliqué l'algorithme sur les informations recueillies. Utilisation
de Flex / Bison en C++, implémentation d'arbre binaire, implémentation d'un algorithme
inconnu.
• Durant les cours de Théorie des graphes, exploration des algorithme de colorations de
graphe, de parcours de graphe et preuve mathématique de leurs propriétés. Pendant les cours
d'algorithmie, apprentissage des algorithme du plus court chemin, de parcours des arbres et
des graphes, des algorithmes de flots. Les cours de Telecom ont permis l'apprentissage du
calcul de la bande passante et d'autres calculs d'informations utiles.
2. Au cours de la 3ème année spécial d'Epitech :
• Implémentation de l'algorithme des 8 reines, de résolvations des sudokus et des carrés
magiques.
• Création d'un programme calculant si deux chaines de caractères sont identiques et combien
de fois, elles sont identiques. Gestion de l'étoile comme pouvant être n'importe quel
caractères.
• Réimplémention de la fonctionnalité Shell ls. Lors de cette implémentation, recode des
options sur les liens symboliques, la recursion, le tri par date et par nom.
• Recode d'un shell simple en C : Implémentation de builts-in tel que cd / exit / setenv /
unsetenv / env et éxecution des autres commandes. Gestion d'un prompt, de la mémoire.
Apprentissage du fonctionnement des commandes basiques du shell.
• Implémentation d'un programme de communication via des signaux en C. Apprentissage des
signaux, comment les récupèrer et les gérer.
• Implémentation d'un programme en C listant les entrées dans le terminal, permettant la
navigation entre les différentes entrées, la suppression des entrées et l'affichage de celles
selectionnées. Apprentissage de la librarie termcap et Ncurses, utilisation des listes
doublement chainées.
• Recode de la fonction printf en Cavec toutes les options, seule l'option de gestion de floats
n'étaient pas inclues. Apprentissage de parsing et d'interprétation d'options.
• Implémentation d'un Shell plus complexe en C : traitement les pipes, les redirections et avec
les mêmes fonctionnalités que le premier Shell implémenté.Gestion des forks, des pipes
avec des notions de parsing plus avancées.
• Implémentation d'une calculatrice à nombres infinies en C. Gestion des opérations comme
addition, soustraction, multiplication et la divisision. Pour le parsing des expressions,
implémentation du Shutting Yard Algorithm.
• Implémentation du jeu Korewar, parsing d'assembleur spécifié par le sujet et création d'une
machine virtuelle émulant la partie entre les assembleurs qui s'affrontent.
• Création d'un programme récupérant des informations d'un fichier puis les traitements avec
une grammaire donnée par le sujet. Sujet donné lors d'un rush donc fait en 48h.
• Recode de la fonction get_next_line.
• Recode de la notion objet en C, les notions d'héritages n'ont pas été implémentées mais le
reste est présent. Sujet donné lors d'un Rush donc fait en 48h.
• Recode de la fonction malloc en C : Apprentissage de la gestion de mémoire avec
break/sbreak. Implémentation d'un algorithme optimisé pour gérer au mieux la mémoire.
• Recode de la fonctionnalité shell script en C: Apprentissage des pseudos-terminaux pour
gérer la sauvegarde et d'autres choses dans le terminal principal.
• Recode d'un logiciel de messagerie comme Thunderbird en C avec les protocoles de
communication SMTP et POP3. Utilisation de la librarie graphique QT pour l'interface et
gestion avec une base de données locales avec SQLLite. Sujet donné lors d'un Rush donc
fait en 48h.
• Recode de la fonctionnalité en Cnm / objdump du shell. Gestion du format Elf et des
informations qu'il contient.
• Implémentation du problème des philosophes en C. Apprentissage de la gestion des mutexs
et des problèmes de concurrence.
• Implémentation d'un jeu multi-processing en C : Apprentissage de l'utilisation des
sémaphores, des ipcs. Implémentation d'une IA permettant le déplacement des processus.
• Implémentation d'un programme permettant la gestion d'un serveur ftp en C. Gestion des
commandes, cd / ls / envoie de fichier / reception de fichier.
• Implémentation du logiciel IRC sans interface graphique en C. Gestion de clients et de
serveur, gestion de channel et des commandes d'envoie de messages et de fichiers.
• Implémentation d'un jeu réseau en C, le zappy. Gestion d'un monde avec des ressources, des
joueurs. Gestion des commandes envoyes par les IA, donc programmation d'IA et interface
graphique faite avec QT pour modéliser le monde.
• Implémentation d'une machine virtuelle en C++ permettant de parser du langage assembleur
[typé d'une certaine façon et de faire des calculs dessus. Des fonctionnalités ont été rajouté
tel que le chargement de librarie dynamique au cours du programme.
• Implémentation d'un Snake en C++ comprenant le chargement dynamique de la librairie
graphique que l'on souhaitait utilisé. Les libraries graphiques utilisés sont OpenGL / QT et
SDL.
• Implémentation d'un logiciel émulant le comportement d'une pizzeria en C++. Reception
recoit les commandes, les envoie par pipe nommées au cuisine qui les traite avec une
ThreadPoll et renvoie les commandes faites à la reception. Gestion de thread, de pipes
nommées et de fork.
• Implémentation d'un logiciel Skype-like en C++. Création d'un protocole réseau pour
communiquer. Gestion des utilisateurs, gestions des appels entre utilisateurs et des
messages. Apprentissage de la VoIP et une continuité dans l'apprentissage du réseau.
• Implémentation d'un jeu en temps réel en C++, le R-type. Gestion des bases pour jeu vidéos,
de la gestion du temps et de l'espace.
• Implémentation d'un module de Liste en Ocaml. Implémentation de toutes les
fonctionnalités du module liste proposé par Ocaml.
• Recode d'une calculatrice infinie en Ocaml. Utilisation de flex et bison en Ocaml pour
parser l'expression mathématique et utilisation d'algorithme efficaces pour les opérations.
Les opérateurs gérés sont : Addition, Soustraction, Division, Multiplication et la puissance.
• Création d'un labyrinthe en Ocaml. Gestion de l'algorithme de création de labyrinthe en
Ocaml et implémentation de l'algorithme du plus court chemin.
• Apprentissage du LateX pour les documents à rendre tel que le protocoles, le cahier des
charges et les spécifications de projets de C++.
• Examens SQL pour vérifier l'apprentissage des notions SQL.
• Examens Réseaux pour vérifier l'apprentissages des notions de réseaux tel que les classes, IP
/ TCP / UDP.
• Implémentation des fonctions de base de la LibC en ASM tel que strlen, strcmp, strncmp,
strpbrk, strindex, etc...
• Fournie une aide sur l'application ICIPad : Mise à niveau de certaines fonctionnalités,
création de nouvelles. Apprentissage du Javascript et de la technologie NodeJS.
Formation
Formation d’expert en technologie de l’Informatique, Epitech 2012 -
maintenant.
Licence Informatique 2012.
Faculté de Versailles, Paris Ile-de-France Ouest, France 2008 - 2012.
Baccalauréat Scientifique, Brevet des Collèges.
Compétence Techniques
Avancées : C / C++ / C# / Orienté Objets / Algorithmies /
Théorie des langages / Orienté Objet / Java / Unix / Ocaml
Git / Mercurial / SVN / MySQL.
Débutant : Lisp / PHP / HTML / CSS / Python / ASM
Langues parlées
Français / Anglais.
Intérêts
Informatique / Cuisine / Poker.
Références
Références disponibles sur demande.