Passer au contenu

IA · Solution computationnelle

Baccalauréat international · IB Diploma · Computer Science · HL · Sujet 10

Entrainer
10.1

Champ d'application et prérequis

Ce document d'apprentissage présente le travail derrière l'évaluation interne, la solution computationnelle, pour le premier examen de 2027. Tout cela relève des programmes SL et HL.

Votre enseignant vous fournira les critères d'évaluation actuels, la limite de mots et les échéances ; ce document ne les répète pas car ils figurent dans le guide IB. Il explique comment réaliser correctement chaque étape, en utilisant un projet fictif comme exemple fil conducteur.

Prérequis : Thème B, notamment la programmation B2. Le projet d'exemple est inventé à des fins pratiques.

Vocabulaire Entrainer
English Français
computational solution/ˌkɒmpjuːˈteɪʃənl səˈluːʃn/ solution computationnelle
end user utilisateur final
success criteria/səkˈses kraɪˈtɪərɪə/ critères de réussite
test plan/test plæn/ plan de test
normal data/ˈnɔːml ˈdeɪtə/ données normales
boundary data/ˈbaʊndəri ˈdeɪtə/ données limites
invalid data données invalides
AI tool outil d'intelligence artificielle
academic integrity/ˌækəˈdemɪk ɪnˈteɡrɪti/ intégrité académique
acknowledged reconnu
evaluation/ɪˌvæljuːˈeɪʃn/ évaluation
10.2

Choisir un problème

Un vrai problème avec un véritable utilisateur

Un bon projet part d'un vrai problème pour une vraie personne ou un groupe, l'utilisateur final, avec qui vous pouvez communiquer pendant le travail. « Un programme qui fait des mathématiques » n'est pas un problème ; « l'entraîneur du club d'échecs passe deux heures chaque semaine à appairer manuellement les joueurs » en est un.

Vérifiez trois points avant de vous engager :

Question Pourquoi c'est important
Puis-je parler à l'utilisateur plusieurs fois ? vous avez besoin de ses exigences et de ses retours
Cela nécessite-t-il plus que quelques lignes de code ? vous devez montrer une gamme de techniques
Puis-je terminer le projet dans le temps imparti ? un produit inachevé ne peut être testé

Exemple illustratif. L'entraîneur du club d'échecs d'une école souhaite un programme enregistrant les résultats, conservant une cotation pour chaque joueur et suggérant des appairages équitables pour les parties de chaque semaine.

Critères de réussite

Les critères de réussite sont les éléments spécifiques et vérifiables que le produit fini doit remplir. Vous les définissez avec l'utilisateur, puis vous les testez tous à la fin ; chacun doit donc être suffisamment clair pour permettre une vérification.

Critère faible Critère fort
Le programme est facile à utiliser. L'entraîneur peut saisir un résultat de match en moins de 30 secondes, avec au maximum trois clics.
Il stocke les joueurs. Le programme enregistre le nom, l'année scolaire et la cote de chaque joueur, et conserve ces données après fermeture.
Les appariements sont justes. Chaque semaine, les joueurs sont appariés de sorte qu'aucun duo ne se rencontre deux fois de suite et que les écarts de cote soient minimisés.
Il est sécurisé. Seul l'entraîneur, muni d'un mot de passe, peut modifier les résultats.

Un critère fort identifie qui, quoi et comment cela sera vérifié. Six à dix critères sont habituels pour un projet de cette taille.

10.3

Planification et conception

Décomposez avant de coder

Découpez le problème en parties, puis concevez chacune d'elles : les données, les algorithmes et les écrans.

Quatre boîtes alignées : problème énoncé, approche, preuves testées, documentation
Une solution computationnelle part d'un problème énoncé, passe par une approche et une preuve testée pour aboutir à la documentation

Exemple illustratif. Le programme d'échecs se divise en : stockage des joueurs et des résultats ; mise à jour des cotes après chaque partie ; organisation des appariements hebdomadaires ; écrans de l'entraîneur.

Partie Produit de conception
données un tableau listant les champs, leurs types de données et un exemple ; une structure de fichier ou de base de données
algorithmes un diagramme de flux ou du pseudocode pour chaque processus non trivial, tel que l'appariement
écrans un croquis de chaque écran, validé par l'utilisateur
tests un plan de test rédigé avant le codage

Un plan de test

Un plan de test répertorie chaque test, les données utilisées et le résultat attendu. Utilisez trois types de données de test :

  • données normales : valeurs typiques qui devraient être acceptées ;
  • données limites : valeurs situées à la limite de ce qui est autorisé ;
  • données invalides : valeurs qui devraient être rejetées.
Test Critère Données Type Résultat attendu
1 saisie du résultat victoire pour le joueur A normale le classement de A augmente ; celui de B diminue
2 enregistrement de l'année scolaire année scolaire 7 (la plus basse autorisée) limite accepté
3 enregistrement de l'année scolaire année scolaire 14 invalide rejeté avec un message
4 appariement 9 joueurs limite (nombre impair) un joueur reçoit une bye ; aucune paire ne se répète
5 sécurité mot de passe incorrect invalide les résultats ne peuvent pas être modifiés

Chaque test renvoie vers un critère de réussite, afin qu'à la fin vous puissiez montrer quels critères sont satisfaits.

10.4

Développement

Expliquer vos techniques

Le produit doit fonctionner, mais la rédaction doit également montrer comment il fonctionne et pourquoi vous avez choisi chaque technique. Pour chaque technique importante :

  1. nommez-la ;
  2. montrez un court extrait pertinent de votre code ;
  3. expliquez ce qu'elle fait dans ce produit ;
  4. précisez pourquoi vous l'avez choisie plutôt qu'une alternative.

Exemple d'application. L'appariement trie les joueurs par classement, puis appaire les voisins, de sorte que les écarts de classement restent faibles :

def make_pairings(players):
    """Pair (name, rating) tuples; return the pairs and the bye."""
    ranked = sorted(players, key=lambda p: p[1], reverse=True)
    bye = None
    if len(ranked) % 2 == 1:
        bye = ranked.pop()      # lowest rating sits out
    pairs = []
    for i in range(0, len(ranked), 2):
        pairs.append((ranked[i][0], ranked[i + 1][0]))
    return pairs, bye

Explication. Trier par classement place les joueurs de niveau similaire à côté les uns des autres, donc l'appariement des voisins donne les plus petits écarts de classement ; cela satisfait le critère d'équité. Avec un nombre impair de joueurs, le joueur au classement le plus bas reçoit une bye, ce que vérifie le test 4. Un appariement aléatoire serait plus simple, mais il pourrait opposer le joueur le plus fort à un débutant.

Une liste de toutes les fonctionnalités Python utilisées n'est pas une explication. Choisissez les techniques importantes, comme un tri, une recherche, un fichier ou une base de données, une validation, une classe, et expliquez-les correctement.

Utiliser le travail d'autrui

Si vous utilisez une bibliothèque, un exemple de code provenant d'un site web ou un outil IA, indiquez d'où il provient et ce que vous y avez changé. Cela relève de l'intégrité académique : tout travail qui n'est pas le vôtre doit être cité. Votre propre explication du fonctionnement du code montre que vous le comprenez.

10.5

Tests et évaluation

Tests selon les critères

Exécutez le plan de test et enregistrez la preuve : une capture d’écran ou une courte vidéo pour chaque test, avec le résultat réel à côté du résultat attendu. Un test échoué n’est pas un désastre : corrigez le code, retestez et enregistrez les deux.

Test Attendu Réel Réussi ?
3 groupe d’année 14 rejeté rejeté : « Le groupe d’année doit être compris entre 7 et 13 » oui
4 9 joueurs : un bye, aucune paire répétée bye attribué ; une paire répétée de la semaine précédente non : corrigé après vérification des paires de la semaine précédente, puis retesté

Évaluation

Une évaluation juge le produit fini par rapport à chaque critère de réussite, en utilisant les preuves de test et les retours de l’utilisateur.

Faible Fort
Le programme fonctionne bien et l’entraîneur l’aime. Critère 1 est satisfait : lors des tests, l’entraîneur a saisi les résultats en moyenne en 12 secondes (test 1). Critère 3 était partiellement satisfait : la première version a répété une paire (test 4) ; après la correction, aucune paire ne s’est répétée sur quatre semaines d’essais.

Ensuite, proposez des améliorations spécifiques, liées aux preuves : « ajouter une option pour imprimer les appariements, comme demandé dans les retours de l’entraîneur » est préférable à « ajouter plus de fonctionnalités ».

10.6

Pratique

  1. Reformulez ce critère de réussite pour qu’il puisse être testé : « Le programme doit être rapide. »
  2. Pour un critère « Le programme accepte l’âge d’un joueur de 11 à 18 », donnez une valeur normale, une valeur limite et une valeur invalide.
  3. Expliquez pourquoi le plan de test est rédigé avant le code.
  4. La rédaction d’un étudiant liste « variables, boucles, instructions if, fonctions ». Expliquez pourquoi cela rapporte peu de points et ce qui devrait être écrit à la place.
  5. La fonction make_pairings ci-dessus reçoit 6 joueurs avec les cotes 1500, 1420, 1610, 1380, 1550, 1490. Liste les paires qu’elle retourne.
  6. Un étudiant a utilisé un outil d’IA pour rédiger une fonction de validation. Indiquez ce que l’étudiant doit faire.

Réponses.

  1. Ex. : « Les appariements pour jusqu’à 40 joueurs apparaissent en moins de 2 secondes après que l’entraîneur a cliqué sur Appariement. »
  2. Normale : 15. Limite : 11 ou 18. Invalide : 10, 19, ou une valeur telle que « douze ».
  3. Il définit, à partir des critères de réussite, ce qui doit être prouvé fonctionnel, de sorte que les tests sont planifiés plutôt que choisis a posteriori pour s’adapter au produit ; il peut également orienter la conception.
  4. Il énumère des fonctionnalités sans expliquer pourquoi elles ont été utilisées ni comment elles résolvent le problème de l'utilisateur. Au lieu de cela : sélectionnez quelques techniques importantes, présentez un court extrait de code pour chacune et expliquez ce qu'elle fait dans ce produit et pourquoi elle a été choisie.
  5. Trié du plus élevé au plus bas : 1610, 1550, 1500, 1490, 1420, 1380. Paires : (1610, 1550), (1500, 1490), (1420, 1380) ; aucun bye, car 6 est pair.
  6. Reconnaissez l'outil et ce qu'il a produit, montrez ce qui a été modifié, et expliquez avec vos propres mots comment la fonction fonctionne.
10.7

Conseils d'examen

  • Choisissez un problème auprès d'un vrai utilisateur avec lequel vous pouvez consulter, et définissez dès le début des critères de succès testables avec lui.
  • Chaque critère → un test dans le plan → une preuve lors des tests → un jugement dans l'évaluation.
  • Expliquez bien quelques techniques : extrait de code, ce qu'il fait ici, pourquoi il a été choisi.
  • Reconnaissez chaque bibliothèque, source de code et outil d'intelligence artificielle.
  • Gardez à portée de main les critères d'évaluation actuels de votre enseignant et vérifiez chaque section de votre travail par rapport à ceux-ci.

Plus de sujets dans Baccalauréat international · IB Diploma · Computer Science · HL

Se connecter ou créer un compte

IGCSE, A-Level & AP