Optimiser des applications informatiques
Appréhender et construire des algorithmes
Cette compétence vise à développer la capacité à analyser, concevoir et optimiser des algorithmes pour améliorer les performances des applications informatiques. Elle couvre la comparaison d'algorithmes, l'analyse de leur complexité, et l'implémentation de solutions optimisées.
Analyser un problème avec méthode
Objectif de ce point
Être capable de décomposer un problème complexe en sous-problèmes plus simples et d'identifier les étapes de résolution méthodique.
Décomposition méthodique - Initialisation du graphe MPM
Pourquoi cette SAE valide ce point
Dans cette SAE, j'ai démontré ma capacité à analyser méthodiquement un problème complexe en le décomposant en sous-problèmes clairs et structurés. L'initialisation de notre graphe MPM a été divisée en 4 étapes distinctes pour faciliter l'implémentation et le débogage.
- Étape 1 - Chargement du fichier : Lecture des données du projet depuis le fichier d'entrée
- Étape 2 - Tri des tâches : Organisation et structuration des tâches selon leurs dépendances
- Étape 3 - Calcul des dates au plus tôt et au plus tard : Application des algorithmes de calcul temporel
- Étape 4 - Identification des chemins critiques : Détermination des tâches critiques et des marges
- Séparation claire des responsabilités pour chaque étape
- Facilitation du débogage et de la maintenance du code
- Possibilité de tester chaque étape individuellement
- Amélioration de la lisibilité et de la compréhension du processus
Preuves visuelles
Comparer des algorithmes pour des problèmes classiques
Objectif de ce point
Être capable d'évaluer et de comparer différentes approches algorithmiques pour résoudre un même problème en analysant leurs performances et leurs caractéristiques.
Tests de performance sur tableaux de 68 000 éléments
Pourquoi cette SAE valide ce point
J'ai implémenté et comparé plusieurs algorithmes de tri en effectuant des tests de performance rigoureux sur des tableaux de grande taille (68 000 cases d'entiers) pour évaluer leurs performances réelles et identifier l'algorithme optimal selon le contexte.
- Tri par sélection
- Tri à bulles
- Tri par insertion
- Tests sur 3 types de données : aléatoires, inversées, presque triées
- Mesure précise des temps d'exécution en nanosecondes
- Vérification de la correction des algorithmes après chaque tri
- Comparaison directe des performances sur la même taille de données
Preuves visuelles
Formaliser et mettre en œuvre des outils mathématiques pour l'informatique
Objectif de ce point
Être capable d'utiliser des concepts mathématiques (logique, ensembles, graphes) pour modéliser et résoudre des problèmes informatiques.
Application du théorème de Pythagore en programmation
Pourquoi cette validation démontre la maîtrise du point
Lors d'un devoir surveillé de développement, j'ai utilisé le théorème de Pythagore pour calculer des distances entre points dans un problème concret de programmation.
- Formule utilisée : distance = √((x₂-x₁)² + (y₂-y₁)²)
- Contexte : Calcul de distance entre deux points
Preuves visuelles
S'appuyer sur des schémas de raisonnement
Objectif de ce point
Être capable d'utiliser des modèles et des schémas structurés pour raisonner et résoudre des problèmes algorithmiques de manière méthodique.
Parcours en largeur pour la détection de cycles dans un graphe MPM
Pourquoi cette SAE valide ce point
Dans la SAE S2.01, j'ai appliqué un parcours en largeurpour détecter les cycles lors de l'ajout de nouvelles dépendances entre tâches.
- Problématique : Lors de l'ajout d'une dépendance "Tâche A → Tâche B", vérifier qu'il n'existe pas déjà un chemin "Tâche B → ... → Tâche A"
Preuves visuelles
Justifier ses choix et valider les résultats
Objectif de ce point
Être capable d'argumenter ses décisions algorithmiques et de valider la correction des solutions proposées par des méthodes appropriées.
Justification des choix d'algorithmes et validation par tests
Pourquoi cette SAE valide ce point
J'ai justifié mes choix d'algorithmes de tri en me basant sur des critères mesurables et j'ai validé la correction de mes implémentations par une batterie de tests rigoureuse. La conclusion de cette analyse comparative a démontré la supériorité du tri par insertion pour notre contexte spécifique.
- Tri par insertion : Identifié comme le meilleur algorithme après analyse
- Justification principale : Performances supérieures sur les tableaux partiellement triés ou de taille modérée
- Avantages mesurés : Plus rapide que le tri à bulles et par sélection dans la majorité des cas testés