École Polytechnique de Ouagadougou Classes Préparatoires (MPSI-B) Année 2025 - 2026 Projet : Algorithmique et Programmation Python Modalités Générales — Un devoir par groupe parmi les sujets proposés — La liste consolidée des groupes et numéro du devoir choisi doit être transmise exclusivement par le délégué de classe ou son adjoint au plus tard le 24 décembre 2025. — Groupes : 3 étudiants maximum. — Date limite : 25 janvier 2026, 23h59. — Envoi : par mail à [email protected] — Objet du mail : [Algorithme-Programmation Python 25-26]–Groupe X–Devoir Y — Format de rendu : — Un PDF unique incluant : 1. Rapport structuré (max 15 pages) 2. Fichier .py commenté et organisé joint au mail. — La note du projet compte pour 40% de la note toatale. Critères d’Évaluation Communs Critère Modélisation (30%) Analyse Théorique (25%) Implémentation Python (20%) Discussion et Perspectives (10%) Qualité de la Rédaction (15%) Attentes Justification du choix du modèle algorithmique, hypothèses réalistes, adéquation au contexte africain. Exactitude des raisonnements, justification des complexités, interprétation des résultats. Code propre, documenté, modulaire, robuste, validation par des tests. Recommandations pratiques, limites du modèle, améliorations possibles. Clarté, concision, respect des consignes, illustrations éventuelles. 1 Éléments Pénalisants — Retard : 00/20. — Non-respect du format de rendu (PDF + .py). — Code non commenté, non modulaire, ou non reproductible. — Absence de validation des résultats théoriques par l’implémentation. — Copie entre groupes : note 0 pour les groupes concernés. Consignes Méthodologiques (Approche "Diviser pour Régner") Chaque fonction doit être documentée selon le standard suivant : def calculer_moyenne ( notes ) : """ Calcule la moyenne d ’ une liste de notes . Parametres : notes ( list ) : Liste des notes ( entre 0 et 20) Retourne : float : La moyenne des notes """ if not notes : raise ValueError ( " La liste est vide " ) return sum ( notes ) / len ( notes ) Interdiction formelle du code monolithique : Votre programme principal (main) ne doit contenir que des appels de fonctions et des initialisations. Tous les calculs, traitements et affichages doivent être délégués à des fonctions spécialisées. Structure obligatoire : """ DEVOIR X : Titre Groupe : Noms Date : ... Ecole Polytechnique de Ouagadougou """ import random import math # FONCTIONS SPECIALISEES ( chaque fonction = un sous - probleme ) def fonction1 ( parametres ) : " " " Description claire " " " # Implementation return resultat def fonction2 ( parametres ) : " " " Autre fonction modulaire " " " # Implementation return resultat 2 # FONCTION PRINCIPALE ( chef d ’ orchestre ) def main () : " " " Orchestre l ’ execution via appels aux fonctions " " " print ( " === DEVOIR X ===\ n " ) # 1. Initialisation donnees = i n it i al i s er _ do n n ee s () # 2. Traitement via fonctions specialisees resultat1 = traiter_etape1 ( donnees ) resultat2 = traiter_etape2 ( resultat1 ) # 3. Affichage des resultats af fi ch er_ re su lta ts ( resultat1 , resultat2 ) # 4. Validation valider_resul tats ( resultat1 , resultat2 ) if __name__ == " __main__ " : main () 3 Liste des Devoirs Devoir 1 : Gestion Intelligente des Réserves d’Eau en Zone Aride Contexte : Au Sahel, la rareté de l’eau exige une gestion rigoureuse des réservoirs communautaires. Les pluies sont imprévisibles et les besoins varient selon les jours (consommation humaine, bétail, irrigation légère). Une modélisation prévisionnelle peut aider à anticiper les pénuries et optimiser les prélèvements. Problème : Modéliser l’évolution quotidienne du volume d’un réservoir de 50 000 L sur 30 jours, avec : — Apports pluviométriques aléatoires (0 à 20 mm/jour, 1 mm = 10 L/m², surface de captage 100 m²) — Consommation journalière variable (2000 L en semaine, 3000 L le week-end) — Évaporation fixe : 100 L/jour — Alerte si volume < 10% de la capacité Questions-guides : 1. Comment modéliser les apports pluviométriques de manière aléatoire mais réaliste ? 2. Quelle structure de données utiliser pour suivre l’évolution jour par jour ? 3. Comment programmer une alerte sans interrompre la simulation ? 4. Quel affichage synthétique proposer en fin de simulation ? Concepts mobilisés : Variables, boucles for, conditions if/elif/else, module random, listes. Devoir 2 : Planification des Cours dans un Lycée de Banfora Contexte : Le lycée municipal de Banfora doit organiser son emploi du temps hebdomadaire pour 10 classes, avec des contraintes de salles et d’enseignants. Une approche simple par affectation séquentielle peut être utilisée pour résoudre ce problème d’organisation fréquent dans les établissements scolaires burkinabè. Problème : Pour 10 classes, 5 salles, 15 enseignants, et 30 créneaux horaires par semaine : — Chaque classe a un nombre fixe d’heures par matière (Maths : 6h, Français : 5h, PC : 4h, SVT : 3h, HG : 3h par exemple). — Un enseignant ne peut être dans deux salles au même moment. — Une salle ne peut accueillir qu’une classe à la fois. — Préférence : éviter les trous de plus de 2 créneaux consécutifs dans l’emploi du temps d’une classe. Questions-guides : 1. Comment représenter les disponibilités (salles, enseignants, créneaux) en mémoire ? 2. Quelle stratégie d’affectation prioritaire adopter (matières avec plus d’heures d’abord, classes difficiles d’abord) ? 3. Comment détecter et résoudre les conflits d’affectation (deux classes même salle, enseignant double affectation) ? 4 4. Comment visualiser l’emploi du temps résultat (matrice classe × créneau) de façon lisible ? Concepts mobilisés : Structures de données complexes (listes de dictionnaires), contraintes multiples, affectation séquentielle, matrices de réservation. Devoir 3 : Prédiction des Rendements Agricoles au Burkina Faso Contexte : Les agriculteurs burkinabè cherchent à estimer leurs récoltes de sorgho en fonction des intrants (eau, engrais) pour optimiser leurs investissements. Une relation linéaire simplifiée peut être établie à partir de données historiques. Problème : À partir de 10 données historiques (pluviométrie en mm, quantité d’engrais en kg, rendement en kg/ha), déterminer par régression linéaire multiple manuelle les coefficients a et b tels que : rendement ≃ a × pluie + b × engrais + c Données (exemple) : Pluie Engrais Rendement 400 350 450 300 ... 50 40 60 30 ... 1200 1000 1400 900 ... Questions-guides : 1. Comment implémenter manuellement la méthode des moindres carrés pour deux variables ? 2. Quelle structure utiliser pour stocker les données ? 3. Comment valider le modèle avec de nouvelles données (split train/test) ? 4. Quelle prédiction faire pour une saison avec 380 mm de pluie et 45 kg d’engrais ? Concepts mobilisés : Listes, boucles, calculs statistiques, formules mathématiques, validation croisée simple. Devoir 4 : Système de Vote Électronique pour les Élections Communales Contexte : Pour moderniser les élections locales tout en garantissant la transparence, une mairie souhaite un prototype de dépouillement électronique sécurisé. Chaque bulletin est codé par un entier (1, 2, 3...) correspondant à un candidat. Problème : Simuler le dépouillement de 1000 bulletins aléatoires parmi 5 candidats, avec : — Détection des bulletins invalides (valeurs hors 1-5). — Comptage des voix par candidat. — Détection d’anomalies statistiques (ex : candidat avec >60% des voix déclenche une vérification). — Affichage du résultat ordonné. 5 — Simulation de fraudes possibles (bulletins majoritairement pour un candidat dans certains bureaux). Questions-guides : 1. Comment générer des bulletins aléatoires avec une petite probabilité d’erreur (5% de bulletins invalides) ? 2. Quelle structure utiliser pour compter les voix efficacement (dictionnaire) ? 3. Comment détecter et isoler les bulletins invalides ? 4. Comment trier les résultats par nombre de voix décroissant ? Concepts mobilisés : Listes, dictionnaires, random, tri, conditions, détection d’anomalies statistiques. Devoir 5 : Gestion d’une Microfinance Rurale au Mali Contexte : Les coopératives d’épargne et de crédit (CMEC) au Mali ont besoin d’outils simples pour suivre les prêts accordés aux femmes entrepreneures. Le calcul manuel des échéances et intérêts est source d’erreurs. Problème : Pour un prêt de montant M (saisi), taux annuel T (saisi), durée N mois (saisie), générer un tableau d’amortissement avec : — Mensualité constante. — Répartition capital/intérêts. — Reste dû après chaque mensualité. — Coût total du crédit. — Option de remboursement anticipé (avec pénalité de 1% du capital restant). Formule : T T × (1 + )N 12 Mensualit é = M × 12 T N (1 + ) − 1 12 Questions-guides : 1. Comment éviter les erreurs d’arrondi dans les calculs financiers ? 2. Quel format d’affichage tabulaire proposer ? 3. Comment gérer le cas où la durée n’est pas un nombre entier d’années ? 4. Comment exporter le tableau dans un fichier texte pour impression ? Concepts mobilisés : Boucles for, formatage de chaînes (f-string), calculs mathématiques (pow ou **), écriture fichier, gestion des décimales. 6 Devoir 6 : Surveillance Épidémiologique du Paludisme en RDC Contexte : Le paludisme reste endémique dans plusieurs provinces congolaises. Les centres de santé rapportent mensuellement le nombre de cas. Une analyse rapide permet d’identifier les zones et périodes critiques pour cibler les interventions. Problème : À partir d’un tableau 4 × 12 (4 provinces × 12 mois) de nombres de cas, déterminer : — La province avec le plus de cas sur l’année. — Le mois avec le pic national. — La moyenne mensuelle par province. — Détecter les mois où une province dépasse 150% de sa moyenne. — Calculer le taux d’incidence si population connue par province. Données (exemple simplifié) : Kasai : Katanga : Equateur : Kinshasa : [120 , 145 , 180 , 200 , 165 , 140 , 130 , 125 , 135 , 150 , 170 , 160] [95 , 110 , 200 , 180 , 160 , 140 , 120 , 115 , 125 , 135 , 155 , 145] [80 , 90 , 110 , 130 , 120 , 100 , 95 , 90 , 100 , 110 , 120 , 115] [200 , 210 , 220 , 230 , 210 , 200 , 190 , 185 , 195 , 205 , 215 , 210] Questions-guides : 1. Comment représenter ces données en Python ? 2. Comment parcourir efficacement un tableau 2D ? 3. Comment calculer une moyenne par ligne (province) ? 4. Comment identifier les dépassements de seuil relatifs ? Concepts mobilisés : Tableaux 2D (listes de listes), boucles imbriquées, calculs de moyennes, conditions, statistiques descriptives. Devoir 7 : Optimisation de l’Éclairage Public à Abidjan Contexte : La ville d’Abidjan cherche à réduire sa facture d’éclairage public tout en garantissant la sécurité. Les lampadaires pourraient s’allumer plus tard et s’éteindre plus tôt en fonction des heures réelles de coucher/lever de soleil. Problème : Pour un mois donné (ex : janvier), avec : — Heure de coucher : 18h30 → 18h00 (décalage linéaire sur le mois). — Heure de lever : 6h00 → 6h20 (décalage linéaire). — Durée d’éclairage fixée à 12 heures. — Considérer les jours fériés (allumage à 17h30). Calculer le planning d’allumage quotidien et la consommation totale (puissance lampadaire : 150W, tarif : 100 FCFA/kWh). Questions-guides : 1. Comment modéliser la variation quotidienne des heures ? 2. Comment convertir des heures en nombres pour les calculs ? 3. Comment gérer le cas où l’heure d’extinction dépasse minuit ? 7 4. Comment formater l’affichage des heures en HH :MM ? Concepts mobilisés : Boucles, calculs horaires, formatage, opérations sur les chaînes, gestion des dates simples. Devoir 8 : Analyse des Tendances Climatiques à Niamey Contexte : Le réchauffement climatique affecte particulièrement le Sahel. L’analyse des températures moyennes mensuelles sur 10 ans à Niamey peut révéler des tendances préoccupantes nécessitant des mesures d’adaptation. Problème : À partir de 10 listes de 12 températures (une liste par année), calculer : — La température moyenne par mois sur la décennie. — L’augmentation moyenne annuelle (régression linéaire simplifiée). — Identifier les 3 mois les plus chauds en moyenne. — Détecter les records mensuels (max absolu par mois). — Compter le nombre de mois où la température a dépassé 40°C. Questions-guides : 1. Comment organiser ces 120 valeurs (10 × 12) ? 2. Comment calculer une tendance linéaire (pente) manuellement ? 3. Comment trouver efficacement les maximums par colonne (mois) ? 4. Comment visualiser les résultats sans bibliothèque graphique (affichage texte avec caractères ASCII) ? Concepts mobilisés : Listes multidimensionnelles, statistiques descriptives, calcul de pente, recherche de max, comptages conditionnels. Devoir 9 : Gestion des Stocks d’une Pharmacie Communautaire au Sénégal Contexte : Les pharmacies de brousse au Sénégal doivent gérer rigoureusement leurs stocks de médicaments essentiels. Une rupture peut avoir des conséquences graves, mais un surstock immobilise des ressources précieuses. Problème : Simuler 30 jours de gestion pour 5 médicaments (Paracétamol, Amoxicilline, Antipaludéen, Antidiarrhéique, Vitamines) avec : — Stock initial saisi pour chaque médicament. — Ventes aléatoires journalières (0-5 unités/médicament, plus élevées pour Paracétamol). — Réapprovisionnement automatique quand stock < 10 unités (commande de 50 unités, livraison 2 jours après). — Alertes journalières pour les stocks < 5 unités (niveau critique). — Journal quotidien des mouvements. — Calcul du taux de rotation des stocks. Questions-guides : 8 1. Comment modéliser le délai de livraison (commande en attente) ? 2. Quelle structure pour suivre les stocks, commandes en attente, ventes (dictionnaires de listes) ? 3. Comment générer des ventes aléatoires mais réalistes (certains médicaments plus demandés) ? 4. Comment produire un rapport synthétique en fin de mois (indicateurs de performance) ? Concepts mobilisés : Dictionnaires, listes, random, conditions, gestion d’état, simulation d’événements discrets. Devoir 10 : Planification des Cultures Saisonnières au Bénin Contexte : L’agriculture béninoise pratique la rotation des cultures pour préserver les sols. Certaines successions sont bénéfiques (maïs → haricot), d’autres à éviter (tomate → tomate). Une bonne planification peut augmenter les rendements de 20%. Problème : Pour 4 parcelles et 4 cultures (maïs, haricot, tomate, manioc), avec des cycles de 3 mois et des incompatibilités : — Tomate ne peut pas suivre tomate (risque de maladie). — Manioc doit être suivi par haricot (fixation d’azote). — Maïs peut suivre n’importe quoi. — Objectif : maximiser la diversité des cultures sur l’année. Générer un planning annuel (4 trimestres) qui respecte les contraintes. Questions-guides : 1. Comment représenter les contraintes entre cultures (matrice de compatibilité) ? 2. Quelle approche algorithmique (gloutonne ? itérative ?) peut générer une solution valide ? 3. Comment évaluer la "qualité" d’un planning (diversité, respect des contraintes, rendement estimé) ? 4. Comment afficher le planning de manière lisible (tableau 4 × 4 avec trimestres) ? Concepts mobilisés : Listes, contraintes, recherche de combinaisons, affichage tabulaire, heuristiques simples. Devoir 11 : Système de Réservation pour les Bus Longue Distance Contexte : Les compagnies de transport interurbain en Afrique de l’Ouest (Ouagadougou-Niamey) gèrent encore souvent leurs réservations manuellement. Un système simple permettrait de réduire les erreurs et les conflits de places. Problème : Gérer les réservations pour un bus de 20 places sur 5 trajets quotidiens : — Affichage des places disponibles par trajet. — Réservation d’une place (nom du passager, numéro de téléphone). — Annulation de réservation. — Calcul du taux d’occupation journalier. — Prévention des doubles réservations. 9 — Gestion des listes d’attente quand le bus est complet. Questions-guides : 1. Quelle structure de données pour représenter les 20 places × 5 trajets (liste de dictionnaires) ? 2. Comment identifier une place (numéro) et un trajet (horaire) de manière unique ? 3. Comment gérer les annulations et les modifications ? 4. Comment sauvegarder l’état des réservations d’un jour sur l’autre (fichier JSON ou texte) ? Concepts mobilisés : Structures de données (listes de dictionnaires), gestion d’état, fonctions modulaires, persistance simple (fichiers). Devoir 12 : Prédiction de la Demande Électrique à Ouagadougou Contexte : La Société Nationale d’Électricité du Burkina (SONABEL) doit anticiper la demande pour éviter les délestages. La consommation suit des cycles journaliers (pic en soirée) et saisonniers (plus élevée en saison chaude). Une prévision même basique peut aider à la planification. Problème : À partir de consommations horaires typiques d’un jour (24 valeurs), appliquer : — Une moyenne mobile sur 3 heures pour lisser les données. — Détection des pics de consommation (> 120% de la moyenne du jour). — Extrapolation de la consommation du jour suivant en ajoutant : — Variation saisonnière (+10% en mars-avril, -5% en décembre-janvier). — Effet jour de semaine/weekend (+15% le samedi). — Estimation de la puissance nécessaire à chaque heure. Questions-guides : 1. Comment implémenter une moyenne mobile sans bibliothèque spécialisée ? 2. Comment gérer les bords (première et dernière heure) de la moyenne mobile ? 3. Comment appliquer des coefficients saisonniers selon le mois et le jour ? 4. Comment visualiser la courbe originale et la courbe prédite (avec caractères ASCII ou plot simple si matplotlib autorisé) ? Concepts mobilisés : Listes, boucles, calculs glissants, traitement de séries temporelles simples, prédiction basique. Devoir 13 : Analyse Démographique du Recensement Camerounais Contexte : Le recensement de 2025 au Cameroun a fourni des données d’âge pour un échantillon de 1000 personnes. L’analyse de la pyramide des âges informe sur la structure de la population (jeune, vieillissante) et ses besoins en éducation, santé, emploi. Problème : À partir d’une liste de 1000 âges (générés aléatoirement entre 0 et 90 ans, suivant une distribution réaliste pour l’Afrique), calculer : — Répartition par tranche d’âge (0-14, 15-24, 25-64, 65+). — Âge moyen et médian. 10 — Ratio de dépendance (jeunes + âgés) / actifs. — Taux de croissance démographique estimé (si données de naissances disponibles). — Affichage d’une pyramide simplifiée en texte (histogramme horizontal). Distribution réaliste : 40% de 0-14 ans, 25% de 15-24 ans, 30% de 25-64 ans, 5% de 65+ ans. Questions-guides : 1. Comment générer des âges réalistes (beaucoup de jeunes, peu de vieux) avec random ? 2. Comment calculer efficacement les comptages par tranche ? 3. Comment calculer la médiane sans trier toute la liste (approximation) ? 4. Comment afficher une "pyramide" avec des barres horizontales de caractères proportionnelles ? Concepts mobilisés : Listes, dictionnaires, comptages, statistiques, random avec distribution, affichage formaté. Devoir 14 : Gestion des Points d’Eau Potable en Zones Périurbaines Contexte : Les zones périurbaines de Ouagadougou (comme Tanghin, Nongr-Massom) ont des points d’eau potable dont la maintenance doit être optimisée. Chaque point a un débit journalier variable et dessert un certain nombre de ménages vulnérables. Problème : Pour 10 points d’eau dans une zone périurbaine avec : — Débit disponible (m³/jour), Nombre de ménages desservis. — Distance par rapport au centre de maintenance (km). — État du point (bon, moyen, nécessite réparation). Objectifs : 1. Identifier les points critiques (débit/ménage < 50 L/jour/personne, pour 6 pers/ménage). 2. Classer les points par priorité : d’abord état "nécessite réparation", puis points critiques, puis autres. 3. Proposer un planning de visite pour l’équipe de maintenance qui minimise les déplacements (heuristique du plus proche voisin). 4. Calculer le temps total de déplacement (vitesse moyenne : 30 km/h, temps d’intervention : 2h par point). Données exemple : Point d’eau Débit Ménages Distance État Forage A Borne B Forage C Pompe D ... 12 8 15 10 ... 80 120 60 100 ... 5 8 12 3 ... Bon Critique Moyen Réparation ... Questions-guides : 11 1. Comment calculer le ratio débit/personne pour chaque point ? 2. Comment classifier les points en priorités (3 niveaux) ? 3. Comment organiser une tournée de visite optimale sans algorithme complexe ? 4. Comment estimer le temps total de mission et le coût ? Concepts mobilisés : Listes de dictionnaires, calculs de ratios, classification, tri multi-critères, heuristiques. Devoir 15 : Surveillance de la Qualité de l’Eau du Fleuve Niger Contexte : Le fleuve Niger fait l’objet d’une surveillance régulière de sa qualité (pH, turbidité, coliformes). Des seuils réglementaires ne doivent pas être dépassés pour préserver la santé des populations et les écosystèmes. Problème : Analyser 30 jours de mesures quotidiennes (pH, turbidité en NTU) : — pH normal : 6.5-8.5 (seuil d’alerte : <6.2 ou >8.8). — Turbidité normale : < 10 NTU (seuil d’alerte : >15 NTU). Identifier : — Les jours avec dépassement d’au moins un paramètre. — Les tendances (3 jours consécutifs de dégradation du pH). — La corrélation entre pH et turbidité (calcul simplifié du coefficient de Pearson). — Suggestions de causes possibles (saison des pluies, rejets industriels, etc.). Questions-guides : 1. Comment stocker les mesures quotidiennes des deux paramètres (listes parallèles ou liste de tuples) ? 2. Comment détecter des séquences de 3 jours consécutifs avec augmentation continue ? 3. Comment calculer un coefficient de corrélation simplifié (covariance / (écart-type1 × écarttype2)) ? 4. Comment générer un rapport d’alerte lisible avec recommandations ? Concepts mobilisés : Listes parallèles, conditions, détection de motifs, calculs statistiques, génération de rapports. Devoir 16 : Calcul des Besoins en Irrigation (Office du Niger, Mali) Contexte : L’Office du Niger, au Mali, est l’une des plus grandes zones rizicoles irriguées d’Afrique de l’Ouest. Les riziculteurs doivent ajuster leurs apports d’eau selon l’évapotranspiration potentielle (ETP) calculée à partir des données météo locales pour économiser l’eau du fleuve Niger. Problème : Calculer quotidiennement l’ETP avec la formule de Hargreaves adaptée au climat malien : √ ET P = 0.0023 × (Tmoy + 17.8) × ∆T × Ra Où : 12 — Tmoy = (Tmax + Tmin )/2 (température moyenne journalière). — ∆T = Tmax − Tmin (amplitude thermique). — Ra = rayonnement extraterrestre (dépend du jour et de la latitude). Pour une semaine de données à Ségou (latitude ≈ 13◦ N), calculez : l’ETP journalière (mm), le besoin net (80% de l’ETP pour 1 ha), le volume à prélever (efficacité 70%) et le cumul hebdomadaire. Données climatiques Ra (MJ/m²/jour) : Jan Fév Mar Avr Mai Jun Jul Aoû Sep Oct Nov Déc 24.5 26.2 27.8 28.5 28.0 27.2 26.8 26.5 26.0 25.0 24.0 23.8 Questions-guides : 1. Comment adapter la formule de Hargreaves aux conditions sahéliennes ? 2. Comment prendre en compte les précipitations dans le calcul des besoins nets ? 3. Comment convertir les unités (mm → m³ pour 1 hectare) ? 4. Comment optimiser les prélèvements selon les disponibilités saisonnières du fleuve ? Concepts mobilisés : Formules scientifiques, constantes, math.sqrt, gestion des unités, conversion de mesures. Devoir 17 : Analyse des Performances Scolaires (Lycée Badala, Bamako) Contexte : Le lycée Badala souhaite automatiser l’analyse des résultats du premier trimestre pour identifier les élèves en difficulté et les matières problématiques. Problème : Pour 30 élèves et 5 matières (notes sur 20), calculer : — La moyenne générale par élève et par matière. — Identification des élèves en difficulté (< 10) et excellence (> 16). — Classement des élèves et identification de la matière la plus réussie/difficile. — Coefficient de variation par matière (dispersion). — Génération d’un bulletin type avec appréciation automatique. Données : Générer aléatoirement des notes réalistes (loi normale centrée sur 12, écart-type 3, bornées entre 0 et 20). Questions-guides : 1. Comment représenter efficacement les données (30 × 5) et les noms d’élèves ? 2. Comment calculer les moyennes par ligne et colonne sans bibliothèques externes ? 3. Comment trier les élèves sans perdre l’association nom/notes ? 4. Comment automatiser les appréciations ("Passable", "Assez bien", etc.) ? Concepts mobilisés : Tableaux 2D, tri, affichage formaté, statistiques descriptives, génération de textes automatiques. 13 Grille de Notation Détaillée Critère Modélisation (30) Analyse Théorique (25) Implémentation (20) Discussion (10) Rédaction (15) Sous-critère Adéquation au contexte africain Justification des choix algorithmiques Hypothèses claires et réalistes Exactitude des calculs Complexité algorithmique analysée Interprétation des résultats Code fonctionnel et robuste Modularité (Diviser pour Régner) Tests et validation Recommandations pratiques Limites et améliorations Clarté et structure du rapport Respect des consignes de format Qualité de la présentation Points 10 10 10 10 8 7 8 7 5 5 5 8 4 3 « Chers futurs ingénieurs de l’EPO, Ces 17 problèmes représentent des défis concrets pour nos communautés africaines. L’approche "Diviser pour Régner" est une méthode de pensée qui vous servira tout au long de votre carrière. Travaillez avec rigueur et créativité. » Cheick Amed Diloma Gabriel TRAORÉ École Polytechnique de Ouagadougou [email protected] 14