1Principes scientifiques fondateurs

L'application repose sur quatre piliers issus de la littérature en psychologie cognitive et en didactique des mathématiques :

1.1Répétition espacée (Spaced Repetition)

Source : Kang (2016), Cepeda et al. (2008), Rea & Modigliani (1985)

Chaque fait multiplicatif possède un état de maîtrise individuel. L'intervalle entre deux présentations d'un même fait augmente avec les succès consécutifs et se réduit en cas d'erreur. L'algorithme s'inspire du système de Leitner à 5 boîtes, adapté pour des enfants.

BoîteIntervalle de révisionSignification
1Chaque séanceNouveau ou échoué récemment
21 jourRépondu correctement 1 fois
33 joursRépondu correctement 2 fois consécutives
47 joursRépondu correctement 3 fois consécutives
521 joursMaîtrisé (révision de consolidation)

Règles :

  • Un succès fait monter le fait d'une boîte.
  • Un échec renvoie le fait en boîte 1.
  • Un fait est considéré « acquis » quand il atteint la boîte 5 et y est confirmé.
  • Le temps de réponse est enregistré. Un succès lent (au-delà du seuil mode-dépendant — cf. §3.3) ne fait pas monter de boîte — l'objectif est le rappel automatique, pas le calcul mental.

1.2Regroupement par faible similarité (Low-Interference Training)

Source : Dotan & Zviran-Ginat (2022), Cognitive Research: Principles and Implications

Les faits similaires (ex : 6×8=48 et 8×8=64) créent de l'interférence en mémoire lorsqu'ils sont présentés dans la même séance. L'application regroupe les faits de sorte qu'une séance ne contienne que des faits dissemblables entre eux.

Commutativité : a×b et b×a (ex : 6×7 et 7×6) sont traités comme un seul et même fait. L'application ne stocke qu'une entrée (avec a ≤ b par convention) mais pose la question dans les deux ordres.

Critères de similarité entre deux faits a×b=c et d×e=f :

  • Opérande partagé (ex : 7×6 et 7×8) → similarité forte
  • Résultat proche ou même dizaine (ex : 6×7=42 et 6×8=48) → similarité moyenne
  • Chiffre partagé dans le résultat (ex : 8×8=64 et 8×6=48, tous deux avec un 8 en opérande et un 4 dans le résultat) → similarité moyenne

Note sur la métrique : Dotan & Zviran-Ginat utilisent une métrique différente dans leur étude : le nombre de paires de chiffres communes entre deux faits (opérandes et chiffres du résultat confondus, positions ignorées). Leur métrique est continue et ne distingue pas le rôle du chiffre (opérande vs. résultat). Notre métrique catégorielle (forte/moyenne/nulle) est plus conservatrice — elle classe comme « similarité forte » tout partage d'opérande, même quand la métrique du papier donnerait un score de 0 (ex : 8×7=56 et 8×3=24 ne partagent qu'un seul chiffre, donc 0 paires, mais partagent l'opérande 8). Ce choix est aligné avec la littérature plus large sur les erreurs de récupération en multiplication (Campbell, 1987), qui identifie le partage d'opérande comme la première source de confusion.

Règle de séance : Dans une séance donnée, deux faits ayant une similarité forte ne sont jamais présentés dans la même série de questions. Deux introductions de faits similaires sont espacées d'au moins 48h — l'interférence vise l'apprentissage de paires similaires (Dotan & Zviran-Ginat 2022), pas la révision active. Une fois un fait appris (en boîte ≥ 2 et revu régulièrement), le revoir ne bloque pas l'introduction d'un fait similaire.

1.3Entrelacement (Interleaving)

Source : Rohrer & Taylor (2007), Rohrer, Dedrick & Burgess (2014)

Au sein d'une séance, les questions alternent entre différentes tables plutôt que de travailler une seule table en bloc. L'entrelacement force la discrimination active et améliore les performances d'environ 30% par rapport à la pratique bloquée.

Implémentation : Chaque séance pioche dans les faits éligibles (selon l'algorithme de répétition espacée) et les mélange. Jamais deux questions consécutives de la même table.

1.4Compréhension conceptuelle avant mémorisation

Source : Cowan et al. (2011), Brendefur et al. (2015)

Avant de demander un rappel pur, chaque nouveau fait est d'abord introduit visuellement (array/grille de points, lien avec l'addition répétée, commutativité). L'application ne demande jamais de mémoriser un fait qui n'a pas été conceptuellement présenté.

2Architecture de l'application

2.1Stack technique

ComposantChoixJustification
Framework UIPreact 10 (ESM vendoré dans vendor/preact/ ; le code importe react/react-dom, l'import map redirige vers preact/compat)Interactivité riche pour une empreinte minimale (~4 KB)
BuildNobuild : ESM natif + import map, esbuild pour la seule transformation .tsx.js, pas de bundler. tsc -b vérifie les types (noEmit)Démarrage instantané en dev, pipeline de build minimal
StockagelocalStorage pour toutes les données d'apprentissage + export/import JSONPersistance locale, aucun compte, aucune donnée enfant en ligne
AnimationsCSS transitions + keyframes (pas de bibliothèque d'animation)Feedback visuel motivant, zéro dépendance
Avis & rappelsSupabase (PostgREST appelé directement via fetch, sans SDK) — tables feedback (avis, §5.2) et push_subscriptions (rappels, §8.1)Deux usages annexes sans serveur applicatif à maintenir
Notifications pushWeb Push API + clés VAPID ; envoi par un cron GitHub Actions (paquet web-push), pas de serveur permanentRappel quotidien sans backend dédié (cf. §8.1)
PWA / offlineService Worker maison (cache-first sur les navigations), manifest.json, fontes self-hostées précachéesInstallable, cold launch instantané, fonctionne 100 % hors-ligne
HébergementGitHub Pages (repo isc/multiplix, BASE=/multiplix/)Gratuit, simple

L'app reste sans backend pour le parcours d'apprentissage : aucune donnée de l'enfant (profil, progression, historique) ne quitte l'appareil. Supabase ne porte que deux flux annexes et optionnels — les avis envoyés depuis l'espace parent et les abonnements aux rappels push — décrits en §5.2 et §8.1.

2.2Structure des données

interface MultiFact {
  a: number;           // premier opérande (2-9)
  b: number;           // second opérande (2-9), toujours a ≤ b (commutativité)
  product: number;     // résultat
  box: 1 | 2 | 3 | 4 | 5;  // boîte Leitner
  lastSeen: string;    // ISO date de dernière présentation
  nextDue: string;     // ISO date de prochaine révision
  history: Attempt[];  // historique des tentatives
  introduced: boolean; // le fait a-t-il été présenté conceptuellement ?
}

interface Attempt {
  date: string;
  correct: boolean;
  responseTimeMs: number;
  answeredWith: number | null;  // ce que l'enfant a répondu
}

interface UserProfile {
  name: string;
  startDate: string;
  facts: MultiFact[];
  totalSessions: number;
  currentStreak: number;            // jours consécutifs
  longestStreak: number;
  lastSessionDate: string | null;   // pour la streak et l'anti-nag des rappels
  streakFreezes: number;            // gels en réserve (cap 2), §4.3
  badges: Badge[];
  sessionHistory: SessionResult[];  // alimente le tableau de bord parent (§5.2)
  hasSeenRulesIntro: boolean;       // intro des règles ×1 / ×10 déjà jouée (§3.1)
  hasSeenRule11: boolean;           // pastille « Nouveau » de la règle ×11 éteinte (§2.3)
  mysteryTheme: MysteryTheme;       // image mystère tirée à la création du profil (§5.1)
}

interface Badge {
  id: string;
  name: string;
  description: string;
  earnedDate: string;
  icon: string;
}

2.3Inventaire des faits

En exploitant la commutativité (a×b = b×a), on réduit les 100 faits (1-10 × 1-10) aux faits uniques :

  • Tables de 1 et 10 : triviaux → traités à part (règle, pas mémorisation)
  • Carrés : 2×2, 3×3, …, 9×9 → 8 faits
  • Faits non-carrés (a < b, 2 ≤ a ≤ 9, a < b ≤ 9) → 28 faits
  • Total à mémoriser : 36 faits (après exclusion des ×1 et ×10)

Les faits ×1 et ×10 sont enseignés comme des règles (pas de la mémorisation) lors de la phase d'introduction.

Formulation pédagogique des règles

  • ×1 : « Tout nombre multiplié par 1 reste le même. »
  • ×10 : « Les chiffres glissent d'une place vers la gauche : un 0 vient prendre la place des unités. »

La formulation classique « on ajoute un zéro » est volontairement évitée : le verbe « ajouter » prête à confusion avec l'addition, et la règle devient fausse dès l'introduction des nombres décimaux (1,2 × 10 = 12, et non 1,20). Le principe du « glisse-nombre » — décalage des chiffres dans le tableau de numération (unités → dizaines, dizaines → centaines, etc.) — est la formulation recommandée par plusieurs sources pédagogiques françaises :

Règle bonus ×11 (révélation différée)

La table de 11 n'est pas au programme officiel français de l'école primaire, mais présente un motif particulièrement régulier de 1 à 9 : « il suffit de répéter le chiffre » (3×11 = 33, 7×11 = 77…). On la traite donc comme une règle bonus, jamais comme un fait à mémoriser dans le Leitner — aucune carte 11×N n'est ajoutée au profil.

Contrairement aux règles ×1 et ×10 qui sont des prérequis culturels introduits dès le premier lancement, la règle ×11 est révélée tardivement : elle apparaît dans l'écran RulesScreen uniquement quand l'enfant a obtenu les 8 badges « Table de N » (n=2..9), cf. isRule11Unlocked. Le critère est volontairement basé sur les badges et non sur les boîtes en direct : les badges sont permanents, donc la révélation est définitive — une mauvaise journée qui fait régresser quelques faits ne « reprend » pas la découverte. Le but est de préserver le wow-effect de la découverte d'un motif élégant — l'introduire à J1 noierait ce moment dans un onboarding déjà chargé pour un CE1 qui galère encore avec 7×8.

La découverte est signalée par une pastille « Nouveau » discrète sur le bouton Règles de l'écran d'accueil (pas de modale interruptive, cohérent avec la philosophie low-intrusion de l'app). La pastille s'éteint dès la première ouverture de l'écran Règles après le déblocage, via UserProfile.hasSeenRule11.

3Parcours utilisateur

3.1Premier lancement

  1. Écran d'accueil avec le personnage mascotte (voir §4)
  2. Saisie du prénom → « Salut Zoé ! »
  3. Explication ludique : « Je suis [Mascotte]. On va apprendre les multiplications ensemble, 5 minutes par jour ! »
  4. Test de positionnement rapide (optionnel) : jusqu'à 15 faits ordonnés par difficulté progressive (facile → difficile, suivant grossièrement le curriculum : tables 2/3/5 petits → grands, nines, carrés, dérivés), pas de timer visible → détermine quels faits sont déjà connus pour démarrer à la bonne boîte. Un bouton « Je ne sais pas » permet de passer une question sans forcer une réponse au hasard, ce qui évite de polluer le diagnostic avec des bonnes réponses devinées. Une voix d'intro (placement-intro) annonce l'option au démarrage du test.

    Arrêt sur 3 ratés consécutifs. Quand l'enfant rate (mauvaise réponse ou « Je ne sais pas ») 3 questions d'affilée, le test s'arrête : combiné à l'ordre progressif, ça évite d'épuiser un enfant qui ne maîtrise que les tables faciles sur les ×7/×8/×9 inconnus. Le diagnostic se base sur les questions effectivement posées ; les faits non testés se comportent comme les non dominés (introduits via le curriculum naturel).

    Seuls les faits correctement résolus sont introduits. Un fait raté (réponse fausse ou « Je ne sais pas ») reste introduced=false : le placement n'est qu'un diagnostic, pas une introduction. Les faits non maîtrisés seront proposés plus tard via le curriculum naturel (§3.4bis : doubles → cinq → neuf → carrés → dérivés). Sinon la 1ʳᵉ séance se remplirait des faits en boîte 1 dus aujourd'hui — exactement ceux que l'enfant ne connaît pas — court-circuitant l'ordre pédagogique.

    Inférence par dominance : les faits non testés directement sont ensuite inférés à partir des résultats. Un fait (a, b) est marqué introduit s'il existe un fait testé (a', b') correctement résolu avec a' ≥ a ET b' ≥ b (avec normalisation min/max) — l'idée étant qu'un enfant qui sait 6×9 sait aussi 2×3. La boîte de départ reflète la vitesse du fait dominant : boîte 3 si au moins un dominant a été résolu rapidement (< 3 s), boîte 2 sinon — on reconnaît ainsi la maîtrise déjà démontrée. Sans ça, l'image mystère cacherait les cases « faciles » et la règle boîte≥2 (§3.4bis) bloquerait l'introduction de 2×2 et 2×3. Les faits non dominés (typiquement 8×9, 9×9) restent à introduire via le rythme normal.

    Un fait testé directement et raté n'est jamais récupéré par la dominance. Si l'enfant rate 4×7 mais réussit 5×8, on n'introduit pas 4×7 en boîte 3 sous prétexte que 5×8 domine — l'enfant vient explicitement de dire qu'il ne le connaît pas. Sans cette exclusion, le fait sortirait en bonus review sans son écran d'intro pédagogique (grille de points + astuce).

  5. Introduction des règles ×1 et ×10 (écran RulesIntroScreen) — affiché une fois, juste après le test de positionnement. Trois étapes : accueil (« Deux règles toutes simples »), règle ×1 avec exemples, règle ×10 avec visuel du « glisse-nombre » (animation : un chiffre glisse de la colonne des unités vers celle des dizaines, un 0 apparaît aux unités). Le passage est persisté via UserProfile.hasSeenRulesIntro pour ne pas le rejouer.
  6. Première séance avec les 2 premiers faits (les plus simples : 2×2 et 2×3). Le plafond de 2 nouveaux faits par séance (§3.4bis) s'applique dès la première séance — 2×4 et 2×5 sont introduits aux séances suivantes quand 2×2 et 2×3 sont en boîte 2+.

Rappel contextuel de la règle ×10 dans l'intro des faits ×9 :

La stratégie des faits ×9 étant « n × 9 = n × 10 − n » (voir §4 et lib/strategies.ts), le composant StrategyHint affiche un rappel discret de la règle ×10 sous l'astuce quand la variante est intro et que la stratégie est near-ten. Cela réactive la règle au seul moment de la session où elle est effectivement mobilisée — puisque les faits ×1 et ×10 eux-mêmes ne sont jamais posés en question.

3.2Séance quotidienne (5 minutes)

Structure d'une séance :

[Accueil]          → Personnage + rappel de la streak + badge du jour si applicable
    ↓
[Intro]            → Si nouveaux faits à introduire (max 2 par séance) :
                     affichage visuel (grille de points), explication,
                     puis première question immédiate
    ↓
[Pratique]         → Jusqu'à 12-15 questions (mix de révisions dues + faits récents)
                     Entrelacement automatique, pas de chrono visible
                     Feedback immédiat après chaque réponse
                     Note : si moins de faits sont disponibles, la séance est
                     plus courte — pas de répétition de remplissage (voir §6.2)
    ↓
[Récap]            → Bilan orienté progrès (faits appris, faits promus,
                     progression vers la maîtrise globale), badge éventuel,
                     message chaleureux constant (pas conditionné au score)
    ↓
[Fin]              → "À demain !" + mascotte

Durée cible : 4-6 minutes. L'application ne coupe pas en plein milieu d'une question mais affiche un indicateur de progression (barre ou étoiles à remplir).

Justification du choix de durée. La littérature ne fixe pas de minute optimale unique : ce qui est étayé empiriquement, c'est la forme (séances courtes, fréquentes, distribuées), pas un chiffre précis. Les études d'intervention sur la fluence des faits arithmétiques s'étalent typiquement entre 5 et 20 min/séance, avec un cluster autour de 10-15 min dans les contextes scolaires de remédiation (Codding, Burns & Lukito 2011 ; Burns, Kanive & DeGrande 2012). La méta-analyse de Codding et al. (2011) traite d'ailleurs la dose comme un produit sessions × semaines plutôt qu'en minutes/séance — autrement dit, la régularité quotidienne pèse plus que la longueur de chaque séance. Notre cible de 4-6 minutes est donc volontairement au bas de la fourchette evidence-based : elle privilégie la consistance quotidienne (compatible avec un usage à la maison, sans supervision) plutôt que la dose par séance, et reste dans la zone confortable d'attention pour des enfants de 7-9 ans avant l'apparition de fatigue cognitive sur ce type de tâche répétitive.

3.3Déroulement d'une question

  1. Affichage de la question : « 6 × 7 = ? »
    • Les opérandes peuvent être présentés dans les deux ordres (6×7 ou 7×6) même si le fait est stocké une seule fois
    • La question est aussi énoncée à voix haute (« six fois sept ») — canal auditif supplémentaire pour les lecteurs hésitants (cf. §3.6)
  2. L'enfant tape sa réponse sur un pavé numérique intégré (gros boutons tactiles)
  3. Validation automatique à 2 chiffres, ou bouton « OK » pour les résultats < 10
  4. Feedback immédiat :
    • Correct + assez rapide (< 5s en clavier, < 3s en voix) : Animation joyeuse, son positif, étoile dorée rayonnante, montée de boîte
    • Correct + lent (au-delà du seuil du mode) : « Bravo ! » + étoile dorée seule (sans rayons), pas de montée de boîte (le retour est positif côté enfant ; la lenteur n'est jamais verbalisée — cf. §7.2 sur le feedback orienté progrès et l'absence de chrono visible)
    • Incorrect : Pas de son négatif, la bonne réponse s'affiche avec la grille de points, puis re-pose la question 2-3 questions plus tard dans la même séance

Note sur les seuils : le seuil est mode-dépendant et sert à la fois pour l'étoile rayonnante et pour la montée de boîte — un seul signal cohérent, "ta réponse fait avancer ta maîtrise". Au clavier 5 s, en voix 3 s : on tolère ~2 s de plus au clavier pour absorber le surcoût moteur du pavé numérique chez un enfant de 7-9 ans, alors que la voix peut s'aligner sur les ~2-3 s d'automaticité orale de la littérature.

3.4Introduction d'un nouveau fait

Quand l'algorithme décide d'introduire un nouveau fait :

  1. Affichage visuel : Grille de points (array) animée — ex : 3 rangées de 7 points qui apparaissent une par une
  2. Lien avec l'addition : « 3 × 7, c'est 7 + 7 + 7 = 21 »
  3. Commutativité : La grille pivote de 90° → « 7 × 3, c'est pareil ! C'est aussi 21 »
  4. Stratégie de dérivation : Lorsqu'une astuce existe pour le fait (cf. §3.4bis), on montre la dérivation : « × 9, c'est × 10 moins une fois » avec les étapes du calcul.
  5. Première question : Posée immédiatement après l'introduction
  6. Re-test : Posée à nouveau 2-3 questions plus tard dans la séance

Chaque étape est accompagnée d'un audio pré-enregistré (intro-A-B, comm-A-B, strategy-A-B) — cf. §3.6.

3.4bisStratégies de dérivation

Sources :

La mémorisation par cœur pure est moins robuste que la pratique stratégique, où l'enfant dérive le résultat à partir de faits plus simples (anchor facts). Avec la répétition, la dérivation s'automatise et la trace mnésique se consolide — et si l'enfant oublie, il conserve un filet de secours.

Les stratégies sont affichées :

  • à l'introduction (étape 4 ci-dessus) — pour installer l'idée qu'on peut dériver,
  • en cas d'erreur, uniquement pour les faits en boîte ≤ 2 — au-delà, on vise le rappel direct, la grille suffit comme rappel conceptuel.

L'astuce est également énoncée à voix haute aux deux moments (strategy-A-B, cf. §3.6).

Séquence canonique d'introduction (Van de Walle / Wichita 2014)

Les nouveaux faits sont introduits dans cet ordre (anchor facts d'abord, dérivés ensuite) :

  1. Doubles (×2) — addition répétée, fondation pour ×3 et ×4
  2. Fives (×5) — skip counting, fondation pour ×6 et ×7
  3. Nines (×9) — astuce ×10 − n, anchor visuel fort
  4. Squares (n × n) — anchors mémorables, appui pour les voisins (×6, ×7, ×8)
  5. Derived — le reste (3×4, 3×6, 3×7, 3×8, 4×6, 4×7, 4×8, 6×7, 6×8, 7×8)

Implémenté dans factStage() (src/lib/sessionComposer.ts).

Stratégies utilisées (par ordre de priorité quand plusieurs s'appliquent)

PivotAstuceExemple
× 9near-ten : × 10 moins une fois7 × 9 = 7 × 10 − 7 = 63
× 5skip-count : compter par 54 × 5 = 5 + 5 + 5 + 5 = 20 (on compte : 5 → 10 → 15 → 20)
× 3double-add : × 2 plus une fois7 × 3 = 7 × 2 + 7 = 21
× 4double-double : doubler le double6 × 4 = (6 × 2) × 2 = 24
× 6five-plus-one : × 5 plus une fois7 × 6 = 7 × 5 + 7 = 42
× 7five-plus-two : × 5 plus × 28 × 7 = 8 × 5 + 8 × 2 = 56
× 8double-double-double : doubler trois fois (8 = 2³)7 × 8 = 7 × 2 × 2 × 2 = 14 × 2 × 2 = 28 × 2 = 56

Notes sur les choix :

  • ×5 utilise le skip counting plutôt que « moitié de × 10 », conformément à la séquence canonique : compter par 5 est l'anchor naturel et intuitif (les multiples de 5 se terminent par 0 ou 5).
  • ×8 utilise le doublement triple plutôt que « × 10 − × 2 », car il s'appuie directement sur l'anchor des doubles (déjà maîtrisé en stage 1) et exploite la structure 8 = 2³.

Faits de base sans stratégie (grille + addition répétée suffisent) : table de 2, 3 × 3.

Rythme d'introduction : Maximum 2 nouveaux faits par séance. Un nouveau fait n'est introduit que si les faits précédemment introduits sont au moins en boîte 2.

Exception phase finale : quand il ne reste que ≤ 2 faits à introduire (typiquement 8×9 et 9×9 après le seeding par dominance du placement, qui ne peuvent être inférés par aucun fait du set placement), la règle boîte≥2 est levée. Sinon un seul fait raté en boîte 1 bloquerait indéfiniment l'introduction des derniers faits — alors que l'enfant maîtrise déjà la quasi-totalité, la règle protectrice n'a plus d'utilité.

3.5Récap de séance

Source : Butler (1988), Hattie & Timperley (2007)

L'écran de récap ne doit jamais afficher de score brut (ex : « 8/12 bonnes réponses ») ni d'indicateur de performance comparative (étoiles conditionnées au ratio de réussite). Ce type de feedback ego-involving réduit la motivation intrinsèque et oriente l'enfant vers des objectifs de performance plutôt que de maîtrise.

Ce qui est affiché :

  • Message chaleureux constant — identique quel que soit le résultat de la séance. L'enfant a fait sa séance, c'est l'essentiel.
  • Nouveaux faits — nombre de faits introduits dans la séance
  • Invitation à l'image mystère — bouton vers l'écran de progression (§5.1). Libellé neutre « Voir mon image » par défaut ; libellé valorisant « Ton image a changé ! Viens la voir » uniquement quand au moins un fait a réellement monté de boîte dans la séance (comparaison boîte initiale → boîte finale, pas un simple compteur de bonnes réponses). Le nombre exact de faits promus n'est pas affiché : la métaphore visuelle suffit, et chiffrer la progression risquerait de réintroduire un signal ego-involving.
  • Progression globale — avancement vers la maîtrise complète (ex : « Tu connais 18 faits sur 36 » ou jauge de progression)
  • Badges éventuels — récompenses orientées effort et maîtrise
  • Tables complétées — avec célébration (confettis)

Ce qui n'est PAS affiché à l'enfant :

  • Score brut (correct/total)
  • Étoiles ou notes conditionnées au ratio de réussite
  • Messages d'encouragement dont le ton varie selon le score
  • Nombre d'erreurs

Le score brut, le taux de réussite et le temps de réponse moyen sont disponibles dans le tableau de bord parent (§5.2).

3.6Audio (text-to-speech)

L'application lit à voix haute les étapes-clés d'une séance — canal auditif supplémentaire, utile aux lecteurs hésitants et aux enfants qui automatisent mieux à l'oral.

Fichiers pré-générés (voix française Marie – Curious, Mistral Voxtral TTS) stockés dans public/audio/tts/ :

CléContenuNombre
q-A-B« A fois B » — énoncé de la question64
intro-A-B« Nouveau ! A fois B, c'est B + B + … = P »36
comm-A-B« B fois A, c'est pareil ! C'est aussi P »28
strategy-A-BAstuce de dérivation parlée (cf. §3.4bis)27
welcome-*, recap-donePhrases statiques du parcours de bienvenue et du récap4

Génération : MISTRAL_API_KEY=… node scripts/generate-tts.mjs (idempotent — skip les fichiers déjà présents). Les mêmes fichiers sont servis offline via le precache de la PWA.

3.6bisEntrée vocale (mode optionnel)

En complément du pavé numérique, un mode vocal permet à l'enfant de répondre à voix haute (Web Speech API, SpeechRecognition). Utile pour les enfants qui ont déjà automatisé le fait mais sont ralentis par la manipulation tactile, ou pour soulager la charge motrice sur une longue séance.

Activation : toggle dans la barre supérieure de l'écran d'accueil (icône micro ↔ clavier). Le toggle n'apparaît que si SpeechRecognition est supportée par le navigateur. Le choix est persisté dans localStorage pour survivre aux rechargements.

Seuil de temps ajusté : en mode vocal, le seuil unique de §3.3 (étoile rayonnante + montée de boîte) passe de 5 s à 3 s. Cela aligne le seuil sur les mesures d'automatisation à l'oral dans la littérature en retirant le surcoût moteur du pavé numérique.

Robustesse : le module parseFrenchAnswer normalise les réponses parlées (nombres en lettres, variations régionales — « soixante-douze », « septante-deux ») et filtre l'écho du TTS quand la question est énoncée juste avant la réponse.

4Gamification

4.1Personnage mascotte

Un petit personnage stable, nommé Piou, qui accompagne l'enfant tout au long du parcours. La mascotte ne porte pas la progression (ce rôle revient à l'image mystère, §5.1) : elle est un compagnon affectif, pas une récompense à faire évoluer.

Rôles :

  • Présence sur l'écran d'accueil (animations d'idle)
  • Feedback immédiat pendant la séance : réactions joyeuses aux bonnes réponses, encouragements neutres et positifs aux erreurs (jamais de moue, jamais de déception)
  • Ritualisation : bienvenue en début de séance, « à demain ! » en fin
  • Identité visuelle de l'app (icône, écran de lancement)

Principe : la mascotte n'évolue pas, ne « grandit » pas, n'a pas de niveau. Elle est le même visage familier à chaque séance, du premier jour au dernier fait maîtrisé. Ce choix évite :

  • le doublon avec la progression de l'image mystère (deux métaphores de progression qui se parasitent),
  • la logique « œuf → adulte » qui, une fois terminée, ne peut plus motiver,
  • toute forme de jugement (« faire la moue ») qui contredirait le principe un fait oublié revient sans notion d'échec (§1.1).

4.2Badges

BadgeConditionIcône
Premier pasTerminer la 1ère séance🌱
Première case révéléePremier fait passé en boîte 4 (1ère case quasi-nette sur l'image mystère)🖼️
Première multiplication maîtriséePremier fait passé en boîte 5 (1ère case entièrement dévoilée)🥇
Régularité7 jours consécutifs🔥
Machine10 réponses correctes d'affilée dans une séance
ExplorationAvoir vu tous les faits au moins une fois🗺️
Table de [N]Maîtriser tous les faits d'une table
Génie de la multiplicationToutes les multiplications en boîte 5🏆
Véloce5 étoiles dorées d'affilée🚀
PersévéranceRevenir après 3+ jours d'absence💪
Flamme éternelle30 jours consécutifs🌟

Le niveau 2 (§11) ajoute un jeu de badges symétrique pour la division (Première division maîtrisée, Divisions par N, Maître de la division), masqué tant que le niveau n'est pas débloqué — détaillé en §11.5.

Les deux badges Première case révélée et Première multiplication maîtrisée jalonnent la zone intermédiaire, entre les badges du tout début (Premier pas, Machine, Exploration) et la maîtrise complète d'une table : ils se déclenchent au moment précis où l'image mystère §5.1 change visiblement de finesse pour la 1ère fois.

Sur l'écran Badges, chaque vignette est cliquable et ouvre une modale qui explicite le badge :

  • pour un badge verrouillé : la condition complète, et — quand c'est applicable — une barre de progression (jours consécutifs, faits découverts, faits dans la table en boîte 4+, etc.) avec un encouragement contextuel (« Plus que 3 ! Tu y es presque. »).
  • pour un badge débloqué : la condition rappelée, et la date d'obtention.

Cette modale est essentielle pour un enfant qui découvre la gamification : sans elle, l'icône et le nom seuls ne permettent pas de comprendre comment décrocher le badge.

4.3Streak (série de jours)

  • Compteur de jours consécutifs affiché sur l'écran d'accueil
  • Animation de flamme qui grandit avec la streak
  • Si l'enfant manque un jour sans gel disponible : message bienveillant (« Tu m'as manqué ! On s'y remet ? »), pas de punition, la streak repart de 1 mais les progrès sur les faits sont conservés

Gels de série

Pour ne pas punir une absence isolée, l'enfant accumule des gels de série (❄️) qui sauvent la streak d'un jour manqué :

  • Acquisition : 1 gel gagné automatiquement à chaque palier de 7 jours d'affilée (jour 7, 14, 21…). Plafond : 2 gels en réserve — au-delà, les paliers supplémentaires ne donnent rien (le feature reste borné et lisible).
  • Couverture : 1 gel = 1 jour d'absence. Au-delà de 2 jours manqués, la série casse même avec plusieurs gels en réserve. Choix pédagogique : encourager le retour rapide plutôt que la longue interruption.
  • Consommation : automatique et silencieuse à la première séance qui suit un jour manqué. Quand un gel est disponible, la pill d'accueil affiche un ❄️ et reste active (« série protégée ») le jour de l'absence pour éviter à l'enfant de croire sa série perdue. Le récap de la séance célèbre l'événement (« Ton gel a sauvé ta série ! »).
  • Reset : quand la série tombe vraiment à 1, les gels en réserve sont conservés — l'enfant ne perd pas son acquis.

4.4Célébration de table complète

Quand tous les faits d'une table passent en boîte 4+ :

  • Animation spéciale (feu d'artifice, confettis)
  • La ligne et la colonne correspondantes s'illuminent brièvement sur l'image mystère
  • Badge spécifique

5Suivi de progression

5.1Vue enfant : l'image mystère

La progression de l'enfant se matérialise par une image unique qui se révèle au fil des séances. La grille 8×8 (tables 2 à 9, les ×1 et ×10 étant traités comme règles §3.1 et donc non représentés) constitue le support : chaque case affiche un fragment de l'image globale, et la finesse de chaque fragment reflète la boîte Leitner du fait correspondant.

Cinq niveaux de finesse (alignés sur les 5 boîtes Leitner) :

État du faitÉtat visuel du fragment
Non introduitCase opaque (fragment masqué)
Boîte 1Silhouette floue
Boîte 2Aplat simple, forme reconnaissable
Boîte 3Couleurs principales
Boîte 4Ombres et volumes
Boîte 5Détails fins, fragment complet

À mesure que les faits progressent, la scène globale se compose. Un fait qui redescend de boîte (oubli) fait redescendre sa case d'un cran en finesse — pas d'échec, juste la brume qui revient. Ce comportement est le miroir visuel strict de l'algorithme Leitner (§1.1).

Commutativité visible : comme (a,b) et (b,a) sont un seul et même fait (§1.2), les deux cases miroir se révèlent en synchrone. Elles affichent des fragments différents de l'image globale, mais évoluent toujours ensemble à chaque maîtrise ou oubli. Ce parallélisme visuel renforce pédagogiquement le principe de commutativité.

Fin de parcours : quand les 36 faits sont en boîte 5, l'image est entièrement révélée. Une brève animation (un clin d'œil, un léger mouvement) marque la complétion, sans pop-up ni célébration envahissante. L'image reste ensuite affichée comme témoin de la réussite ; pendant la phase de maintenance (révisions tous les 21 jours), si un fait retombe, sa case se re-floute en miroir de l'algo et se re-révèle à la révision suivante réussie.

Interaction : en tapant sur une case, l'enfant voit le fait sous-jacent et la grille de points associée.

Choix de l'image : une scène riche, non genrée, sans texte, au style cohérent sur toute la grille. L'image a une valeur symbolique forte — c'est l'image de la réussite, pas une vignette interchangeable dans une collection. Production envisagée : une image vectorielle maître, dont les 5 niveaux de finesse sont générés algorithmiquement (flou progressif + simplification des chemins), ou un pixel-art avec résolutions croissantes par case.

Périmètre v1 : chaque profil démarre avec une seule image pour l'ensemble du parcours, tirée aléatoirement d'un petit pool de thèmes visuels à la création du profil (actuellement market et ocean — voir MYSTERY_POOL dans src/types.ts ; un thème village est réservé au guide utilisateur pour ne pas spoiler les thèmes réels). L'image suit l'enfant du premier jour au dernier fait maîtrisé — pas de rotation, pas d'album à collectionner. L'objectif de l'app est d'apprendre les tables ; une fois l'image révélée, l'app a rempli son rôle. Si le périmètre s'étend un jour à d'autres matières (divisions, conjugaisons…), chaque matière pourra avoir sa propre image dédiée.

5.2Vue parent : tableau de bord

Accessible depuis l'écran d'accueil via l'icône engrenage. Un tap ouvre une multiplication-gate : un petit modal qui demande de résoudre une multiplication à deux opérandes — un entre 11 et 19, l'autre entre 3 et 9 (ex : 14 × 7). Trivial pour un adulte, hors de portée d'un enfant qui travaille encore les tables 2-9. Le dashboard s'ouvre sur bonne réponse ; une mauvaise réponse génère une nouvelle question sans verrouillage ni compteur d'essais.

Indicateurs :

  • Nombre de faits par boîte (histogramme)
  • Grille Leitner colorée 8×8 (une couleur par boîte) — vue diagnostique brute, complémentaire à l'image mystère côté enfant
  • Faits les plus difficiles : top 5 par nombre d'erreurs sur les 10 dernières séances (fenêtre glissante, pour refléter la difficulté actuelle et pas l'historique cumulé : un fait galéré il y a longtemps mais désormais maîtrisé n'apparaît plus). Si l'enfant a moins de 10 séances au compteur, toutes les séances sont prises en compte. En cas d'égalité, on départage par boîte la plus basse.
  • Historique des séances (date, durée, score)
  • Streak actuelle et plus longue
  • Graphe d'évolution du taux de bonnes réponses (% correct par séance, fenêtre des 20 dernières séances). Une fois que l'enfant plafonne autour de 100 %, la courbe devient peu informative — d'où le graphe complémentaire ci-dessous.
  • Graphe d'évolution du temps de réponse moyen (secondes par question, même fenêtre de 20 séances). Donne un signal de fluence qui reste vivant longtemps après que la précision plafonne : un enfant qui passe de 4 s à 2,5 s a clairement progressé, même si son taux de bonnes réponses n'a pas bougé. L'échelle Y est dynamique (min 0, max = plafond entier des données ou 4 s, le plus grand des deux) pour éviter qu'une variation de 0,2 s ne paraisse dramatique.

Une fois la division débloquée (§11) : le dashboard reflète aussi le niveau 2, masqué jusque-là (même principe que côté enfant — on ne montre rien de la division avant le déblocage). La vue d'ensemble gagne une carte Divisions maîtrisées (l'existante est renommée Multiplications maîtrisées). Un sélecteur Multiplications / Divisions bascule l'histogramme par boîte et la grille Leitner entre les deux opérations (ouvert par défaut sur la division, l'activité du moment). Et les faits les plus difficiles deviennent une liste unifiée × + ÷ : un seul top 5 mélangeant les deux opérations, chaque ligne marquée de son signe, pour montrer où l'enfant bute en ce moment sans cloisonner artificiellement les opérations.

Actions parent :

  • Exporter les données (JSON)
  • Importer les données (pour changer de téléphone)
  • Guide utilisateur : ouvre /multiplix/guide/ dans un nouvel onglet (page statique servie depuis la même origine, générée par scripts/generate-user-guide.mjs)
  • Envoyer un avis : formulaire texte libre + email optionnel. Les envois atterrissent dans une table Supabase (policy RLS insert-only via la publishable key). Un contexte anonyme (user-agent, viewport, stats agrégées du profil — nombre de séances, faits maîtrisés, streak) est joint pour faciliter le triage. Lecture réservée au propriétaire de l'app via la secret key (stockée en local, hors du repo)
  • Partager l'app : ouvre la feuille de partage native du téléphone (iMessage, WhatsApp, mail…) pour envoyer le lien de Multiplix ; sur ordinateur, le lien est copié dans le presse-papiers
  • Rappel quotidien : toggle opt-in qui active une notification push quotidienne (détails en §8.1)
  • Confidentialité : page dédiée expliquant le traitement des données (localStorage, Supabase pour avis et push, droits associés)
  • Nouveautés : journal des évolutions visibles côté enfant ou parent (alimenté par src/lib/changelog.ts)
  • Réinitialiser le profil : efface les données locales et relance le test de positionnement — utile pour repartir de zéro ou changer d'enfant

Note : les paramètres (nombre de questions par séance, seuil de vitesse) ne sont pas exposés car leurs valeurs par défaut sont issues de la littérature scientifique (§1.1) et ne devraient pas être modifiées sans expertise.

6Algorithme de sélection des questions

6.1Priorité de sélection pour une séance

À chaque séance, l'algorithme compose la liste de questions ainsi :

1. Faits en boîte 1 dont nextDue ≤ maintenant        (priorité haute)
2. Faits en boîte 2-3 dont nextDue ≤ maintenant       (priorité moyenne)
3. Faits en boîte 4-5 dont nextDue ≤ maintenant       (priorité basse)
4. Nouveaux faits à introduire (max 2)                 (si rien d'urgent)

6.2Contraintes de composition

  • Anti-interférence : Deux faits partageant un opérande ne sont jamais adjacents dans la file de questions (quand c'est possible)
  • Entrelacement : Jamais deux questions de la même table d'affilée
  • Équilibre : Si > 15 faits sont éligibles, on priorise les boîtes basses
  • Réintroduction après erreur : Un fait raté est re-posé 2-3 questions plus tard dans la même séance (et revient en boîte 1 pour les séances suivantes)
  • Borne dure de la séance : La séance est plafonnée à 20 questions au total, retries de réintroduction inclus. Sans cette borne, une chaîne d'erreurs (typiquement en mode vocal où la reconnaissance peut rater) insère retry sur retry et rend la séance interminable alors que les points de progression sont déjà tous remplis. Au-delà du cap, les nouvelles erreurs continuent à rétrograder en boîte 1 (effet Leitner préservé) mais ne déclenchent plus de retry intra-séance.
  • Variation d'ordre : Un même fait est parfois posé comme a×b, parfois comme b×a
  • Pas de répétition de remplissage : Le nombre 12-15 est un objectif, pas un minimum absolu. Il dérive de la durée cible de 5 minutes (~20-30 s par question avec feedback). Si le nombre de faits distincts disponibles est inférieur à 12, la séance est plus courte plutôt que de répéter les mêmes faits en boucle. La littérature (Cepeda et al. 2008, Rea & Modigliani 1985) montre que c'est la régularité des sessions et les intervalles de révision qui comptent, pas le nombre de questions par session. La répétition massive (massed practice) dans une même séance est contre-productive.
  • Révision bonus : Quand aucun fait n'est dû et qu'aucun nouveau fait ne peut être introduit (contrainte de similarité 48h), la séance est complétée avec des révisions bonus piochées parmi tous les faits introduits, en priorisant les boîtes les plus basses puis les dates de révision les plus proches. Les révisions bonus donnent un feedback normal (son, mascotte, score) mais ne modifient pas l'état Leitner (boîte, nextDue, lastSeen, historique). Cela garantit une séance chaque jour sans perturber le calendrier de répétition espacée.

6.3Calcul de nextDue

function computeNextDue(box, lastSeen) {
  const intervals = {
    1: 0,      // immédiat (prochaine séance)
    2: 1,      // 1 jour
    3: 3,      // 3 jours
    4: 7,      // 1 semaine
    5: 21      // 3 semaines
  };
  return addDays(lastSeen, intervals[box]);
}

7Interface utilisateur

7.1Écrans

ÉcranContenu
AccueilMascotte (animations d'idle), prénom, streak, bouton « C'est parti ! »
Séance — IntroGrille de points animée pour un nouveau fait
Séance — QuestionQuestion en gros, pavé numérique, barre de progression
Séance — Feedback correctAnimation joyeuse, mascotte enthousiaste
Séance — Feedback incorrectBonne réponse affichée avec grille, ton bienveillant (mascotte neutre, jamais déçue)
Récap séanceBilan progrès (faits promus, progression globale), badge éventuel, bouton « À demain »
ProgressionImage mystère (vue enfant, §5.1) ; grille Leitner colorée réservée au dashboard parent (§5.2)
BadgesCollection de badges obtenus
ParentDashboard détaillé (accès protégé)

Écrans secondaires accessibles depuis l'accueil ou l'espace parent : Règles (×1, ×10 et règle bonus ×11, §2.3), Progression (image mystère), Badges, et — côté parent — Confidentialité et Nouveautés (§5.2). Ces écrans sont chargés à la demande (lazy-loading) pour préserver la fluidité de la boucle quotidienne.

7.2Principes d'interface

  • Mobile-first : Conçu pour un écran de téléphone tenu verticalement
  • Gros boutons : Zone de tap minimum 48×48px, pavé numérique avec touches de 60×60px minimum
  • Pas de chrono visible : Le temps est mesuré en arrière-plan mais jamais montré à l'enfant (éviter l'anxiété)
  • Palette éditoriale cream/indigo : fond cream (#FBF6EC), indigo pour les éléments principaux, accents coral / sage / honey. Pas de couleurs agressives, mode clair uniquement.
  • Typographie : paire Fraunces (serif éditorial pour les titres) + Nunito (sans-serif pour le corps de texte et les éléments UI). Choisie pour donner une signature graphique distinctive sans sacrifier la lisibilité.
  • Encouragements systématiques : Aucun message négatif. Les erreurs sont traitées comme des opportunités d'apprentissage
  • Feedback orienté progrès, pas performance : L'application ne montre jamais de score brut (ex : « 8/12 ») ni de note à l'enfant. Les métriques visibles sont orientées vers la maîtrise et le progrès (faits appris, faits promus, progression globale). Ce choix s'appuie sur Butler (1988) et Hattie & Timperley (2007), qui montrent que le feedback de type « note/score » (ego-involving) réduit la motivation intrinsèque et les performances par rapport au feedback orienté processus/progrès (task-involving). Le score brut est réservé au tableau de bord parent (§5.2).
  • Pas de publicité, pas d'intégration tierce de tracking. Les seuls liens sortants côté enfant sont inexistants. Côté parent, le tableau de bord peut ouvrir le guide utilisateur interne (même origine) dans un nouvel onglet, et le formulaire « Envoyer un avis » pousse sur Supabase — il n'y a aucun lien vers un service externe visible pour l'enfant.

7.3Sons

  • Réponse correcte : son court et joyeux (type xylophone montant)
  • Réponse incorrecte : son neutre et doux (pas de buzzer)
  • Badge obtenu : fanfare courte
  • Image mystère complétée (tous les faits en boîte 5) : mélodie de complétion

8Fonctionnalités PWA / hors-ligne

  • Service Worker pour le fonctionnement offline complet
  • manifest.json pour l'installation sur l'écran d'accueil
  • Icône d'app avec la mascotte
  • Toutes les données d'apprentissage en localStorage — l'app se joue 100 % hors-ligne ; les seuls échanges réseau (avis, abonnements push) sont annexes et optionnels
  • Export/import JSON pour la sauvegarde et le transfert

8.1Rappel quotidien (notification push)

Activation : opt-in via un toggle « Rappel quotidien » dans l'espace parent. À l'activation, l'app demande la permission de notification puis enregistre la subscription push (endpoint + clés) dans une table Supabase push_subscriptions. Désactivable à tout moment depuis le même toggle (supprime la subscription locale et la ligne en base).

Comportement : une notification par jour à 18 h, heure locale de l'appareil, invitant l'enfant à réviser. Anti-nag : aucun rappel les jours où la séance est déjà faite (l'app marque la date de dernière séance dans la subscription). Un seul envoi par jour est garanti, même si le planificateur est décalé (dédoublonnage par date locale).

Envoi : aucun serveur permanent. Un cron GitHub Actions (horaire) lit les subscriptions, signe avec la clé VAPID privée (secret du dépôt) et pousse via le service de notification du navigateur. La clé VAPID privée n'est jamais exposée côté client ; les endpoints morts (désinstallation, permission révoquée) sont purgés automatiquement à l'envoi.

Confidentialité : la table n'est jamais lisible côté client (aucune policy de lecture) ; l'endpoint, une URL opaque non devinable, sert de clé pour mettre à jour ou supprimer sa propre subscription. Aucune donnée nominative (pas de prénom) ; le message de rappel est générique. La seule donnée d'usage stockée est la date de la dernière séance (pour l'anti-nag), rattachée à l'endpoint et non à une identité.

iOS : le push web n'est disponible que si Multiplix est installé sur l'écran d'accueil (iOS 16.4+). Sinon, le toggle affiche une invite à installer l'app d'abord.

9Périmètre — Ce que l'application ne fait PAS

  • Pas d'addition ni de soustraction (le périmètre reste le seul champ multiplicatif)
  • Pas de comptes utilisateurs ni d'authentification ; aucune donnée d'apprentissage envoyée à un serveur (le seul stockage distant concerne les avis et les abonnements push, anonymes — §5.2, §8.1)
  • Pas de classement entre enfants (pas de compétition)
  • Pas de mode examen chronométré
  • Pas de récompenses payantes
  • Pas de collecte de données personnelles

Division : exclue du cœur v1 (focus unique sur la mémorisation des tables), elle n'est plus écartée sur le principe — elle est spécifiée comme niveau 2 optionnel (§11) : un track séparé qui révise les mêmes faits sous forme de division, déclenché uniquement après maîtrise multiplicative. Un enfant qui travaille encore ses tables ne le voit pas, donc le focus unique de la v1 est préservé.

10Métriques de succès

L'application est considérée comme ayant atteint son objectif quand :

MétriqueCible
Faits en boîte 4+36/36
Temps de réponse moyen< 3 secondes
Taux de bonne réponse (boîte 4+)> 95%
Durée estimée pour atteindre l'objectif6-10 semaines à raison de 5 séances/semaine

11Niveau 2 — Réviser les faits par la division

Le cœur de l'application (chapitres 1 à 10) poursuit un objectif borné : amener les 36 faits multiplicatifs en boîte 5. Une fois cet objectif atteint, l'enfant a obtenu tous les badges et l'image mystère est entièrement révélée — l'app a, par design, rempli son rôle (§4.1, §5.1). Le niveau 2 est une extension optionnelle qui prolonge le parcours sans rouvrir le chantier multiplicatif : il re-pratique exactement les mêmes faits, mais posés sous forme de division (« 56 ÷ 7 = ? »). C'est l'évolution « lien division » historiquement listée en V2, ici pleinement spécifiée.

Statut. Le niveau 2 se situe au-delà du périmètre v1 (§9). Il ne se déclenche jamais tant que la multiplication n'est pas (quasi) maîtrisée — un enfant qui travaille encore ses tables ne le voit pas. Le focus unique de la v1 reste donc préservé.

11.1Pourquoi la division consolide la multiplication

Sources : LeFevre & Morris (1999), Mauro, LeFevre & Morris (2003), Campbell (1999), De Brauwer & Fias (2009), Huber et al. (2013)

La division n'est pas un domaine cognitif séparé : on résout une division en mobilisant la multiplication. « 56 ÷ 7 » est traité comme « 7 fois combien font 56 ? » — une récupération à facteur manquant dans la table déjà apprise. Présenter une division en format multiplicatif accélère la réponse, et résoudre une division facilite ensuite la multiplication correspondante (asymétrie de médiation, observée surtout pour les grands faits). Réviser les faits sous forme de division revient donc à faire du retrieval practice sur le réseau multiplicatif par une autre porte d'entrée — pas à apprendre un corpus neuf.

Chez l'enfant, multiplication et division se développent en parallèle dès le CE2, et la corrélation entre les deux est d'autant plus forte que l'élève est performant. Le débat théorique (réseaux séparés reliés par médiation vs. représentation unique partagée) n'est pas tranché, mais les deux modèles prédisent qu'entraîner un membre renforce son inverse : la prémisse du niveau 2 tient quel que soit le camp.

11.2Inventaire des faits de division

Source : Campbell (1997)

Chaque fait multiplicatif a×b=P engendre les divisions P÷a=b et P÷b=a. Contrairement à la multiplication, la division n'est pas commutative : « 56 ÷ 7 = 8 » et « 56 ÷ 8 = 7 » sont deux faits distincts, avec deux réponses différentes (le transfert entre eux est sensible à l'ordre, alors qu'en multiplication a×b et b×a transfèrent à l'identique). La réduction par commutativité qui ramenait les 100 multiplications à 36 faits ne s'applique donc pas :

  • 28 faits non-carrés × 2 sens = 56 faits
  • 8 carrés (49÷7=7, …, 81÷9=9) × 1 sens = 8 faits
  • Total : 64 faits de division

Les divisions par 1 et par 10 restent traitées comme des règles, jamais mémorisées — cohérent avec l'exclusion des ×1 et ×10 (§2.3). Les réponses des 64 faits sont toujours des nombres de 2 à 9 (un seul chiffre) : l'entrée reste plus simple qu'en multiplication (jamais de résultat à deux chiffres à saisir).

11.3Déclenchement

Sources : Programmes de l'Éducation nationale (attendus de fin de CE2) ; Common Core State Standards (3.OA) ; Van de Walle

Le niveau se débloque sur le même principe que la règle bonus ×11 (§2.3) : un critère fondé sur les badges — donc permanent, une mauvaise journée ne « reprend » pas l'accès — l'obtention du badge « Génie de la multiplication » (toutes les tables en boîte 5). Le déblocage est annoncé par une carte dédiée dans le récap (« Tu débloques les divisions ! ») de la séance qui complète la dernière table.

Rythme d'introduction. Comme le niveau ne s'ouvre qu'à la maîtrise complète des tables, tous les faits multiplicatifs parents sont déjà en boîte 5 au déblocage : il n'y a donc pas d'échelonnement fait-par-fait. Les divisions sont introduites au même rythme que les tables (§3.4bis) : 2 nouvelles par séance maximum, dans l'ordre canonique (doubles → ×5 → ×9 → carrés → dérivés, appliqué au couple diviseur/quotient), et seulement si les divisions déjà introduites sont en boîte ≥ 2. La condition « le fait multiplicatif parent est en boîte 5 » reste vérifiée dans le code mais agit comme filet de sécurité : si une table régresse après le déblocage (erreur en révision d'entretien), ses divisions ne sont pas introduites tant qu'elle n'est pas re-maîtrisée.

Le timing colle au curriculum : à la fin du CE2 (l'âge de l'utilisatrice cible), les programmes français attendent à la fois la connaissance des tables de 2 à 9 et l'obtention du quotient et du reste d'une division euclidienne par un nombre à un chiffre. La division n'est donc pas en avance — elle est attendue la même année. Common Core enseigne d'ailleurs multiplication et division ensemble dès le grade 3 via la relation d'inversion.

Une seule séance par jour, un seul bouton. Le déblocage ne fait pas apparaître un second bouton : l'accueil garde son unique « C'est parti ! ». Une fois les tables maîtrisées, leur image est complète (§5.1) et elles ne demandent plus que de la maintenance (révisions tous les 21 jours, ou re-ancrage d'un fait retombé). La séance du jour est donc la division, dans laquelle on intègre les quelques faits de tables réellement dus ce jour-là (plafonnés à 6 par séance pour ne pas noyer la division ; × et ÷ entrelacés dans la même séance) plutôt que de leur consacrer une séance entière. Ainsi la division progresse chaque jour, la maintenance des tables n'est jamais en retard, et l'enfant ne peut pas esquiver la division (plus difficile) en re-jouant des tables acquises.

Pourquoi intégrer plutôt qu'alterner ? Les faits passent en boîte 5 à des jours différents, donc leurs révisions (à +21 j) deviennent dues en continu (~2 faits/jour pour 36 faits). Un modèle « jour tables ou jour division » aurait donc fait des tables presque tous les jours, chacune une séance d'1 vraie révision noyée dans du bonus — étouffant la division. L'intégration résout ça.

11.4Stratégie « pense à la multiplication »

Sources : Robinson & Dubé (2009), Robinson & LeFevre (2012)

Point crucial : même avec une excellente fluence multiplicative, les enfants n'exploitent pas spontanément la relation d'inversion — il faut l'enseigner explicitement. Le niveau 2 ne suppose donc jamais que l'enfant « devinera » 56 ÷ 7 parce qu'il sait 7 × 8. L'astuce de dérivation est le cœur de l'introduction, pas un bonus :

« 56 ÷ 7, c'est : 7 fois combien font 56 ? »

Concrètement, l'astuce met en avant l'équation à facteur manquant — la représentation recommandée (Van de Walle ; ORIGO « think-multiplication »), qui présente la division et sa forme multiplicative côte à côte. On affiche 7 × ☐ = 56, la case « ☐ » mise en valeur (un emplacement à remplir), et c'est l'enfant qui retrouve le facteur ; la réponse n'apparaît qu'en conclusion (« Donc 56 ÷ 7 = 8 »). C'est ce geste — chercher le facteur manquant — qu'on installe, plutôt que de révéler d'emblée « 7 × 8 = 56 ».

Comme pour les stratégies multiplicatives (§3.4bis), l'astuce est affichée à l'introduction et en cas d'erreur pour les faits en boîte ≤ 2, et énoncée à voix haute. C'est le prolongement direct de la philosophie de dérivation existante, pas un mécanisme neuf.

11.5Image mystère dédiée

La grille support reste la même grille 8×8 = 64 cases (§5.1). La case (r,c) porte la division « produit de r et c, divisé par r » : la case (7,8) est 56÷7, la case (8,7) est 56÷8. Les 64 faits se posent ainsi un par case, en bijection parfaite — sans la redondance de la multiplication (où 36 faits se répartissaient sur 64 cases).

La symétrie miroir disparaît, et c'est fidèle : là où les deux cases (a,b) et (b,a) se révélaient en synchrone pour matérialiser la commutativité (§5.1), elles évoluent désormais indépendamment — une case peut être nette pendant que sa miroir reste floue. Le visuel enseigne ainsi que 56÷7 et 56÷8 sont deux questions distinctes. Ce n'est pas un compromis sur le support, c'est une représentation correcte de la non-commutativité.

L'image de division est une image propre, distincte de celle de la multiplication : cette dernière reste affichée, complète, comme témoin de la réussite (§5.1) — on ne la re-floute jamais. Conséquence : à grille identique, l'image de division demande 64 maîtrises indépendantes (contre 36 en multiplication, où maîtriser un fait dévoilait deux cases d'un coup), soit un parcours sensiblement plus long — exactement l'effet recherché pour prolonger l'engagement au-delà de la complétion.

Accès. Pas de nouvelle tuile sur l'accueil : la division est une image, pas une fonction. La tuile « Mon image » devient simplement « Mes images » au déblocage, et l'écran de progression propose un sélecteur entre l'image des multiplications et celle des divisions, ouvert par défaut sur la division (l'image des tables est déjà complète).

Badges. Le niveau 2 ajoute un jeu de badges symétrique à celui de la multiplication (§4.2), masqué tant que le niveau n'est pas débloqué (même logique que la révélation différée de la règle ×11, §2.3) : Première division maîtrisée (🥈, première division en boîte 5), huit badges Divisions par N (➗, n = 2..9, toutes les divisions par n en boîte 4-5) et Maître de la division (🎓, les 64 divisions en boîte 5).

11.6Adaptations de l'algorithme

Sources : Campbell (1997), Curtis, Huebner & LeFevre (2016)

Le moteur Leitner, l'entrelacement et la composition de séance (§1, §6) sont agnostiques au type de fait et se réutilisent tels quels. Trois ajustements propres à la division :

  • Anti-interférence renforcée (§1.2) : 56÷7 et 56÷8 partagent le dividende et sont hautement confusibles — ils ne doivent jamais figurer dans la même série. Les erreurs de division sont typiquement des « erreurs de table » (une réponse dont le produit implicite est proche du dividende), ce qui confirme le besoin de les espacer.
  • Seuil de vitesse plus généreux (§3.3) : la division reste plus lente que la multiplication, même maîtrisée (effet de taille du problème plus marqué) ; le seuil de l'étoile rayonnante et de la montée de boîte en tient compte — 6 s au clavier, 4 s en voix (contre 5 s / 3 s en multiplication).
  • Bienveillance accrue (§1.1, §7.2) : s'attendre à davantage d'erreurs et de réponses lentes qu'en multiplication ; le principe « un fait oublié revient sans notion d'échec » est d'autant plus important.

11.7Réserve méthodologique honnête

Sources : Axtell et al. (2009) ; Codding, Burns & Lukito (2011)

Des interventions de fluence ciblant directement la division existent et fonctionnent (cover-copy-compare, taped problems, detect-practice-repair). En revanche, les bénéfices de la répétition espacée sont démontrés sur la multiplication et la rétention en général, mais pas directement sur les faits de division : les méta-analyses traitent la division au sein des « faits de base » sans isoler son effet, et l'opération s'avère être un modérateur significatif. Appliquer Leitner à la division est donc une généralisation plausible mais non directement prouvée — un pari raisonné, assumé comme tel, à surveiller si l'usage révélait un comportement différent de la multiplication.

12Évolutions possibles (V2)

  • Mode défi : séance bonus optionnelle le week-end
  • Mode multi-enfant (plusieurs profils sur le même appareil)

13Références

  1. Axtell, P. K., McCallum, R. S., Bell, S. M., & Poncy, B. (2009). Developing math automaticity using a classwide fluency building procedure for middle school students: A preliminary study. Psychology in the Schools, 46(6), 526–538.
  2. Brendefur, J., Strother, S., Thiede, K., & Appleton, S. (2015). Developing multiplication fact fluency. Advances in Social Sciences Research Journal, 2(8). doi:10.14738/assrj.28.1396
  3. Burns, M. K., Kanive, R., & DeGrande, M. (2012). Effect of a computer-delivered math fact intervention as a supplemental intervention for math in third and fourth grades. Remedial and Special Education, 33(3), 184–191. doi:10.1177/0741932510381652
  4. Butler, R. (1988). Enhancing and undermining intrinsic motivation: The effects of task-involving and ego-involving evaluation on interest and performance. British Journal of Educational Psychology, 58(1), 1–14. doi:10.1111/j.2044-8279.1988.tb00874.x
  5. Campbell, J. I. D. (1997). On the relation between skilled performance of simple division and multiplication. Journal of Experimental Psychology: Learning, Memory, and Cognition, 23(5), 1140–1159. doi:10.1037/0278-7393.23.5.1140
  6. Campbell, J. I. D. (1999). Division by multiplication. Memory & Cognition, 27(5), 791–802. doi:10.3758/BF03198532
  7. Cepeda, N. J., Vul, E., Rohrer, D., Wixted, J. T., & Pashler, H. (2008). Spacing effects in learning: A temporal ridgeline of optimal retention. Psychological Science, 19(11), 1095–1102. doi:10.1111/j.1467-9280.2008.02209.x
  8. Codding, R. S., Burns, M. K., & Lukito, G. (2011). Meta-analysis of mathematic basic-fact fluency interventions: A component analysis. Learning Disabilities Research & Practice, 26(1), 36–47. doi:10.1111/j.1540-5826.2010.00323.x
  9. Cowan, R., Donlan, C., Shepherd, D.-L., Cole-Fletcher, R., Saxton, M., & Hurry, J. (2011). Basic calculation proficiency and mathematics achievement in elementary school children. Journal of Educational Psychology, 103(4), 786–803. doi:10.1037/a0024556
  10. Curtis, E. T., Huebner, M. G., & LeFevre, J.-A. (2016). The relationship between problem size and fixation patterns during addition, subtraction, multiplication, and division. Journal of Numerical Cognition, 2(2), 91–115. doi:10.5964/jnc.v2i2.17
  11. De Brauwer, J., & Fias, W. (2009). A longitudinal study of children's performance on simple multiplication and division problems. Developmental Psychology, 45(5), 1480–1496. doi:10.1037/a0015465
  12. Dotan, D., & Zviran-Ginat, S. (2022). Elementary math in elementary school: The effect of interference on learning the multiplication table. Cognitive Research: Principles and Implications, 7, 101. doi:10.1186/s41235-022-00451-0
  13. Hattie, J., & Timperley, H. (2007). The power of feedback. Review of Educational Research, 77(1), 81–112. doi:10.3102/003465430298487
  14. Huber, S., Fischer, U., Moeller, K., & Nuerk, H.-C. (2013). On the interrelation of multiplication and division in secondary school children. Frontiers in Psychology, 4, 740. doi:10.3389/fpsyg.2013.00740
  15. Kang, S. H. K. (2016). Spaced repetition promotes efficient and effective learning. Policy Insights from the Behavioral and Brain Sciences, 3(1), 12–19. doi:10.1177/2372732215624708
  16. LeFevre, J.-A., & Morris, J. (1999). More on the relation between division and multiplication in simple arithmetic: Evidence for mediation of division solutions via multiplication. Memory & Cognition, 27(5), 803–812. doi:10.3758/BF03198533
  17. Mauro, D. G., LeFevre, J.-A., & Morris, J. (2003). Effects of problem format on division and multiplication performance: Division facts are mediated via multiplication-based representations. Journal of Experimental Psychology: Learning, Memory, and Cognition, 29(2), 163–170. doi:10.1037/0278-7393.29.2.163
  18. Rea, C. P., & Modigliani, V. (1985). The effect of expanded versus massed practice on the retention of multiplication facts and spelling lists. Human Learning, 4, 11–18.
  19. Robinson, K. M., & Dubé, A. K. (2009). Children's understanding of the inverse relation between multiplication and division. Journal of Experimental Child Psychology. ScienceDirect
  20. Robinson, K. M., & LeFevre, J.-A. (2012). The inverse relation between multiplication and division: Concepts, procedures, and a cognitive framework. Educational Studies in Mathematics, 79(3), 409–428. doi:10.1007/s10649-011-9330-5
  21. Rohrer, D., Dedrick, R. F., & Burgess, K. (2014). The benefit of interleaved mathematics practice is not limited to superficially similar kinds of problems. Psychonomic Bulletin & Review, 21(5), 1323–1330. doi:10.3758/s13423-014-0588-3
  22. Rohrer, D., & Taylor, K. (2007). The shuffling of mathematics problems improves learning. Instructional Science, 35, 481–498. doi:10.1007/s11251-007-9015-8