Portfolio d'apprentissage
Compétence – Réaliser ✓ Validé
Niveau 3 — Adapter des applications sur un ensemble de supports (embarqué, web, mobile, IoT…)
AC1 – Choisir et implémenter les architectures adaptées (CE1.04)
Durant le 5ème semestre, nous avons travaillé sur des projets tels que MyAvatar, dans lesquels nous avons adapté des architectures particulières en séparant le front-end ainsi que le back-end. Nous avons également travaillé sur des projets en appliquant une architecture MVC lors des 3ème et 4ème semestres. Ces architectures nous permettaient d'avoir un code plus clair, ce qui facilitait la maintenance ainsi que l'évolution de l'application. Tout cela nous permettait donc de veiller à la qualité du code et à sa documentation.
Trace 1 : Screen de notre architecture séparée en deux : Front & Back
Trace 2 : Screen de notre architecture MVCS du projet "VeryBadSplit"
AC2 – Faire évoluer une application existante (CE1.01 & CE1.04)
Durant notre deuxième année de BUT, nous avons travaillé sur un projet nommé VeryBadSplit, une application de gestion des dépenses. Dans la première phase de ce projet, nous avions pour objectif de trouver et documenter les potentiels problèmes de l'application.
Dans la deuxième phase, en respectant les besoins décrits par le client, nous avons amélioré l'application en réglant les différents problèmes : la qualité du code, l'architecture MVC, et en rendant l'interface utilisateur réactive. Nous avons également, en appliquant les principes algorithmiques, amélioré l'algorithme de calcul des dettes de l'application.
Trace 1 : Screen de notre Trello du projet "VeryBadSplit"
Trace 2 : Voici notre rendu d'analyse, expliquant tout sorte de problème trouvé dans l'application
(Consulter le pdf)AC3 – Intégrer des solutions dans un environnement de production
Durant nos années à l'IUT, nous avons travaillé sur des projets nécessitant le déploiement de l'application web sur le serveur de l'IUT, comme le projet MyAvatar, ou encore une SAÉ portant sur la réalisation d'une application web critique sur un sujet choisi. Ces expériences m'ont permis de comprendre les contraintes liées à un environnement de production réel, notamment en termes de configuration du serveur, de gestion des accès, et de bon fonctionnement de l'application une fois déployée.
J'ai également eu l'occasion de déployer mon site portfolio en utilisant GitHub Pages. Cette mise en production m'a amené à prendre en compte des aspects tels que la structure des fichiers, la compatibilité avec un hébergement statique, ainsi que l'accessibilité du site pour les utilisateurs.
Trace 1 : Vous vous trouvez actuellement sur mon portfolio hebergé avec github pages, pour lequel j'ai associé un nom de domaine que j'ai acheté.
Compétence – Optimiser ⚠ Quasiment validé
Niveau 3 — Analyser et optimiser des applications
AC1 – Anticiper les résultats de diverses métriques (CE2.02)
Au cours de notre BUT, nous avons acquis plusieurs compétences en optimisation des performances applicatives, notamment à travers nos enseignements en bases de données et en développement web.
En bases de données, nous avons étudié l'utilisation des index, qui permettent d'accélérer significativement l'exécution des requêtes en évitant un parcours complet des tables. Nous avons ainsi appris à anticiper les colonnes fréquemment interrogées afin d'y appliquer une indexation adaptée.
En développement web, nous avons également abordé la notion de pagination, qui consiste à limiter le volume de données retourné par une requête. Plutôt que de récupérer l'intégralité d'une liste d'utilisateurs ou de produits en une seule fois, cette technique permet de charger les données par blocs, améliorant ainsi les performances de l'application et l'expérience utilisateur.
AC2 – Profiler, analyser et justifier le comportement d'un code existant (CE2.03)
Dès notre première année de BUT, nous avons été initiés à l'utilisation des outils de développement intégrés aux navigateurs (DevTools). Ces outils nous ont permis d'analyser le comportement de nos pages web, d'inspecter les requêtes HTTP, de mesurer les temps de chargement et d'identifier les éventuels goulots d'étranglement impactant les performances de nos applications.
Nous avons également appris à utiliser les outils de débogage intégrés aux IDE (environnements de développement intégrés), tels que les points d'arrêt, l'inspection des variables et le suivi pas à pas de l'exécution. Ces outils nous ont permis d'analyser le comportement d'un code existant, de comprendre sa logique d'exécution et d'identifier précisément l'origine des erreurs ou des inefficacités.
AC3 – Choisir et utiliser des bibliothèques dédiées au domaine d'application (CE2.04)
Durant la 3ème année, n'ayant pas d'alternance, nous avons travaillé sur une SAÉ en intelligence artificielle dont l'objectif était de concevoir des agents capables de résoudre des jeux en 2D. Pour cela, nous avons utilisé la bibliothèque Python Gymnasium développée par OpenAI, qui propose différents environnements d'apprentissage, déterministes ou non, tels que Taxi ou CartPole-v1.
L'utilisation de cette bibliothèque nous a permis de nous concentrer sur la conception et l'optimisation des algorithmes d'apprentissage tels que SARSA ou encore MCTS, sans avoir à implémenter nous-mêmes les environnements de simulation. Ce choix illustre la capacité à sélectionner des outils adaptés au problème posé, en s'appuyant sur des solutions existantes robustes et reconnues.
Trace 1 : Voici notre rapport d'SAE, la trace se trouve à la page 77 de notre rapport, justifiant l'utilisation de la bibliothèque Gymnasium.
[Lien vers le pdf du rapport de la SAE]Compétence – Collaborer ✓ Validé
Niveau 3 — Manager une équipe informatique
AC1 – Organiser et partager une veille numérique
Durant le semestre 5, nous avons réalisé des veilles numériques sur trois thèmes. Ainsi, toutes les deux semaines, nous publiions un post sur une nouvelle informatique concernant l'un des trois thèmes choisis. Cette veille nous a permis d'apprendre à chercher, vérifier la fiabilité des sources et à consulter les actualités informatiques, ce qui est essentiel dans le monde du développement afin de rester à jour sur les changements et nouveautés.
Trace 1 : Image de notre serveur discord, ou nous avons créé pour chaque thème un fil, qui nous permet d'y stocker les liens utiles aux veilles.
AC3 – Guider la conduite du changement informatique (CE6.04)
Dans le cadre de la SAE 3.04 portant sur l'intelligence artificielle, nous avons été amenés à présenter et justifier nos choix algorithmiques auprès de différents interlocuteurs. Il s'agissait notamment d'expliquer pourquoi certains algorithmes avaient été retenus plutôt que d'autres pour améliorer les performances de notre agent dans sa prise de décision.
Cet exercice nous a conduits à adapter notre discours selon le profil de notre interlocuteur : un langage technique et précis face à des enseignants ou des pairs, et une communication plus vulgarisée et orientée résultats face à un public moins familier avec les concepts algorithmiques. Cette capacité d'adaptation est essentielle dans un contexte professionnel.
Trace 1 : Voici notre rapport d'SAE, à la page 52 et 53, ou l'on peut y trouver les algorithmes codés (alpha-beta et minimax par ex), que l'on a du justifier auprès du jury de notre SAE.
[Lien vers le pdf du rapport de la SAE]AC4 – Accompagner le management de projet informatique
Au cours de nos années à l'IUT, nous avons réalisé plusieurs projets en groupe nécessitant organisation, communication et coordination. L'un des plus formateurs fut, durant le 4ème semestre, le développement d'une application de gestion de poursuite d'études. Pour mener ce projet à bien, nous avons appliqué la méthode SCRUM, qui consiste à découper le travail en sprints. Cette approche nous permettait d'obtenir des retours réguliers sur l'état de l'application et d'ajuster notre travail pour coller au plus près des attentes du client.
Pour faciliter la communication au sein de l'équipe, nous avons mis en place un serveur Discord dédié au projet et utilisé Trello pour organiser et distribuer les tâches. Nous tenions également des réunions quotidiennes afin de synchroniser notre avancement, identifier les blocages et nous entraider face aux difficultés rencontrées.
Enfin, nous nous sommes réparti des rôles bien définis : le Scrum Master veillait au bon déroulement de la méthode, le Product Owner priorisait les fonctionnalités en fonction des besoins du client, et les développeurs concevaient, implémentaient et testaient les fonctionnalités définies à chaque sprint.
Trace 1 : Screen de notre Trello du projet "VeryBadSplit"
Trace 2 : Screen de notre serveur discord, ou l'on peut voir les différents channels créer pour une SAE de 2 ème année.
Trace 3 : Screen d'un message sur discord, ou le scrum master rappellait les tâches à réaliser dans le futur.