1. AC12.01 | Analyser un problème avec méthode (découpage en éléments algorithmiques simples, structure de données...) 2. AC12.02 | Comparer des algorithmes pour des problèmes classiques (tris simples, recherche...) **** 3. AC12.03 | Formaliser et mettre en œuvre des outils mathématiques pour l’informatique
<aside> 💡 Quelles ont été vos démarches, prises de décisions, degré d'implication et d'autonomie ?
</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é ?
</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é ? Si c'était à refaire que changeriez-vous ?
</aside>
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)).
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.
J’ai également utilisé l’outil SonarLint pour assurer la qualité du code en respectant les conventions de codage Java. Cet outil m’a permis de rendre mon code plus propre en me proposant des modifications apportant de la clarté et le respect des bonnes pratiques de codage.
Enfin, nous pouvons notifié l’utilisation de la documentation de l'API Java, notamment pour comprendre l'héritage de AbstractCollection et la mise en œuvre des itérateurs dans le TP sur la classe Sac. La documentation Java a également été utilisé pour d’autres problèmes durant les différents TP.