image.png

image.png

🚀 Preuves R3.02 & Alternance

Titre : R3.02 - Développement efficace : Optimisation et Structures de Données

▶︎ Les apprentissages critiques

  1. AC22.01 | Choisir des structures de données complexes adaptées au problème
  2. AC22.02 | Utiliser des techniques algorithmiques adaptées pour des problèmes complexes (par ex. recherche opérationnelle, méthodes arborescentes, optimisation globale, intelligence artificielle...)
  3. AC22.03 | Comprendre les enjeux et moyens de sécurisation des données et du code
  4. AC22.04 | Évaluer l’impact environnemental et sociétal des solutions proposées

▶︎ Analyse et réflexivité sur vos actions (à compléter max 1 page par question)

<aside> 💡 Quelles ont été vos démarches, prises de décisions, degré d'implication et d'autonomie dans la SAE et/ou dans le stage/alternance ?

</aside>

<aside> 💡 Quelles ressources avez vous choisies et combinées pour réaliser vos tâches et résoudre les problèmes rencontrés dans cette SAé ou dans le stage**/alternance** ?

</aside>

<aside> 💡 En vous appuyant sur vos traces, justifiez la maitrise des apprentissages visés, ainsi que la prise en compte des composantes essentielles pour le développement de vos compétences.

</aside>

<aside> đź’ˇ

Quelles ressources vous manquent pour atteindre la compétence abordée par cette SAé ou ce stage**/alternance**  ? Si c'était à refaire que changeriez-vous ?

</aside>

R3.02 - Développement efficace : Optimisation et Structures de Données

📌 Démarches, prises de décisions, implication et autonomie

Ma démarche dans cette matière a été guidée par la recherche de l'efficacité algorithmique et la robustesse du code. Pour chaque structure de données étudiée (listes doublement chaînées, tables de hachage, arbres binaires), j'ai suivi un processus rigoureux : analyse de la structure, définition d'une interface (ex: Liste.java ou Table.java), puis implémentation technique.

J'ai dû prendre des décisions critiques concernant la gestion des cas limites, comme l'utilisation d'une sentinelle dans les listes chaînées pour simplifier les insertions et suppressions en tête et en fin de liste. Mon autonomie s'est manifestée dans la mise en œuvre de la généricité (<E>, <T>), me permettant de concevoir des classes réutilisables quel que soit le type de données stockées. Enfin, j'ai dû choisir des stratégies de résolution de collisions pour les tables de hachage et des méthodes de rééquilibrage pour les arbres (AVL) afin de garantir des performances optimales en O(log(n)).


📌 Ressources choisies et combinées

Pour mener à bien les différents TP, j'ai combiné plusieurs ressources académiques et techniques. Tout d’abord, nous pouvons retrouver les supports de cours (R3.02) pour comprendre les notions théoriques de complexité et la structure des algorithmes (hachage, arbres ordonnés).

On retrouve ensuite l'IDE Eclipse , utilisé comme environnement de développement principal, qui m’a permis de coder et organiser les différents projets (projListeChainee, projTableHachage, etc.).

En accompagnement de l’IDE Eclipse, j’ai utilisé l'outil JUnit4, devenu indispensable pour valider chaque service offert par mes classes à travers des tests unitaires systématiques, me permettant de déterminer les différents problèmes et défauts de fonctionnement de mes projets.