Référentiel BUT — Parcours A

Mes compétences

Le BUT Informatique s'articule autour de six compétences. Chacune est détaillée ci-dessous composante par composante (AC), accompagnée de preuves concrètes issues de mes cours, projets et de mon alternance.

Le pourcentage indiqué pour chaque composante correspond à mon auto-évaluation de mon niveau de maîtrise.

01
Réaliser

Réaliser un développement d'application

Développer — c'est-à-dire concevoir, coder, tester et intégrer — une solution informatique pour un client.

CE1.01 en respectant les besoins décrits par le client 70%

Sur le projet EventSpot, j'ai développé le back-end d'une application qui répond à un besoin concret : aider un organisateur à choisir et quand monter son événement. J'ai traduit ce besoin en fonctionnalités — recherche par région, type d'événement et période, puis recommandation des meilleures villes et dates. En alternance chez TGI Maritime Software, je pars de la même façon des besoins métier décrits par l'entreprise pour faire évoluer une application de gestion interne.

EventSpot — formulaire de recherche d'événement
Projet — EventSpot
Le formulaire de recherche traduit directement le besoin : type, lieu, région, mois, durée et nombre de participants.
CE1.03 en appliquant les principes algorithmiques 65%

J'ai implémenté plusieurs algorithmes non triviaux. Le Jeu de la Vie (automate cellulaire) m'a fait manipuler une grille et des règles de voisinage avec une mise à jour synchrone de l'état à chaque génération. Sur le projet Astro, j'ai mis en œuvre des algorithmes de traitement d'image — détection d'étoiles, érosion morphologique, lissage de masque — pour nettoyer des photographies de galaxies.

Jeu de la Vie — automate cellulaire
R3.02 — Dév. efficace
Jeu de la Vie — automate cellulaire codé en C++, avec gestion du voisinage et des générations.
Astro — réduction d'étoiles sur image de galaxie
SAÉ — Astro
Réduction d'étoiles — détection, érosion et lissage de masque sur des images astronomiques (Python / PyQt).
CE1.04 en veillant à la qualité du code et à sa documentation 85%

La qualité n'est pas une option. En PHP, j'applique les normes PSR-1 / PSR-12 et je documente avec PHPDoc. En ressource Qualité de développement, j'ai mis en place une véritable chaîne d'outils pour garantir un code propre, lisible et maintenable, du formatage automatique jusqu'à l'intégration continue.

Mes pratiques qualité
  • PSR-1 / PSR-12 — normes de codage PHP
  • PHPDoc — documentation générée du code
  • ESLint / Prettier — analyse et formatage
  • Husky — hooks bloquant un commit non conforme
  • CI/CD — tests et vérifications automatisés
  • Git — versionnage et travail par branches
CE1.06 en choisissant les ressources techniques appropriées 80%

Chaque projet appelle ses propres outils, et je choisis la techno selon le besoin plutôt que de forcer un seul langage. Une API REST pour un jeu de cartes Pokémon ? Node.js, documentée sous Swagger. Une application mobile de messagerie ? Flutter. Un site web de gestion ? PHP. De la programmation système et des sockets ? Le langage C. Cette polyvalence me permet de prendre la ressource la plus adaptée à chaque contexte.

API Pokemon Cards documentée sous Swagger
R4.01 — Node.js
API Pokémon Cards — endpoints REST (GET / POST / PATCH / DELETE) documentés avec Swagger / OpenAPI.
Application mobile de messagerie en Flutter
R4.11 — Dév. mobile
Application de messagerie — échange de messages, couleur et position GPS, développée en Flutter.
02
Optimiser

Optimiser des applications

Proposer des applications informatiques optimisées en fonction de critères spécifiques : temps d'exécution, précision, consommation de ressources.

CE2.01 en formalisant et modélisant des situations complexes 60%

Optimiser commence par bien modéliser le problème. Sur EventSpot, j'ai transformé une question floue — « où et quand organiser un événement ? » — en un modèle calculable : chaque ville et chaque date reçoivent un score, calculé à partir de critères météo croisés avec la région et la période choisies. C'est cette formalisation qui permet ensuite de recommander automatiquement les meilleures options.

EventSpot — villes recommandées et scores
Projet — EventSpot
Villes recommandées — chaque destination affiche un score calculé à partir des moyennes météo du mois choisi.
CE2.02 en recensant les algorithmes et les structures de données usuels 60%

En ressource Développement efficace, j'ai travaillé les structures de données usuelles — tableaux, collections, dictionnaires, arbres — et appris à choisir la bonne pour chaque besoin. Le Jeu de la Vie repose ainsi sur une grille (matrice) d'états : c'est cette structure qui conditionne la simplicité du parcours du voisinage et de la mise à jour de chaque cellule à chaque génération.

Jeu de la Vie — grille d'états
R3.02 — Dév. efficace
Jeu de la Vie — la grille de cellules est la structure de données centrale du programme.
CE2.03 en s'appuyant sur des schémas de raisonnement 60%

Face à un traitement complexe, je décompose le problème en étapes claires plutôt que de tout résoudre d'un bloc. Le pipeline de réduction d'étoiles du projet Astro illustre ce raisonnement : chaque étape a un rôle précis et alimente la suivante.

01
Détection

Repérage des étoiles selon leur taille et un seuil de luminosité.

02
Masque

Génération d'un masque isolant les étoiles à traiter.

03
Érosion

Réduction morphologique des étoiles sur le masque.

04
Lissage

Adoucissement du masque pour une fusion naturelle.

05
Validation

Comparaison visuelle de l'image d'origine et du résultat.

CE2.04 en justifiant les choix et validant les résultats 70%

Une application optimisée ne se décrète pas, elle se mesure. Sur Astro, j'ai exposé les paramètres de traitement sous forme de réglages (taille des étoiles, seuil de détection, érosion, lissage) et je compare en permanence l'image d'origine et le résultat final pour valider visuellement — l'outil affiche le nombre d'étoiles détectées. Sur EventSpot, le classement des villes et des régions matérialise et justifie les recommandations issues du score.

Astro — réglages de traitement et comparaison avant/après
SAÉ — Astro
Réglages & comparaison — paramètres ajustables et image « Originale » vs « Finale » pour valider le résultat.
EventSpot — classement des destinations par score
Projet — EventSpot
Classement des destinations — les villes sont ordonnées par score, ce qui justifie la recommandation.
03
Administrer

Administrer des systèmes informatiques communicants complexes

Installer, configurer, mettre à disposition, maintenir en conditions opérationnelles des infrastructures, des services et des réseaux, et optimiser le système informatique d'une organisation.

CE3.01 en sécurisant le système d'information 75%

La sécurité guide mes choix d'administration. Sur mon homelab auto-hébergé, je n'expose aucun service directement sur Internet : l'accès distant passe par Tailscale, un réseau privé chiffré. Un Pi-hole filtre le trafic DNS (blocage des traceurs et publicités) à l'échelle du réseau. Côté bases de données, j'applique le principe du moindre privilège — un utilisateur dédié par projet, restreint à sa seule base, sans droits globaux.

Mesures de sécurité mises en place
  • Tailscale — accès distant chiffré, zéro port ouvert
  • Pi-hole — filtrage DNS à l'échelle du réseau
  • Conteneurs Docker — isolation des services
  • Moindre privilège — un utilisateur SQL par base
CE3.03 en appliquant les normes en vigueur et les bonnes pratiques architecturales et de sécurité 75%

J'organise mes services selon de bonnes pratiques d'architecture. Sur le homelab, chaque service tourne dans son propre conteneur Docker (isolation), ce qui simplifie le déploiement et limite la surface d'attaque. En ressource Réseau, j'ai conçu et configuré des réseaux d'entreprise sous Cisco Packet Tracer (routeurs, switchs, sous-réseaux).

Architecture du homelab — serveur Ubuntu Server auto-hébergé
Accès distant : Tailscale (chiffré) Filtrage réseau : Pi-hole (DNS)
Services conteneurisés — Docker
ImmichPhotos
n8nAutomatisation
OllamaLLM local
AnythingLLMAssistant RAG
CE3.02 en offrant une qualité de service optimale 60%

Offrir une bonne qualité de service, c'est aussi comprendre comment les ressources sont partagées. En ressource Système, j'ai étudié l'ordonnancement des processus (FIFO, SJF, tourniquet, priorités) pour minimiser le temps d'attente et de réponse. Cette logique de service se retrouve dans le serveur du Pendu : un processus serveur gère la partie et dialogue avec plusieurs clients via des sockets.

Ordonnancement des processus — diagramme et temps d'attente
R3.05 — Système
Ordonnancement — comparaison des politiques et calcul des temps moyens d'attente et de réponse.
Pendu en C — serveur et clients via sockets
SAÉ — Socket
Pendu en réseau — un serveur en C dialogue avec deux clients (Maître / Devineur) via des sockets.
CE3.04 en assurant la continuité d'activité 45%

La continuité d'activité, c'est garantir qu'un service reste disponible même en cas de panne. Lors de la SAÉ Virtualisation, nous avons déployé un Docker Swarm réparti sur plusieurs VM hébergées sur différents serveurs. Lorsqu'une VM est coupée ou qu'un serveur tombe, Swarm relance automatiquement les services concernés sur un autre nœud, sans interruption pour l'utilisateur.

Docker Swarm — réparti sur plusieurs VM / serveurs
Nœud A
● service actif
Nœud B
✕ hors service
Nœud C
↻ service repris
Quand une VM ou un serveur tombe, Swarm relance automatiquement le service sur un nœud sain — la continuité est assurée.
04
Gérer

Gérer des données de l'information

Concevoir, gérer, administrer et exploiter les données de l'entreprise, et mettre à disposition toutes les informations nécessaires à un bon pilotage de l'organisation.

CE4.01 en respectant les réglementations sur la vie privée et la protection des données personnelles 80%

Manipuler des données, c'est aussi les protéger. Dans mes applications, les données personnelles (e-mail, identifiants) sont traitées avec précaution : les mots de passe ne sont jamais stockés en clair mais hachés, et l'accès aux données est protégé par authentification. Le modèle d'EventSpot isole clairement les utilisateurs et leurs contributions, dans l'esprit du RGPD (minimisation, finalité).

Bonnes pratiques appliquées
  • Hachage des mots de passe (jamais en clair)
  • Authentification requise pour l'accès aux données
  • Minimisation — seules les données utiles sont collectées
  • Accès restreint par utilisateur et par finalité
CE4.02 en respectant les enjeux économiques, sociétaux et écologiques du stockage, et les différentes infrastructures 55%

Le choix d'une infrastructure de stockage n'est jamais neutre. J'ai manipulé différents types de bases de données et compris leurs usages respectifs, et mon homelab auto-hébergé m'a fait mesurer concrètement les arbitrages entre cloud, serveurs locaux et consommation de ressources.

Relationnel

Données structurées et fortement cohérentes, idéales pour la gestion métier.

PostgreSQLDB2
NoSQL

Souplesse du schéma et montée en charge, exploré en ressource NoSQL avec Compass.

MongoDB
Hébergement

Arbitrage cloud vs auto-hébergement, coût et empreinte des ressources.

HomelabDocker
CE4.03 en s'appuyant sur des bases mathématiques 45%

Derrière chaque requête se cache un socle mathématique. Le langage SQL repose sur l'algèbre relationnelle (sélection, projection, jointure) et la théorie des ensembles. La conception d'un schéma s'appuie sur les dépendances fonctionnelles pour aboutir à un modèle normalisé. Et l'exploitation des données passe par l'agrégation statistique — moyennes, comptages — comme les moyennes météo qui alimentent le score d'EventSpot.

Fondements mobilisés
  • Algèbre relationnelle — sélection, projection, jointure
  • Théorie des ensembles — opérations sur les données
  • Dépendances fonctionnelles — normalisation du schéma
  • Agrégation statistique — moyennes et comptages
CE4.05 en assurant la cohérence et la qualité 70%

Des données fiables passent par une conception rigoureuse et des garde-fous automatiques. On a conçu le modèle relationnel d'EventSpot (entités, relations, cardinalités) pour garantir l'intégrité des données. Surtout, on a mis en place des triggers PL/pgSQL : à chaque insertion d'avis ou d'événement, le trigger crée un log et recalcule automatiquement les classements des villes, régions et événements — la donnée reste cohérente sans aucune intervention manuelle.

EventSpot — modèle conceptuel de données
Projet — EventSpot
Modèle conceptuel de données — entités, relations et cardinalités pensées pour l'intégrité.
Classements recalculés par trigger PL/pgSQL
R3.07 — SQL / PL/pgSQL
Classements automatiques — un trigger recalcule le classement à chaque nouvelle note.
05
Conduire

Conduire un projet

Satisfaire les besoins des utilisateurs au regard de la chaîne de valeur du client, organiser et piloter un projet informatique avec des méthodes classiques ou agiles.

CE5.04 en adoptant une démarche proactive, créative et critique 65%

Conduire un projet, c'est savoir analyser et décider. Lors de la SAÉ Entreprise, nous devions piloter une société fictive en faisant les choix les plus rentables — une démarche critique, tournée vers la chaîne de valeur. En management des SI, j'ai modélisé des processus métier en BPMN (Bizagi) pour les analyser et identifier points de décision et axes d'amélioration.

Processus métier modélisé en BPMN avec Bizagi
R3.10 — Management des SI
Modélisation BPMN — un processus de demande de remboursement analysé étape par étape (Bizagi).
CE5.02 en respectant les règles juridiques et les normes en vigueur 50%

Un projet informatique s'inscrit dans un cadre légal. En ressource Droit des contrats numériques, j'ai étudié les règles encadrant les contrats du numérique (formation du contrat, obligations des parties, responsabilités) ainsi que les enjeux de licences et de protection des données. Des notions qui guident des choix concrets sur un projet.

Notions juridiques mobilisées
  • Contrats numériques — formation, obligations, responsabilités
  • Licences logicielles — choix et implications
  • RGPD — protection des données personnelles
  • CGU — conditions d'utilisation d'un service
CE5.01 en communiquant efficacement avec les différents acteurs d'un projet 70%

Un projet réussi repose sur une communication claire entre client, utilisateurs et équipe. En ressource Analyse, nous avons conduit un projet d'application de réservation de salles pour l'IUT selon la méthode Agile Scrum : recueil du besoin sous forme de user stories (le langage de l'utilisateur), modélisation (MCD), puis suivi des tâches sur un Kanban Jira pour coordonner l'équipe sprint après sprint.

Tableau Kanban Jira du projet de réservation de salles
R3.03 — Analyse / Agile
Tableau Jira — les user stories sont suivies en colonnes (À faire, En cours, En revue, Terminé).
CE5.03 en sensibilisant à une gestion éthique, responsable, durable et interculturelle 55%

Je reste attentif à l'impact et au contexte de mes projets, sur trois plans complémentaires.

Responsable & durable

Sobriété numérique : green code, choix techniques mesurés et auto-hébergement maîtrisé.

Green codeHomelab
Pilotage du SI

Exploitation d'un ERP de bout en bout : fournisseurs, clients, stocks et commandes.

ERP Polyèdre
Interculturel

Communication et travail en équipe dans un contexte multilingue.

Anglais B2Néerlandais
06
Collaborer

Collaborer au sein d'une équipe informatique

Acquérir, développer et exploiter les aptitudes nécessaires pour travailler efficacement dans une équipe informatique.

CE6.01 en inscrivant sa démarche au sein d'une équipe pluridisciplinaire 80%

Je sais m'intégrer dans une équipe et m'aligner sur une démarche commune. Sur la SAÉ Web API, nous avons tout démarré ensemble dès le premier jour — conception du MCD, rédaction du contrat d'API et répartition des tâches — pour que chacun parte avec une vision claire. Cette base partagée permet ensuite de coder sa partie en autonomie sans se bloquer mutuellement.

Méthode de lancement d'une SAÉ
Jour 1 — tous ensemble
MCDContrat d'APIRépartition des tâches
Ensuite — chacun sa partie

Développement en autonomie, sans blocage : tout le monde sait quoi faire.

CE6.02 en accompagnant la mise en œuvre des évolutions informatiques 65%

Faciliter les évolutions d'un projet, c'est écrire du code que les autres peuvent reprendre et faire grandir. En qualité de code, j'ai appris à appliquer des design patterns (en Java) pour structurer un code maintenable et extensible. En qualité de développement, j'ai mis en place une chaîne d'outils qui sécurise chaque évolution apportée par l'équipe.

Design patterns

Des solutions éprouvées pour un code structuré, maintenable et facile à faire évoluer.

JavaPOO
Chaîne qualité

Formatage, analyse statique et automatisation pour fiabiliser chaque évolution.

LinterPrettierHuskyCI/CD
CE6.03 en veillant au respect des contraintes juridiques 55%

Travailler en équipe et en open source impose de respecter un cadre juridique : choix et compatibilité des licences logicielles, respect de la propriété intellectuelle du code, et conformité RGPD pour les données manipulées. Des réflexes abordés en droit des contrats numériques qui guident nos choix collectifs.

Contraintes prises en compte
  • Licences — choix et compatibilité (open source)
  • Propriété intellectuelle — respect du code d'autrui
  • RGPD — conformité des données manipulées
  • Attribution — crédit des contributions de l'équipe
CE6.04 en développant une communication efficace et collaborative 80%

La communication est le ciment d'une équipe. Au quotidien sur les SAÉ, nous échangeons sur Discord et coordonnons notre travail avec Git & GitHub : branches dédiées, commits clairs et fusions relues. Chacun voit ce que font les autres, et l'historique du dépôt garde une trace de chaque décision technique.

Travail collaboratif avec Git
main feature merge
Chaque fonctionnalité vit sur sa branche, est relue via une pull request, puis fusionnée sur main — l'équipe avance en parallèle sans se gêner.