Cookie Consent by Privacy Policies Generator Rapports - Alexandre Devaux

Analyste/Développeur@CHM

Rapports

2ème master

Réalisation d'un framework de synthèse pour la théorie des jeux - Mémoire - 17.5/20

Résumé:

Il s'agit du mémoire de fin d'étude, dont le sujet porte sur l'implémentation d'un framework pour la synthèse dans la théorie des jeux et une étude théorique préalable sur la théorie des jeux.

La partie théorique a permis l'étude des aspects basiques de la théorie des jeux sur graphe, mais aussi d'aspects stochastiques comme les Processus de décisions de Markov et les Chaînes de Markov. Après cela, la théorie s'est portée sur l'étude de problématiques impliquant l'objectif de gain moyen, comme le worst case, l'expected value et la problématique (nouvellement énoncée au moment d'écrire ces lignes) du beyond worst case. Ces problématiques sont l'objet d'une étude approfondie, donnant l'intuition des problèmes de décisions les concernant ainsi que les problèmes de synthèse, tout en décrivant des algorithmes de résolutions.

Une fois la partie théorique réalisée, la partie pratique s'est attelée à la conception d'un framework pouvant contenir des modules, où chaque module implémente les fonctions nécessaires à la synthèse d'une problématique. Chaque problématique étudiée dans la partie théorique a son propre module, de base, dans le framework. Ce framework a été implémenté en C pour la partie librairie (comprenant les structures de données, les algorithmes et les tests unitaires) et en Python pour la partie "graphique" (comprenant les opérations IO, interface curses, l'interfaçage avec la librairie grâce aux ctypes...).

Le framework a été conçu de sorte que l'ajout de nouveaux modules soit le plus simple possible, aussi bien pour l'aspect graphique que la conception algorithmique dans la librairie.

Langage(s): C & Python.
Type de projet: individuel.
Apports: algorithmique, structures de données, théorie des jeux, reprise d'un projet existant.
Ressources: mémoire.
Screenshots:

Synthesis Tool - Écran d'accueil. Synthesis Tool - Options.
Synthesis Tool - Paramètres du module. Synthesis Tool - Tests unitaires (CUnit).

Portage d'une application Qt sur Android - Stage - 18/20

Résumé:

Le sujet du stage consistait à réaliser le portage d'une application Qt sur Android grâce à la technologie «Qt on Android». L'application à porter était Foren6, un outil de diagnostique pour les réseaux 6LoWPAN, développée par le CETIC. Ceci devait permettre entre autres d'agrandir le nombre de plateformes supportant l'application, tout en testant les possibilités de portage offerte par Qt. L'un des objectifs du stage était de répondre à deux questions pouvant servir aux différents services de l'entreprise :

  • Est-il possible de décliner une même application Qt pour des plateformes PC et tablettes Android, et à quel prix ?
  • Quelles contraintes faut-il fixer dès le début de projet pour faciliter le support de ces multiples plateformes ?

Langage(s): C, C++, Qt, bash...
Type de projet: individuel.
Apports: cross-compilation, scripting, développement mobile, reprise d'un projet existant.
Ressources: rapport final.
Screenshots:

Foren6 Android - Écran d'accueil. Foren6 Android - Menu contextuel. Foren6 Android - Sniff (live).

Timetable Scheduler - Projet d'analyse numérique - 18/20

Résumé:

Pour ce cours, le but était de concevoir un programme dont le core nécessite quelques réflexions concernant les algorithmes et structures de données. Ce projet a été réalisé en groupe (3 personnes) et le sujet à traiter était libre. Le choix s'est porté sur la planification de sessions d'examens, consistant à planifier des examens, dans des locaux (avec ou sans caractéristiques), pour des étudiants (et non des classes), avec un professeur responsable. Une planification est correcte lorsque toutes les contraintes sont respectées, par exemple un élève ne peut avoir deux examens en même temps, idem pour un professeur... Tout en essayant d'espacer le plus possible les examens pour que les étudiants aient la possibilité d'étudier.

Tout d'abord, nous avons consulté des articles sur le sujet pour convenir des méthodes algorithmiques à pratiquer, à savoir une approche par coloration de graphe et une seconde de type greedy pour l'espacement. Cette partie a été implémentée en C pour avoir de bonnes performances, tout en connaissant exactement la quantité de mémoire allouée par le traitement.

Ensuite, nous avons réalisé un Front-End avec Django pour l'interaction avec le core. Ceci permet à l'utilisateur de bénéficier d'une interface simplifiée pour l'utilisation des algorithmes. Étant donné que la réalisation de ce projet n'a pas nécessité la rédaction d'un rapport, quelques captures d'écran reprennent le Front-End du projet.

Langage(s): C & Python.
Type de projet: collaboratif.
Apports: algorithmique, structures de données, conception d'heuristiques.
Ressources: -.
Screenshots:

Admin - Login d'accès. Admin - Accueil. Admin - Gestion des BDDs.
Admin - Planification. Vue calendrier des examens. Informations d'un examen.

1ère master

Assemblage de fragments d'ADN - Algorithmique & bioinformatique - 16/20

Résumé:

Ce projet consistait à exploiter divers algorithmes étudiés durant le cours de bio-informatique, afin d'effectuer un assemblage de fragments d'ADN, pour approximer des séquences cibles. Pour ce faire, nous avons utilisé l'alignement semi-global, une approximation de type greedy concernant la corrélation de l'alignement des fragments 2 à 2, un alignement multiple et pour finir un consensus de ce dernier alignement.

Langage(s): Java.
Type de projet: collaboratif.
Apports: algorithmique, structures de données, bioinformatique.
Ressources: rapport final.

Étude et implémentation d'un algorithme de synthèse pour jeux d'énergie multidimensionnels - Projet - 18.5/20 - Rapport - 15.5/20

Résumé:

Projet de première master devant nous préparer à la rédaction du mémoire. Le choix de mon projet s'est porté sur un sujet fort théorique, comprenant néanmoins une partie pratique de développement. La partie théorique de ce projet consiste en l'apprentissage de concepts de la théorie des jeux sur graphe comme : les stratégies, les objectifs de jeux, ... Ainsi que la compréhension d'un algorithme de synthèse, concernant les stratégies gagnantes à mémoire finie pour les jeux d'énergie multidimensionnels qui est le cœur du projet. La pratique consiste en l'implémentation de cet algorithme en langage C, avec utilisation d'un programme principal développé en Python pour la mise en place de divers tests et analyse de résultats. Ce projet est co-dirigé par l'un des auteurs de l'algorithme.

L'intérêt d'un tel projet est multiple, tout d'abord il y a l'apprentissage d'une nouvelle matière, la théorie des jeux, approfondie dans une certaine mesure. Dans un second temps, l'implémentation d'un algorithme qui est lié à cette matière. Pour terminer, l'élaboration d'un tel projet, du commencement à l'aboutissement, est un plus indéniable qui permet de bien saisir tout l'intérêt de sa réalisation et l'impact qu'il peut avoir.

Langage(s): C & Python.
Type de projet: individuel.
Apports: algorithmique, structures de données, théorie des jeux.
Ressources: rapport final.

Étude d'un jeu de données - Datawarehousing & datamining - nc

Résumé:

Ce projet en deux parties a consisté à nous familiariser avec l'outil de machine learning Weka. Cette première phase a exploité plusieurs méthodes d'analyses sur des jeux de données simples, pour mieux appréhender les concepts de datamining. Dans un second temps, il nous a été demandé de réaliser une étude sur un jeu de données choisi par nos soins. Les données se rapportent à des informations sur du spam collecté par HP, et l'étude permet d'expliquer la classification automatique de message en spam et non-spam.

Langage(s): Weka.
Type de projet: individuel.
Apports: analyse de données, modèle de classification, datamining.
Ressources: rapport final.


3ème bachelier

Guide touristique pour Android - Projet de Génie Logiciel - 18/20

Résumé:

Ce projet a été implémenté dans le cadre du cours de Génie Logiciel. Le but de ce projet était de mener à bien le projet en établissant une planification du projet, une modélisation du logiciel, son implémentation jusqu'à sa validation par "le client". Le principe du logiciel est de permettre aux promeneurs ou visiteurs d'une ville de pouvoir consulter les points d'intérêts à proximité, voire de créer une visite guidée au sein d'une ville via leur smartphone ou tablette Android.

Langage(s): Android/Java.
Type de projet: collaboratif.
Apports: développement mobile, gestion de projet (planification, modilisation, implémentation).
Ressources: rapport de planification, rapport de modélisation, rapport final, manuel d'utilisation.

Intersections de segments pour des superpositions de cartes - Structures de données II - nc

Résumé:

Implémentation d'un algorithme permettant de calculer les intersections entre segments, en utilisant des points d'évènements (tels que les points de début et de fin des segments). Cet algorithme permet d'avoir une complexité proportionnelle avec la solution, ce qui apporte une nette amélioration des performances en regard des algorithmes naïfs. Le programme permet d'analyser soit un fichier fourni (avec des coordonnées de segments), soit de dessiner les segments directement dans le programme.

Langage(s): Java.
Type de projet: collaboratif.
Apports: algorithmique, structures de données, compréhension de problématique.
Ressources: rapport de design, rapport final.
Screenshots:

Intersection Finder - Traitement. Intersection Finder - Résultat.

Messagerie instantanée fiable sur sockets UDP - Informatique Temps Réel - 8/10

Résumé:

Pour le cours d'Informatique Temps Réel, il nous a été demandé d'implémenter un programme de messagerie instantanée (client/serveur), réalisant un transfert fiable des messages sur sockets UDP. Le langage utilisé devait être le C et répondre à certains critères décrits dans l'énoncé, comme le renvoi automatique de paquet après timeout, l'utilisation d'ACK... Le programme devait être cohérent avec des diagrammes de séquences fournis dans l'énoncé et divers scénario.

Langage(s): C.
Type de projet: collaboratif.
Apports: réseaux, développement selon spécifications (diagrammes de séquences).
Ressources: -.

Interpréteur de langage Dumbo - Compilation - 8/10

Résumé:

Dans le cadre du cours de Compilation, nous avons créé de toutes pièces un langage à interpréter nommé Dumbo, permettant de compléter des templates. Pour implémenter cet interpréteur, nous avons utilisé le langage Python qui fournit des outils via le module Ply, pour l'analyse lexicale et syntaxique. Ce langage devait être pourvu de l'assignation de variables, d'opérations sur les strings, d'opérations sur les entiers, de la gestion des boucles et des conditions simples. Pour étoffer davantage cette grammaire, nous avons ajouté la gestion des commentaires et du sinon dans les conditions.

Langage(s): Python.
Type de projet: collaboratif.
Apports: algorithmique, compilation, regex.
Ressources: rapport final.


2ème bachelier

Proxy Cache - Réseaux I - 17/20

Résumé:

Implémentation d'un proxy cache. Le but était de mieux appréhender le protocole HTTP, de constater l'impact d'un proxy cache sur la vitesse de chargement des pages et sur le trafic généré par une utilisation habituelle du navigateur.

Langage(s): Java.
Type de projet: collaboratif.
Apports: réseaux, protocole HTTP.
Ressources: rapport final.

Routage dans un réseau virtuel - Réseaux I - 16/20

Résumé:

Implémentation d'un réseau virtuel de routeurs. Le but était de mieux comprendre les routeurs utilisant le protocole de vecteur-distance pour le routage de paquet. Le réseau devait résister au lien mort ainsi qu'au "Poisoning reverse" afin d'éviter les boucles. D'autres fonctionnalités étaient d'implémenter un ping, un traceroute, un chat et une gestion d'erreurs.

Langage(s): Python.
Type de projet: collaboratif.
Apports: réseaux, protocole de routage.
Ressources: -.


1ère bachelier

Framework de jeux de plateau - Projet d'informatique - 19/20

Résumé:

Le but du projet d'informatique consiste à mettre en œuvre les concepts inculqués durant les cours de «Programmation et Algorithmique», sur un projet concret et de plus grande envergure que les exercices des travaux pratiques. L'implémentation de ce projet consiste en un framework de jeux de plateau, composé de trois jeux : morpion, puissance 4 et othello. Le programme devait comprendre des intelligences artificielles et d'autres exigences (plus simples). Pour les intelligences artificielles, des algorithmes de Min-Max ainsi qu'Alpha-Beta ont été implémentées.

Langage(s): Java.
Type de projet: collaboratif.
Apports: algorithmique, application des concepts de programmation.
Ressources: -.
Screenshots:

Games 4 All - Morpion. Games 4 All - Puissance 4.
Games 4 All - Othello. Games 4 All - Aide.