Projets
Seuls les projets liés de près ou de loin avec l’informatique sont mentionnés. Ils ont tous été réalisés dans le cadre de mes études et ne sont pas des projets personnels.
Sommaire
- 2022
- 2021
- 2020
- 2019
- Conception et implémentation du jeu de l’Othello en C – Création d’une intelligence artificielle
- Etude complète de la norme IEEE754 et programmation en Pascal de l’addition, multiplication et division des flottants
- Diverses études statistiques en Python (dont un projet)
- Programmation d’un robot suiveur de ligne en Arduino
- 2018
- 2015
2022
La reconnaissance de gestes et de postures : Le pierre-feuille-ciseaux interactif
Nombre de personnes : 4
Durée du projet : 1 semestre
Spécifications :
L’utilisateur doit pouvoir :
- Choisir un pseudonyme
- Commencer une partie de pierre-feuille-ciseaux
- Voir les résultats/les statistiques des parties précédentes
- Quitter l’application
Pendant la partie de pierre-feuille-ciseaux, il doit pouvoir :
- Donner le nombre de rounds qu’il souhaite jouer
- Faire un geste de pierre, feuille ou ciseaux
- Voir les résultats de la partie en cours
Outils utilisés :
- Python
- La librairie MediaPipe. Elle permet de détecter 21 points de repère 3D d’une main à partir d’une seule image en temps réel.
2021
Développement d’un compagnon artificiel sur Android avec Android Studio (Java)
Nombre de personnes : Le projet est un projet qui existe depuis plusieurs années et qui est en continuelle amélioration. Il est passé de main en main au fur et à mesure des années.
Durée du projet : 1 semestre
Description du projet : L’objectif de ce projet est de développer un compagnon artificiel sur Android, capable de dialoguer avec l’utilisateur. Ce compagnon est incarné par un personnage virtuel, utilise la retranscription et la vocalisation Android pour interagir avec l’utilisateur, possède un modèle de dialogue basique embarqué et intègre des fonctionnalités d’assistance et de compagnonnage (exemple : jouer à un jeu).
Ce que j’ai développé : Je me suis concentrée sur l’aspect de reconnaissance d’expressions du visage chez l’utilisateur, à savoir détecter si l’utilisateur a les yeux ouverts, sourit, hoche la tête pour dire oui ou bien fait un signe négatif de la tête. Le code que j’ai produit n’est pas relié à l’agent via une activité mais possède sa propre activité. Il pourra donc être réutilisé par la suite pour l’intégrer au compagnon.
Comme je devais travailler avec la caméra du téléphone pour la reconnaissance d’expressions, j’ai implémenté d’abord une première activité qui permet d’accéder à l’appareil photo, prendre une photo et l’enregistrer dans un dossier temporaire pour ensuite l’afficher sur le téléphone. Pour la partie reconnaissance des points du visage, j’ai utilisé la partie FaceDetection de la librairie ML Kit.
Après avoir implémenté cette librairie sur une image, je l’ai fait sur un flux vidéo pour reconnaître les expressions du visage en mouvement.
Développement d’un agent assistant web en Javascript/jQuery (front) et PHP (back) pouvant s’intégrer à n’importe quelle page web statique
Nombre de personnes : Le projet est un projet qui existe depuis 8 ans et qui est en continuelle amélioration. Je suis seule pour développer mais chaque semestre depuis 8 ans, deux personnes s’occupent en même temps du développement (pas ensemble).
Durée du projet : 2 semestres (2020/2021)
Description du projet : L’agent doit avoir un comportement propre, même en cas d’absence d’interaction avec l’utilisateur, afin de donner une impression de vie. Il a également des capacités de réaction aux événements (clics, boîtes de dialogue, …) pouvant être traitées en ligne ou avec une requête distante. Une séparation front (javascript/jQuery) et back (PHP) a déjà été faite afin de faciliter l’ajout de fonctionnalités pour un utilisateur non expert (associer une animation à un événement, créer et combiner des animations, etc.)
De nouvelles fonctionnalités devront être ajoutées parmi les suivantes (liste non exhaustive) : amélioration du système de combinaison d’animation ; amélioration de l’interface de paramétrage ; gestion du dialogue, etc.
Ce que j’ai développé :
- Mise en place d’un système d’authentification pour accéder à l’agent web
- [Le reste à venir ….]
2020
Création d’un site de vente en ligne en Java EE (Base de données en MySQL)
Nombre de personnes : 2
Description du projet : L’objectif de ce projet est de réaliser un site web en JEE avec une base de données SQLite/MySQL et des fonctionnalités asynchrones (AJAX), depuis sa spécification jusqu’à son implémentation concrète, permettant de mettre en œuvre un site de vente en ligne. Ci-dessous, une liste non exhaustive des différentes fonctionnalités que l’on peut choisir de mettre en place.
- Création/gestion de comptes
– création/édition d’un compte (identité, adresse, e-mail, pseudo, etc.) ;
– un compte administrateur ayant la possibilité de modifier le contenu du site en ligne. - Fonctions disponibles
– plusieurs types de connexion possibles : abonné, simple visiteur, administrateur, modérateur, etc ;
– consultation de produits ;
– mises en vente de produits ;
– messagerie pour obtenir des informations ;
– système de paiement (simulé). - Recherche d’objets
La recherche d’objets pourra être multicritères :
– type de produit ;
– prix ;
– par mot-clef/catégorie. - Valorisation des comptes
Il existe plusieurs systèmes possibles de valorisation des comptes :
– système de commentaires par produit (avec une note) ;
– points en fonction du nombre de ventes/achats ;
– système permettant de gérer différents vendeurs.
Vidéo de présentation du projet : La vidéo de présentation doit présenter un enregistrement dynamique de l’application développée pour le projet, accompagnée d’un enregistrement vocal décrivant les fonctionnalités présentées
Étude et codage du code bilitère et du code de Barn en Python
Nombre de personnes : 2
Sujet du projet : A venir
Création d’un jeu d’aventure en Java
Nombre de personnes : 2
Description du jeu : La zone de jeu est constituée de pièces reliées par des portes pouvant être verrouillées. Des personnages arrivent dans les pièces au sein desquelles certains objets pourront être ramassés. Certains objets peuvent être utilisés par les personnages sur eux même, ou sur d’autres objets. Certains éléments du jeu évoluerons au cours du temps en exécutant des actions propres à leur comportement.
Création d’un « logiciel » de compression/décompression en Python
Nombre de personnes : 1
Description du projet : Compresser et décompresser des données.
Analyse en composante principale de données en Python
Nombre de personnes : 2
Sujet du projet : Analyse en composante principale : approche factorielle, principes, réduction/visualisation/interprétation, exemples d’utilisation
2019
Conception et implémentation du jeu de l’Othello en C – Création d’une intelligence artificielle
Nombre de personnes : 5
But du jeu : Le but du jeu de l’Othello (aussi appelé Reversi) est le suivant : avoir le plus de pions de sa couleur à la fin de la partie. Les joueurs jouent à tour de rôle et doivent poser un pion à chaque tour. Ce pion doit nécessairement encadrer un ou plusieurs pions adverses avec un pion de la couleur du joueur qui joue (pion qui aura déjà été placé lors d’un tour précédent). Les pions encadrés sont alors retournés pour devenir de la même couleur que le joueur qui vient de jouer.
Description du projet : L’objet du projet est donc de réaliser entièrement ce célèbre jeu de l’Othello.
Déroulement du projet : Nous avons adopté la méthodologie du cycle en V : de l’analyse aux tests en passant par la spécification, la conception préliminaire, la conception détaillée et l’implémentation. Nous avons donc dû développer entièrement le jeu de A à Z et vérifier chaque fonction à l’aide de tests unitaires. Nous avons également dû créer une intelligence artificielle. Notre IA a utilisé l’algorithme de l’Alpha Bêta avec une profondeur de 7 (la fonction d’évaluation étant une fonction prenant en compte de nombreuses stratégies de l’Othello). Nous avons utiliser GIT pour la gestion du projet.
Conclusion du projet : La réalisation de ce projet m’a permis d’apprendre à utiliser des outils tels que Git, CUnit et Doxygen, qui me seront très sûrement aussi utiles plus tard. Ensuite, ce projet a été l’occasion de pratiquer le langage C. J’ai aussi progressé non seulement individuellement, mais aussi d’un point de vue du travail de groupe. Il est indispensable d’être collectivement organisé, d’écouter les points de vue de chacun et d’apprendre à gérer les éventuels désaccords. Enfin, il s’agit du premier projet où j’ai réalisé un très grand nombre de tests unitaires ainsi que du premier projet où j’ai utilisé GIT et enfin, du premier projet où j’ai dû faire de la documentation. Ce projet m’a donc vraiment permis de découvrir et de me familiariser avec les outils indispensables en informatique.
Etude complète de la norme IEEE754 et programmation en Pascal de l’addition, multiplication et division des flottants
Nombre de personnes : 2 pour le premier projet puis 1 pour le second
Déroulement du projet : Cette étude a été divisée en deux projets :
- Le but du premier projet a été de reconstruire l’addition (et soustraction) et la multiplication des flottants en Pascal selon la norme IEEE754. Pour ce faire, il ne fallait bien sûr, pas utiliser d’opérateur mathématique (symbole + ou *) mais uniquement la représentation des entiers et des réels en machine. Nos programmes se doivent d’être clairs, précis et surtout à des coûts moindres, c’est pourquoi nous avons dû calculer le coût de chaque fonction et procédure utilisées.
- Le but du deuxième projet est de reconstruire la division des flottants en Pascal selon la norme IEEE754. Nous avons pour cela utiliser l’algorithme de Newton ainsi qu’un stockage de valeurs nécessaires dans la ROM.
Dans les deux projets, nous avons dû prendre en compte les différents cas particuliers.
Conclusion du projet : Ces deux projets m’ont permis d’utiliser pour la première fois le langage Latex que je ne connaissais au début pas (et que j’utilise maintenant très souvent). Ils m’ont aussi permis d’améliorer ma capacité de raisonnement car en plus de l’informatique, il y avait aussi beaucoup de mathématiques. Et enfin, j’ai pu m’améliorer en Pascal, tout en apprenant à faire des programmes le moins coûteux possible. D’abord en groupe de deux, puis toute seule, j’ai aussi appris à gérer mes problèmes seule et à ne pas reposer sur les autres.
Diverses études statistiques en Python (dont un projet)
Avant la réalisation du projet, de nombreux TP ont été réalisés afin d’étudier statistiquement diverses données. Puis, un projet a été fait avec les données que nous voulions.
Nombre de personnes : 2
Description du projet : Le sujet que j’ai choisi porte sur les Pokémon, qui sont des créatures qui vivent en harmonie avec les humains et qui possèdent des aptitudes spéciales selon leur type. Les questions auxquelles nous avons répondu (en plus des études de base) lors de ce projet sont les suivantes : Existe-t-il des liens entre les différents types ? La taille et le poids du Pokémon dépendent-ils de son type ? Comment prévoir une caractéristique d’un Pokémon en fonction des autres ? Peut-on les prédire à partir de son type ? Le poids a-t-il une influence importante dans la puissance du Pokémon ?
Déroulement du projet : Les études statistiques ont été réalisées en Python. Des études de base ont été faites sur les Pokémon (exemple : tableau, diagramme, histogramme, boîtes à moustaches), des ACP (Analyses en Composantes Principales) ainsi que des régressions linéaires et des tests (test de Student et test du chi2).
Conclusion du projet : Nous avons réussi à établir un lien entre types et statistiques du Pokémon. Nous avons également pu établir des formules pour prédire une caractéristique en fonction des autres selon le type. Tous les résultats que nous avons obtenus peuvent s’avérer utiles pour développer une bonne stratégie de jeu. Finalement, j’ai pu élargir mes connaissances sur l’étude de données statistiques mais j’ai aussi pu les mettre en pratique sur un sujet qui me passionne.
Programmation d’un robot suiveur de ligne en Arduino
Nombre de personnes : 4
Description du projet : Le but de ce projet était de construire entièrement un robot capable de suivre une ligne de couleur. Les différents composants de ce robot sont par exemple la carte Arduino, le moteur ou encore le capteur permettant de détecter la ligne.
Conclusion du projet : Ce projet a été pour moi un moyen de mettre en application les connaissances que j’ai acquises en cours d’électronique. Même si le résultat final n’est pas celui que j’attendais (le robot n’a à la fin du projet pas fonctionné), j’ai appris beaucoup de choses que ce soit sur l’électronique en général, sur les cartes Arduino, sur la programmation ou que ce soit sur l’organisation du projet en groupe. J’ai pu me familiariser un peu plus avec le langage Arduino que j’avais déjà vu lors de TP.
2018
Création d’un jeu Pokemon en Pascal
Nombre de personnes : 3
Principe du jeu : Des « objets » tombent aléatoirement du haut de l’écran sur l’espace de jeu, et le principe est de les récupérer avant qu’ils ne touchent le sol. Ces objets sont des Pokémon d’une rareté plus ou moins élevée. Le joueur incarne un dresseur de Pokémon qui doit attraper avec sa Pokéball les Pokemon qui tombent sur lui. S’il échoue plus de 3 fois, c’est un échec, et la partie recommence avec un score de 0. Sinon, il continue de marquer des points par Pokémon attrapé. Au bout d’un certain score, il passe au niveau de jeu suivant. Plus le niveau augmente, plus les Pokemon tombent rapidement et plus leur nombre augmente. Les Pokemon qui tombent sont répartis en 4 classes : les communs, les rares, les mythiques et les légendaires (vitesse et déplacement différents mais non détaillés ici). A partir du second niveau, les attaques de la team roquette – ennemis jurés des dresseurs de Pokémon – apparaissent. Sur un laps de temps défini qui augmente selon les niveaux, ces derniers lancent des roquettes qu’il faut éviter sous peine de perdre une vie.
Tous les scores des joueurs ainsi que les pseudos sont enregistrés dans des fichiers selon le niveau de difficulté choisi par le joueur.
Conclusion du projet : Ce projet, de part le travail en groupe qu’il a nécessité, à développer mes capacités dans de nombreuses taches, telles que le partage des tâches, l’organisation du travail, le dialogue avec mon équipe, la confrontation des idées, etc. Ce projet m’a permis de mettre en place toutes mes connaissances en informatique accumulées, ainsi que d’améliorer ma maîtrise du langage Pascal. De plus, j’ai pu monter un projet du début jusqu’à la fin de façon totalement autonome à l’aide de mon groupe. J’ai aussi appris à gérer l’utilisation des fichiers en Pascal pour l’enregistrement des scores.
Projet sur la supraconductivité (programmation en Pascal)
Nombre de personnes : 5
Description et déroulement du projet : Ce projet porte sur la supraconductivité, plus particulièrement sur l’analyse et l’interprétation d’équations de Josephson. Il a été question de comprendre le lien entre ces équations et les interactions des électrons au sein des supraconducteurs. Pour cela, nous avons effectué un travail de simplification sur ces fonctions. Une programmation en Pascal a également été nécessaire.
Conclusion du projet : Ce projet m’a permis de me familiariser au travail de groupe et à celui de la recherche. À la fin du projet, nous avons réussi à deviner l’existence d’une symétrie au niveau des jonctions de Josephson et à créer un modèle mathématique permettant d’en prouver l’existence. Cela a été traduit par le biais d’un programme informatique écrit en Pascal.
2015
Conception d’un site WEB dans le cadre des TPE de première
Ce site est privé.
Page d’accueil du site Page « 6 minutes pour comprendre »
Nombre de personnes : 3
Description du projet : Notre projet concernait le fouling et l’antifouling. Notre problématique était « : La biodiversité marine peut-elle être une source d’inspiration et de progrès techniques dans le domaine du “fouling” et des substances “antifouling” ? ». Le plan s’articulait autour de deux études de cas : la moule pour le fouling, et le fucus pour l’antifouling.
Conclusion du projet : Ce projet m’a permis de développer mes connaissances en physique et en SVT. De plus, j’ai pu réaliser mon premier site WEB à l’aide de Wix qui est une plateforme en ligne qui permet de créer des sites web. Nous avons aussi adapté ce site en version mobile puisque beaucoup de personnes utilisent de nos jours des tablettes ou des smartphones. Nous avons également réalisé un grand nombre de vidéos que nous avons publié sur notre site tout au long pour des explications en vidéo. Cela a été une très bonne expérience. Notre groupe a obtenu la super note de 20/20 pour ce TPE.