KutsumKutsum
Accueil
Utilisation de l'appli
Création de questions
Installation
Détails techniques
Accueil
Utilisation de l'appli
Création de questions
Installation
Détails techniques
  • Création de questions

    • ✍️ Création de questions
    • 🧮 Questions mathématiques
    • 🤝 Contribuer à la base commune de questions

🧮 Questions mathématiques

Cette page documente la validation de forme exposée dans l'éditeur de /teacher/questions pour les questions de type math. Elle complète le guide général Créer des questions.


💡 Quelle différence avec une question numérique ?

Question numériqueQuestion math
SaisieUn nombre simple (entier ou décimal)Une expression LaTeX (fraction, racine, puissance…)
ClavierClavier numérique basiqueClavier mathématique avancé (MathLive)
ValidationComparaison numérique avec toléranceComparaison symbolique + contraintes de forme
FeedbackCorrect / IncorrectCorrect / Incorrect / Bonne valeur mais mauvaise forme / Erreur classique / Ambigu
Exemple« Combien font 2 + 3 ? »« Simplifier » →

En résumé : utilisez numeric pour des résultats numériques simples, et math quand la forme de la réponse (fraction irréductible, expression développée, etc.) fait partie de la compétence évaluée.


Ce que cette page ne documente pas

Cette page décrit la validation native exposée dans l'éditeur actuel.

Elle ne documente pas en détail :

  • la compilation des validationConfig importés depuis MathALÉA
  • les détails internes du runtime de correction
  • les champs qui ne sont pas exposés par /teacher/questions

Pour le workflow général de création, revenez à Créer des questions.

Étape par étape

  1. Ouvrez l'éditeur de questions (menu enseignant → « Éditer des questions »)
  2. Sélectionnez le type « Expression math » dans le menu déroulant du type de question
  3. Rédigez l'énoncé dans le champ texte (vous pouvez utiliser du LaTeX avec \(...\))
  4. Saisissez la réponse attendue (champ « Réponse LaTeX attendue ») : c'est l'expression de référence en LaTeX
  5. Configurez la validation (voir section suivante)
  6. Renseignez les champs habituels : niveau, discipline, thèmes, difficulté, temps limite, explication

Configuration de la validation

La validation se compose de deux éléments :

Méthode de comparaison (valueCheck)

  • EXACT (par défaut) : la réponse de l'élève doit être mathématiquement égale à la réponse attendue. Par exemple est acceptée si la réponse attendue est .
  • APPROXIMATE : la réponse de l'élève doit être numériquement proche (à une tolérance près). Utile pour les approximations décimales de , , etc.

Contraintes de forme (constraints)

Les contraintes permettent d'exiger une forme particulière de la réponse. Si l'élève donne la bonne valeur mais sous une forme non conforme, l'interface affiche au minimum un état du type « Bonne valeur, forme incorrecte ». Certaines contraintes ajoutent en plus un feedback plus précis et plus pédagogique.


📐 Contraintes disponibles

IS_FRACTION — Exiger une fraction

L'élève doit répondre sous forme de fraction .

RéponseAttenduRésultat
✅ Correct
⚠️ Bonne valeur, forme incorrecte

Cas d'usage : « Écrire sous forme de fraction… », « Donner le résultat sous forme fractionnaire… »


IS_IRREDUCIBLE — Exiger une fraction irréductible

L'élève doit donner une fraction dont le numérateur et le dénominateur sont premiers entre eux.

RéponseAttenduRésultat
✅ Correct
⚠️ Bonne valeur, forme incorrecte
❌ Incorrect

Cas d'usage : « Simplifier la fraction… », « Donner la fraction irréductible… »

Quand le backend dispose des détails de réduction, le feedback élève est plus précis qu'un simple libellé générique. Par exemple, pour , il peut afficher :

Ta fraction n'est pas irréductible :

💡 Combinez IS_FRACTION + IS_IRREDUCIBLE pour exiger à la fois la forme fractionnaire et la simplification.


IS_EXPANDED — Exiger une forme développée

L'élève doit développer l'expression (pas de parenthèses factorisées).

RéponseAttenduRésultat
✅ Correct
⚠️ Bonne valeur, forme incorrecte

Cas d'usage : « Développer l'expression… », « Développer et réduire… »


IS_FACTORED — Exiger une forme factorisée

L'élève doit factoriser l'expression. Deux niveaux :

  • PARTIAL : au moins un facteur non trivial (ex : )
  • FULL_AGAINST_TARGET : la factorisation doit correspondre à la structure de la réponse attendue
RéponseAttenduNiveauRésultat
PARTIAL✅ Correct
PARTIAL⚠️ Bonne valeur, forme incorrecte
FULL✅ Correct

Cas d'usage : « Factoriser l'expression… », « Mettre en facteur… »


IS_DECIMAL — Exiger une écriture décimale

L'élève doit répondre sous forme décimale (pas de fraction).

RéponseAttenduRésultat
✅ Correct
⚠️ Bonne valeur, forme incorrecte
✅ Correct (un entier est un décimal)

Cas d'usage : « Donner la valeur décimale… », « Écrire sous forme décimale… »


REQUIRE_DECIMAL_PLACES — Exiger un nombre précis de décimales

L'élève doit donner un nombre décimal avec exactement le nombre de décimales spécifié.

RéponseAttenduPlacesRésultat
2✅ Correct (avec APPROXIMATE)
2⚠️ Bonne valeur, forme incorrecte
2⚠️ Bonne valeur, forme incorrecte

Cas d'usage : « Donner une valeur approchée à 0.01 près… », « Arrondir au centième… »

💡 Combinez avec valueCheck: APPROXIMATE et une tolérance adaptée.


IS_RATIONALIZED — Exiger un dénominateur rationalisé

L'élève ne doit pas avoir de racines au dénominateur.

RéponseAttenduRésultat
✅ Correct
⚠️ Bonne valeur, forme incorrecte

Cas d'usage : « Rationaliser le dénominateur… », « Écrire sans radical au dénominateur… »


FORBIDDEN_OPERATORS — Interdire certains opérateurs ou fonctions

L'élève ne doit pas utiliser certains opérateurs de l'AST mathématique, par exemple pour empêcher de recopier une fonction de l'énoncé au lieu de la calculer.

RéponseAttenduContrainteRésultat
interdire Arccos✅ Correct
interdire Arccos⚠️ Bonne valeur, forme incorrecte
interdire Sin, Arcsin✅ Correct
interdire Sin, Arcsin⚠️ Bonne valeur, forme incorrecte

Cas d'usage : « Calculer », « Simplifier », toute consigne où la réponse doit être évaluée et non recopiée telle quelle.

Exemple :

validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }
  constraints:
    - type: "FORBIDDEN_OPERATORS"
      operators:
        - "Arccos"

Les noms d'opérateurs doivent correspondre aux noms canoniques du moteur de calcul, par exemple Sin, Cos, Tan, Arcsin, Arccos, Arctan.


REQUIRE_STRUCTURAL_MATCH — Correspondance structurelle exacte

L'élève doit répondre avec la même structure syntaxique que la réponse attendue (comparaison via isSame() du ComputeEngine sur la forme brute). Cela va au-delà de l'égalité mathématique : l'écriture doit être identique.

RéponseAttenduRésultat
✅ Correct
⚠️ Bonne valeur, forme incorrecte
⚠️ Bonne valeur, forme incorrecte

Cas d'usage : « Recopier l'expression suivante… », « Écrire exactement… », exercices de notation.

⚠️ Contrainte stricte : à utiliser avec précaution. Même des réécritures triviales (commutativité) échouent.


SCIENTIFIC_NOTATION — Exiger la notation scientifique

L'élève doit écrire sa réponse en notation scientifique avec .

RéponseAttenduRésultat
✅ Correct
⚠️ Bonne valeur, forme incorrecte (32 ≥ 10)
⚠️ Bonne valeur, forme incorrecte

Cas d'usage : « Écrire en notation scientifique… », « Exprimer en écriture scientifique… »


REQUIRE_SIGNIFICANT_FIGURES — Exiger un nombre de chiffres significatifs

L'élève doit donner un nombre avec exactement le nombre de chiffres significatifs spécifié.

RéponseAttenduFiguresRésultat
3✅ Correct (avec APPROXIMATE)
3⚠️ Forme incorrecte (2 chiffres significatifs)
3⚠️ Forme incorrecte (4 chiffres significatifs)
—3✅ 3 chiffres significatifs (3, 4, 0 final)

Règles de comptage :

  • Les zéros initiaux ne comptent pas ( → 1 chiffre significatif)
  • Les zéros intercalaires comptent ( → 3 chiffres significatifs)
  • Les zéros finaux après la virgule comptent ( → 3 chiffres significatifs)

Cas d'usage : « Donner le résultat avec 3 chiffres significatifs… », « Arrondir à 2 CS… »

💡 Combinez avec valueCheck: APPROXIMATE et une tolérance adaptée au nombre de chiffres significatifs demandés.


📊 Types de réponse (kind)

EXPRESSION (par défaut)

Le type par défaut. L'élève donne une expression mathématique (nombre, fraction, polynôme…). La validation compare la valeur canonique.

EQUATION

L'élève donne une équation (contenant =). La validation résout les deux équations et compare les ensembles de solutions.

Réponse élèveRéponse attendueRésultat
✅ Correct (mêmes solutions)
✅ Correct
❌ Incorrect

Configuration :

validationConfig:
  kind: "EQUATION"
  responseFormat: "SINGLE"
  variables: ["x"]

💡 Le champ variables indique la variable de résolution. Par défaut x si omis.

ANTIDERIVATIVE (primitive)

L'élève donne une primitive d'une fonction. La validation vérifie que la différence entre la réponse de l'élève et la réponse attendue est une constante (indépendante de la variable d'intégration).

Réponse élèveRéponse attendueRésultat
✅ Correct
✅ Correct (constante d'intégration)
✅ Correct (constante symbolique)
❌ Incorrect

Configuration :

validationConfig:
  kind: "ANTIDERIVATIVE"
  responseFormat: "SINGLE"
  variables: ["x"]

Stratégie de validation :

  1. Symbolique (rapide) : simplifie réponse - cible et vérifie que le résultat ne dépend pas de la variable
  2. Numérique (fallback) : si la simplification symbolique échoue (identités trigonométriques, etc.), évalue la différence en plusieurs points et vérifie qu'elle est constante

💡 Le fallback numérique permet d'accepter des réponses équivalentes que le moteur symbolique ne simplifie pas (ex: vs ).

⚠️ Pour les fonctions multi-variables, seule la variable d'intégration principale est supportée. Si le moteur ne peut conclure, le résultat sera AMBIGUOUS.


📦 Formats de réponse (responseFormat)

SINGLE (par défaut)

Une seule valeur ou expression.

SET — Ensemble non-ordonné

L'élève doit donner un ensemble de valeurs (notation {a, b, c}). L'ordre ne compte pas.

Réponse élèveRéponse attendueRésultat
✅ Correct
✅ Correct
❌ Incorrect (élément manquant)
❌ Incorrect (élément en trop)

Cas d'usage : « Donner l'ensemble des solutions… », « Quels sont les antécédents… »

TUPLE — Tuple ordonné

L'élève doit donner un tuple ordonné (notation (a, b, c)). L'ordre compte.

Réponse élèveRéponse attendueRésultat
✅ Correct
❌ Incorrect (mauvais ordre)

Cas d'usage : « Donner les coordonnées du point… », « Écrire le couple solution (x, y)… »

💡 Les contraintes de forme (IS_FRACTION, IS_IRREDUCIBLE…) s'appliquent à chaque élément de l'ensemble ou du tuple.


🎯 Combinaisons courantes

Voici des combinaisons fréquentes pour différents niveaux :

Collège (6e–3e)

Exercice typeContraintesExemple
Simplifier une fractionIS_FRACTION + IS_IRREDUCIBLE →
Développer une expressionIS_EXPANDED →
Écriture décimale d'une fractionIS_DECIMAL →

Lycée (2nde–Terminale)

Exercice typeContraintesExemple
Factoriser un polynômeIS_FACTORED (FULL) →
RationaliserIS_RATIONALIZED →
Valeur approchéeAPPROXIMATE + DECIMAL_PLACES(3) →
Fraction irréductibleIS_FRACTION + IS_IRREDUCIBLE simplifié
Résoudre une équationkind: EQUATION →
Ensemble de solutionsresponseFormat: SET →
Notation scientifiqueSCIENTIFIC_NOTATION →
Chiffres significatifsREQUIRE_SIGNIFICANT_FIGURES(3) →
Coordonnées d'un pointresponseFormat: TUPLEMilieu →
Primitive d'une fonctionkind: ANTIDERIVATIVE →
Primitive avec contraintekind: ANTIDERIVATIVE + IS_EXPANDED → (développé)

📝 Format YAML (utilisateurs avancés)

Pour créer une question math en YAML :

uid: "math-fraction-001"
title: "Simplifier une fraction"
text: "Simplifier la fraction \\(\\frac{12}{18}\\)"
questionType: "math"
discipline: "mathématiques"
gradeLevels:
  - "Sixième"
themes: ["Fractions"]
author: "M. Dupont"
difficulty: 2
timeLimit: 60
targetLatex: "\\frac{2}{3}"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck:
    method: "EXACT"
  constraints:
    - type: "IS_FRACTION"
    - type: "IS_IRREDUCIBLE"
explanation: "12 et 18 ont pour PGCD 6. On divise numérateur et dénominateur par 6 : 12÷6 = 2, 18÷6 = 3."

Champs spécifiques aux questions math

ChampTypeObligatoireDescription
questionType"math"ouiDoit être "math"
targetLatexstringouiRéponse attendue en LaTeX
validationConfigobjectouiConfiguration de validation (voir ci-dessous)
sourceExpressionstringnonExpression de départ en LaTeX, utilisée pour diagnostiquer certaines erreurs de méthode

Champ optionnel sourceExpression

sourceExpression sert à décrire l'expression initiale donnée à l'élève, pas la bonne réponse finale. Ce champ est utile pour des exercices où une erreur procédurale est identifiable de manière fiable.

Exemple :

text: "Calculer \\(\\frac{1}{2}+\\frac{1}{3}\\)"
questionType: "math"
targetLatex: "\\frac{5}{6}"
sourceExpression: "\\frac{1}{2}+\\frac{1}{3}"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }
  constraints:
    - type: "IS_FRACTION"
    - type: "IS_IRREDUCIBLE"

Si l'élève répond \\frac{2}{5}, le backend peut alors reconnaître une erreur classique d'addition séparée des numérateurs et des dénominateurs, et produire un feedback plus précis.

Structure de validationConfig

ChampTypeObligatoireDescription
kindstringouiType de réponse : "EXPRESSION", "EQUATION", ou "ANTIDERIVATIVE"
responseFormatstringouiFormat : "SINGLE", "SET", ou "TUPLE"
variablesstring[]nonVariables de résolution/intégration (requis pour EQUATION et ANTIDERIVATIVE, défaut : ["x"])
valueCheckobjectnonMéthode de comparaison (défaut : EXACT)
valueCheck.methodstringoui*"EXACT" ou "APPROXIMATE"
valueCheck.absTolerancenumberoui*Tolérance absolue (requis si APPROXIMATE)
constraintsarraynonListe de contraintes de forme

🧪 Templates prêts à l'emploi

1. Calcul de fraction simple (6e)

uid: "math-fraction-simple"
text: "Calculer \\(\\frac{1}{3} + \\frac{1}{6}\\)"
questionType: "math"
targetLatex: "\\frac{1}{2}"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }
  constraints:
    - type: "IS_FRACTION"
    - type: "IS_IRREDUCIBLE"

2. Développement d'identité remarquable (3e)

uid: "math-dev-identite"
text: "Développer \\((x+3)^2\\)"
questionType: "math"
targetLatex: "x^2+6x+9"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }
  constraints:
    - type: "IS_EXPANDED"

3. Factorisation (2nde)

uid: "math-facto-diff-carres"
text: "Factoriser \\(x^2 - 9\\)"
questionType: "math"
targetLatex: "(x-3)(x+3)"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }
  constraints:
    - type: "IS_FACTORED"
      level: "FULL_AGAINST_TARGET"

4. Écriture décimale (6e)

uid: "math-decimal-fraction"
text: "Donner l'écriture décimale de \\(\\frac{3}{8}\\)"
questionType: "math"
targetLatex: "0.375"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }
  constraints:
    - type: "IS_DECIMAL"

5. Valeur approchée de π (4e)

uid: "math-approx-pi"
text: "Donner une valeur approchée de \\(\\pi\\) au centième"
questionType: "math"
targetLatex: "3.14"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck:
    method: "APPROXIMATE"
    absTolerance: 0.005
  constraints:
    - type: "REQUIRE_DECIMAL_PLACES"
      places: 2

6. Rationalisation du dénominateur (1ère)

uid: "math-rationaliser"
text: "Rationaliser le dénominateur de \\(\\frac{1}{\\sqrt{2}}\\)"
questionType: "math"
targetLatex: "\\frac{\\sqrt{2}}{2}"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }
  constraints:
    - type: "IS_RATIONALIZED"

7. Simplification de racine (3e)

uid: "math-racine-simple"
text: "Simplifier \\(\\sqrt{50}\\)"
questionType: "math"
targetLatex: "5\\sqrt{2}"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }

8. Fraction irréductible avec variables (2nde)

uid: "math-fraction-var"
text: "Simplifier \\(\\frac{2x}{4x^2}\\)"
questionType: "math"
targetLatex: "\\frac{1}{2x}"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }
  constraints:
    - type: "IS_FRACTION"
    - type: "IS_IRREDUCIBLE"

9. Développer et réduire (3e)

uid: "math-dev-reduire"
text: "Développer et réduire \\((2x+1)(x-3)\\)"
questionType: "math"
targetLatex: "2x^2-5x-3"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }
  constraints:
    - type: "IS_EXPANDED"

10. Valeur approchée de √2 (4e)

uid: "math-approx-sqrt2"
text: "Donner une valeur approchée de \\(\\sqrt{2}\\) à 0.001 près"
questionType: "math"
targetLatex: "1.414"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck:
    method: "APPROXIMATE"
    absTolerance: 0.0005
  constraints:
    - type: "REQUIRE_DECIMAL_PLACES"
      places: 3

11. Résolution d'équation du premier degré (4e)

uid: "math-equation-1er-degre"
text: "Résoudre l'équation \\(2x + 3 = 7\\)"
questionType: "math"
targetLatex: "x = 2"
validationConfig:
  kind: "EQUATION"
  responseFormat: "SINGLE"
  variables: ["x"]

12. Ensemble de solutions d'une équation du second degré (2nde)

uid: "math-equation-solutions-set"
text: "Résoudre \\(x^2 - 5x + 6 = 0\\) et donner l'ensemble des solutions"
questionType: "math"
targetLatex: "\\{2, 3\\}"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SET"

13. Coordonnées d'un point (3e)

uid: "math-coordonnees-tuple"
text: "Donner les coordonnées du milieu du segment [A(1;3), B(5;7)]"
questionType: "math"
targetLatex: "(3, 5)"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "TUPLE"

14. Notation scientifique (4e)

uid: "math-notation-scientifique"
text: "Écrire \\(0.00045\\) en notation scientifique"
questionType: "math"
targetLatex: "4.5 \\times 10^{-4}"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck: { method: "EXACT" }
  constraints:
    - type: "SCIENTIFIC_NOTATION"

15. Chiffres significatifs (2nde)

uid: "math-chiffres-significatifs"
text: "Donner \\(\\pi\\) avec 4 chiffres significatifs"
questionType: "math"
targetLatex: "3.142"
validationConfig:
  kind: "EXPRESSION"
  responseFormat: "SINGLE"
  valueCheck:
    method: "APPROXIMATE"
    absTolerance: 0.0005
  constraints:
    - type: "REQUIRE_SIGNIFICANT_FIGURES"
      figures: 4

16. Primitive d'un polynôme (Terminale)

uid: "math-primitive-polynome"
text: "Donner une primitive de \\(3x^2 + 2x\\)"
questionType: "math"
targetLatex: "x^3 + x^2"
validationConfig:
  kind: "ANTIDERIVATIVE"
  responseFormat: "SINGLE"
  variables: ["x"]

17. Primitive trigonométrique (Terminale)

uid: "math-primitive-cosinus"
text: "Donner une primitive de \\(\\cos(x)\\)"
questionType: "math"
targetLatex: "\\sin(x)"
validationConfig:
  kind: "ANTIDERIVATIVE"
  responseFormat: "SINGLE"
  variables: ["x"]

❓ FAQ et pièges courants

L'élève a tapé la bonne réponse mais obtient « Bonne valeur, forme incorrecte » ?

C'est le comportement attendu quand une contrainte de forme n'est pas respectée. Par exemple si vous exigez IS_FRACTION et que l'élève tape 0.5 au lieu de \frac{1}{2}. Selon la contrainte, ce statut peut être accompagné d'un message plus détaillé. Avec IS_IRREDUCIBLE, l'élève peut par exemple voir : « Ta fraction n'est pas irréductible : ».

Quelle différence entre EXACT et APPROXIMATE ?

  • EXACT : les expressions doivent être mathématiquement égales (ex : , ). Utilisez-le quand une valeur exacte est attendue.
  • APPROXIMATE : la comparaison se fait numériquement avec une tolérance. Utilisez-le pour les valeurs irrationnelles (, …) ou les arrondis.

Peut-on combiner plusieurs contraintes ?

Oui, toutes les contraintes sont vérifiées. Si une seule n'est pas respectée, l'élève reçoit « Bonne valeur, forme incorrecte ». Combinez par exemple IS_FRACTION + IS_IRREDUCIBLE pour exiger une fraction simplifiée.

L'élève obtient « Résultat incertain » (AMBIGUOUS) ?

Cela signifie que le moteur de calcul n'a pas pu déterminer si la réponse est correcte. Cela peut arriver avec des expressions très complexes.

Quelles expressions le clavier mathématique permet-il de saisir ?

Le clavier avancé (MathLive) permet de saisir :

  • Fractions :
  • Puissances :
  • Racines : ,
  • Lettres grecques : , , etc.
  • Fonctions trigonométriques : , ,
  • Parenthèses et opérations de base

Puis-je utiliser des images dans les questions math ?

Oui, le champ imageRef fonctionne comme pour les autres types de questions. Vous pouvez associer une image (figure géométrique, graphique…) à votre énoncé.

Dernière mise à jour: 18/05/2026 11:21
Contributors: alexisflesch
Prev
✍️ Création de questions
Next
🤝 Contribuer à la base commune de questions