Réaliser
Niveau 1 : Développer des applications informatiques simples
S1
16.63
#4/105
S2
14.69
#7/102
Développer — c'est-à-dire concevoir, coder, tester et intégrer — une solution informatique pour un client.
Apprentissages critiques
- AC11.01Implémenter des conceptions simples
- AC11.02Élaborer des conceptions simples
- AC11.03Faire des essais et évaluer leurs résultats en regard des spécifications
- AC11.04Développer des interfaces utilisateurs
Ressources mobilisées
R1.01
Initiation au développement
Travaux réalisés
Initiation à la programmation en Java à travers l'étude des structures de données, des algorithmes de tri et de la récursivité. Découverte des tests unitaires et de leur rôle dans la validation du comportement des programmes. Introduction aux principes de la programmation orientée objet : classes, objets, encapsulation et héritage. Mise en pratique sur des exercices progressifs allant des premières méthodes jusqu'à la conception de hiérarchies de classes simples.
R1.02
Développement d'interfaces web
Travaux réalisés
Introduction au développement web statique (HTML/CSS, Bootstrap) et à la structuration sémantique des pages. Mise en pratique sur un site CV personnel. Découverte de WordPress et GitLab, avec une mise en application sur les SAE 1.05 et 1.06 : création d'un site pour la mairie d'une ville française sur plusieurs mois, gestion de versions et collaboration en équipe.
R1.10
Anglais
Travaux réalisés
Introduction au vocabulaire technique informatique en anglais, couvrant les termes essentiels du développement, des réseaux et des systèmes. Travail sur la compréhension de documents techniques et d'articles spécialisés rédigés en anglais. Développement des compétences de lecture et d'expression dans un contexte professionnel international. Sensibilisation aux enjeux de la communication interculturelle dans les équipes techniques mondiales.
AL1.01
IA 1
Travaux réalisés
Exploration des algorithmes d'apprentissage automatique appliqués à la théorie des jeux combinatoires. Implémentation d'un agent intelligent capable d'apprendre à jouer au jeu de Grundy en s'améliorant au fil des parties grâce au renforcement. Étude des fondements mathématiques du jeu (valeurs de Grundy, stratégies gagnantes) et de leur formalisation algorithmique. Travail réalisé sous forme de Notebook Jupyter interactif combinant code, visualisations et analyse des résultats.
R2.01
Développement orienté objets
Travaux réalisés
Approfondissement de la programmation orientée objet en Java à travers des projets de complexité croissante. Conception d'un serveur d'alerte multi-composants en appliquant les principes SOLID et les patterns de conception. Étude et mise en pratique des génériques Java pour écrire des structures de données et des algorithmes réutilisables et type-safe. Maîtrise des mécanismes avancés de l'héritage, du polymorphisme et des interfaces dans un contexte applicatif réel.
R2.02
Développement d'applications avec IHM
Travaux réalisés
Conception d'interfaces homme-machine en appliquant les principes d'ergonomie, d'accessibilité et d'expérience utilisateur. Réalisation de maquettes et de prototypes via des outils de wireframing pour valider les choix d'interface avant le développement. Implémentation d'applications graphiques en Java avec les bibliothèques Swing et JavaFX en suivant l'architecture MVC. Séparation claire des responsabilités entre modèle, vue et contrôleur pour produire un code maintenable et testable.
R2.03
Qualité de développement
Travaux réalisés
Approfondissement des pratiques de qualité logicielle : débogage méthodique avec Eclipse, gestion des exceptions et analyse des traces d'exécution. Mise en place de tests unitaires avec JUnit et application de la conception par contrat (préconditions, postconditions, invariants). Gestion des versions avec Git en équipe et automatisation du cycle de build avec Maven (compilation, tests, packaging). Sensibilisation aux bonnes pratiques de développement : revue de code, intégration continue et documentation technique.
R2.13
Communication technique
Travaux réalisés
Approfondissement des techniques de communication professionnelle appliquées au domaine technique. Travail sur la rédaction de documents de projet (spécifications, compte-rendus, présentations) en respectant les normes professionnelles. Développement du storytelling technique pour présenter des projets informatiques de façon claire et convaincante à des publics non-experts. Pratique des échanges en équipe, de la gestion des feedbacks et de la communication transversale dans un contexte de développement logiciel.
AL2.01
IA 2 et Cyber 2
Travaux réalisés
Découverte des enjeux de la sécurité des systèmes d'information : identification des menaces, analyse des vulnérabilités et mise en place de contre-mesures. Approfondissement de la cybersécurité appliquée à travers des exercices pratiques sur des environnements contrôlés. Introduction aux modèles d'intelligence artificielle générative et à leurs applications dans le domaine informatique. Réflexion sur les implications éthiques et professionnelles de l'IA et de la sécurité dans les métiers du numérique.
Situations d'Apprentissage et d'Évaluation (SAE)
Implémentation d'un besoin client
Jeu de Marienbad en Java : version Joueur/Joueur et version Joueur/Ordinateur avec stratégie gagnante. Réalisé en binôme.
17.00
Travaux réalisés
Jeu de Marienbad en Java (Joueur/Joueur & Joueur/Ordinateur)
Analyse réflexive
Quelles ont été mes démarches, prises de décisions, degré d'implication et d'autonomie ?
Concernant cette SAE, nous travaillions en binômes. J'ai choisi de cadrer et diriger le projet, gérer la répartition en fonction des capacités de chacun. Ainsi la démarche fut assez naturelle, j'ai commencé par m'informer pour cerner au mieux le travail à réaliser en demandant les précisions nécessaires. En même temps, nous avons commencé le développement de la version Joueur contre Joueur qui était plutôt simple dans le but de se familiariser avec le projet. Ce premier travail a été un peu désordonné le temps que nous nous organisions à travers des moyens de communication notamment, et le temps de s'accorder quant à la nature du projet.
Puis, la partie la plus longue : la version Joueur contre Ordinateur, j'ai pu proposer une répartition réfléchie et nous avons pu commencer la réalisation sans avoir besoin d'aide extérieure. Souhaitant une répartition équitable, j'ai proposé à mon camarade moins expérimenté de commencer la partie la plus longue, puis je reprendrai et corrigerai en abordant les différents points avec lui dans le but qu'il progresse et puisse répondre aux éventuelles questions lors de la soutenance. Cette décision nous a mis face à des difficultés concernant la communication, mais je pense que c'était la meilleure solution. À mon sens, il s'agit d'un projet mais avant tout d'un exercice. Le but est de progresser en appliquant les éléments vus dans différents cours.
Enfin, j'aborderai l'utilisation de l'IA pour un tel projet que j'ai désapprouvé, contrairement à mon camarade. J'ai pensé qu'il était mieux de réaliser entièrement nous-mêmes ce projet simple permettant de consolider nos bases en développement Java pour la suite du cursus.
Quelles ressources ai-je choisies et combinées pour réaliser mes tâches et résoudre les problèmes rencontrés dans cette SAÉ ?
Pour ce projet, nous avons principalement nécessité la mobilisation des ressources dédiées au développement Java et des ressources mathématiques. Elles nous ont permis de réaliser le travail demandé et surmonté d'une part les problèmes d'implémentation pour les ressources de développement et d'autre part ceux de conception pour certaines notions mathématiques. Cependant, comme mentionné précédemment, la communication fut cruciale pour ce projet en groupe. De plus, nous avons pu mobiliser des connaissances de la ressource R1.04 : introduction aux systèmes d'exploitation et à leur fonctionnement car le projet a été développé sur Linux.
Justifiez la maîtrise des apprentissages visés, ainsi que la prise en compte des composantes essentielles pour le développement de vos compétences.
Au cours de ce projet, nous avons entrepris de répondre à 3 apprentissages critiques.
AC11.01 | Implémenter des conceptions simples : Comme évoqué précédemment, la première étape de notre projet a été le développement de la version Joueur contre Joueur. Cette version a permis d'implémenter une structure de base simple du jeu de Marienbad en Java, en respectant les principes fondamentaux de la programmation (gestion des entrées utilisateurs, affichage des résultats, boucle de jeu, etc.). Cela nous a permis de nous familiariser avec le projet avant d'aborder une version plus complexe.
AC11.02 | Élaborer des conceptions simples : Pour la version Joueur contre Ordinateur, nous avons dû réfléchir à une stratégie algorithmique permettant à l'ordinateur de jouer de manière plus ou moins optimisée. La conception du programme a donc nécessité une réflexion sur le jeu et la stratégie gagnante guidée par les documents fournis pour le projet.
AC11.03 | Faire des essais et évaluer leurs résultats en regard des spécifications : Tout au long du projet, nous avons effectué des tests réguliers pour nous assurer du bon fonctionnement du programme. Des dizaines de parties ont été réalisées dans ce but d'améliorer et de vérifier toutes les possibilités. Nous avons comparé nos résultats avec ceux attendus et apporté des ajustements en conséquence. L'intégration de la version Joueur contre Ordinateur a nécessité beaucoup de vérifications pour ajuster les règles de jeu et affiner le développement d'une stratégie gagnante.
Enfin, ce projet m'a permis de développer principalement la compétence "Réaliser" pour laquelle nous avons démontré un début d'acquisition de 3 apprentissages critiques : la capacité à concevoir, implémenter et tester un programme répondant aux besoins spécifiés. Cependant, d'autres compétences ont aussi été impliquées, notamment "Collaborer" et "Conduire" en lien avec la gestion de projet et la communication. La nécessité de travailler en binôme a mis en évidence l'importance d'une bonne organisation et d'une communication efficace pour assurer une progression fluide du travail.
Quelles ressources me manquent pour atteindre la compétence abordée par cette SAÉ ? Si c'était à refaire qu'est-ce que je changerais ?
Dans un premier temps, je pense que nous avons mal géré notre temps et trop peu mis à profit les heures en classes dédiées au projet. Aussi, dans l'idéal, il aurait été plus simple d'avoir un coéquipier avec les mêmes valeurs que moi, notamment concernant l'IA qui nous a finalement mis des bâtons dans les roues plus qu'autre chose. Il me paraît important de savoir bien s'entourer, ou du moins avec des personnes avec qui on partage certains points de vue parfois cruciaux. Cependant, on n'a pas souvent le choix des personnes avec qui on travaille. Ainsi, il faut aussi savoir faire preuve de souplesse et d'adaptation en ce qui concerne la gestion de projet. Cette expérience était donc très instructive et je ne suis pas sûr de vouloir changer ce facteur. En résumé, je pense que nous avions tous les éléments techniques pour réussir, mais que c'est la partie gestion de projet et communication qui a manqué et qui méritait d'être étudiée avec plus d'attention si ce projet était à refaire.
Développement d'une application
Projet SECOURS 2030 : développement d'une application Java complète pour la gestion des secouristes aux JO 2030, avec maquettage Figma, IHM JavaFX et soutenance. Chef de projet.
16.00
L'analyse réflexive complète est disponible sur la page projet dédiée.
Voir le projet →Démarche Portfolio
Conception et rendu du portfolio de compétences S2.
15.00
Bilan de compétence
Les cours d'initiation au développement Java, de POO et de qualité logicielle ont posé les fondations : récursivité, structures de données, tests unitaires avec JUnit, gestion de version avec Git. En SAE 1.01, ces bases ont été appliquées directement : implémenter deux versions du jeu de Marienbad, dont une avec stratégie gagnante, validée par des tests. La SAE 2.01 a ajouté la dimension interface : maquetter une IHM avec Figma, la développer en JavaFX et l'intégrer à la logique d'affectation de SECOURS 2030. L'ergonomie et le maquettage, abordés dans les cours de développement d'applications avec IHM, étaient encore partiellement maîtrisés à ce stade et restent à travailler comme l'UX/UI en génral pour moi. Je doit encore affiner ma sensibilités aux design d'interfaces mais l'implémentation et le développement d'interfaces restent validés.