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îte | Intervalle de révision | Signification |
|---|---|---|
| 1 | Chaque séance | Nouveau ou échoué récemment |
| 2 | 1 jour | Répondu correctement 1 fois |
| 3 | 3 jours | Répondu correctement 2 fois consécutives |
| 4 | 7 jours | Répondu correctement 3 fois consécutives |
| 5 | 21 jours | Maî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
| Composant | Choix | Justification |
|---|---|---|
| Framework UI | Preact 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) |
| Build | Nobuild : 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 |
| Stockage | localStorage pour toutes les données d'apprentissage + export/import JSON | Persistance locale, aucun compte, aucune donnée enfant en ligne |
| Animations | CSS transitions + keyframes (pas de bibliothèque d'animation) | Feedback visuel motivant, zéro dépendance |
| Avis & rappels | Supabase (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 push | Web Push API + clés VAPID ; envoi par un cron GitHub Actions (paquet web-push), pas de serveur permanent | Rappel quotidien sans backend dédié (cf. §8.1) |
| PWA / offline | Service Worker maison (cache-first sur les navigations), manifest.json, fontes self-hostées précachées | Installable, cold launch instantané, fonctionne 100 % hors-ligne |
| Hébergement | GitHub Pages (repo isc/tablito, BASE=/) | 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
- Écran d'accueil avec le personnage mascotte (voir §4)
- Saisie du prénom → « Salut Zoé ! »
- Explication ludique : « Je suis [Mascotte]. On va apprendre les multiplications ensemble, 5 minutes par jour ! »
-
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 aveca' ≥ a ET b' ≥ b(avec normalisation min/max) — l'idée étant qu'un enfant qui sait6×9sait aussi2×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×7mais réussit5×8, on n'introduit pas4×7en boîte 3 sous prétexte que5×8domine — 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). - 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é viaUserProfile.hasSeenRulesIntropour ne pas le rejouer. - 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
- 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)
- L'enfant tape sa réponse sur un pavé numérique intégré (gros boutons tactiles)
- Validation automatique à 2 chiffres, ou bouton « OK » pour les résultats < 10
- 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 :
- Affichage visuel : Grille de points (array) animée — ex : 3 rangées de 7 points qui apparaissent une par une
- Lien avec l'addition : « 3 × 7, c'est 7 + 7 + 7 = 21 »
- Commutativité : La grille pivote de 90° → « 7 × 3, c'est pareil ! C'est aussi 21 »
- 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.
- Première question : Posée immédiatement après l'introduction
- 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 :
- Brendefur, J., Strother, S., Thiede, K., Lane, C., & Surges-Prokop, M. J. (2015). A Professional Development Program to Improve Math Skills Among Preschool Children in Head Start. Boise State ScholarWorks. scholarworks.boisestate.edu/cifs_facpubs/150
- Wichita Public Schools (2014). Multiplication Fact Strategies (Van de Walle / DMT framework). Multiplication-Fact-Strategies.pdf
- DMT Institute. Drills vs. Strategies: Building Flexible Thinking with Multiplication Facts. mathsuccess.dmtinstitute.com
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) :
- Doubles (×2) — addition répétée, fondation pour ×3 et ×4
- Fives (×5) — skip counting, fondation pour ×6 et ×7
- Nines (×9) — astuce ×10 − n, anchor visuel fort
- Squares (n × n) — anchors mémorables, appui pour les voisins (×6, ×7, ×8)
- 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)
| Pivot | Astuce | Exemple |
|---|---|---|
| × 9 | near-ten : × 10 moins une fois | 7 × 9 = 7 × 10 − 7 = 63 |
| × 5 | skip-count : compter par 5 | 4 × 5 = 5 + 5 + 5 + 5 = 20 (on compte : 5 → 10 → 15 → 20) |
| × 3 | double-add : × 2 plus une fois | 7 × 3 = 7 × 2 + 7 = 21 |
| × 4 | double-double : doubler le double | 6 × 4 = (6 × 2) × 2 = 24 |
| × 6 | five-plus-one : × 5 plus une fois | 7 × 6 = 7 × 5 + 7 = 42 |
| × 7 | five-plus-two : × 5 plus × 2 | 8 × 7 = 8 × 5 + 8 × 2 = 56 |
| × 8 | double-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 ≤ 7 faits à introduire (soit ≥ 29/36 introduits), 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é. Le seuil couvre tout le coin difficile que le seeding par dominance du placement ne peut pas inférer (les faits au-delà du dernier réussi — ex : 7×9, 8×9, 9×9), pas seulement 8×9/9×9.
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é | Contenu | Nombre |
|---|---|---|
q-A-B | « A fois B » — énoncé de la question | 64 |
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-B | Astuce de dérivation parlée (cf. §3.4bis) | 27 |
welcome-*, recap-done | Phrases statiques du parcours de bienvenue et du récap | 4 |
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
| Badge | Condition | Icône |
|---|---|---|
| Premier pas | Terminer la 1ère séance | 🌱 |
| Première case révélée | Premier fait passé en boîte 4 (1ère case quasi-nette sur l'image mystère) | 🖼️ |
| Première multiplication maîtrisée | Premier fait passé en boîte 5 (1ère case entièrement dévoilée) | 🥇 |
| Régularité | 7 jours consécutifs | 🔥 |
| Machine | 10 réponses correctes d'affilée dans une séance | ⚡ |
| Exploration | Avoir vu tous les faits au moins une fois | 🗺️ |
| Table de [N] | Maîtriser tous les faits d'une table | ⭐ |
| Génie de la multiplication | Toutes les multiplications en boîte 5 | 🏆 |
| Véloce | 5 étoiles dorées d'affilée | 🚀 |
| Persévérance | Revenir après 3+ jours d'absence | 💪 |
| Flamme éternelle | 30 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. Le niveau 3 (§12) ajoute de même son propre jeu pour la division avec reste — détaillé en §12.6.
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 introduit | Case opaque (fragment masqué) |
| Boîte 1 | Silhouette floue |
| Boîte 2 | Aplat simple, forme reconnaissable |
| Boîte 3 | Couleurs principales |
| Boîte 4 | Ombres et volumes |
| Boîte 5 | Dé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 :
- Transférer (vers un autre appareil) : affiche un QR code à scanner avec l'appareil photo du nouvel appareil, qui ouvre Tablito avec la progression pré-installée. Le profil est gzippé puis chiffré côté client (AES-GCM), déposé dans une table Supabase sous un code haute entropie ; la clé de déchiffrement voyage uniquement dans le fragment d'URL du QR (jamais envoyée au serveur). Dépôt à lecture unique, expiration 15 minutes. Deux façons de consommer le QR côté nouvel appareil : l'ouvrir comme un lien (appareil photo système — sur Android le lien route vers la PWA installée), ou le scanner depuis l'app (écran « Déjà une progression ? », caméra in-app via qr-scanner vendoré) — indispensable vers un iPhone, où un lien n'ouvre jamais la web app installée et où le localStorage de celle-ci est cloisonné de Safari
- Exporter les données (JSON)
- Importer les données (collage d'une sauvegarde exportée)
- Guide utilisateur : ouvre
/guide/dans un nouvel onglet (page statique servie depuis la même origine, générée parscripts/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 Tablito ; 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)
- Suivi à distance : partager la progression de cet appareil vers celui d'un parent, ou suivre un enfant qui pratique ailleurs (détails en §14)
- 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
| Écran | Contenu |
|---|---|
| Qui joue ? | Choix du joueur au lancement — visible uniquement dès 2 profils sur l'appareil (§13) |
| Accueil | Mascotte (animations d'idle), prénom, streak, bouton « C'est parti ! » (+ bouton « changer de joueur » en multi-profils) |
| Séance — Intro | Grille de points animée pour un nouveau fait |
| Séance — Question | Question en gros, pavé numérique, barre de progression |
| Séance — Feedback correct | Animation joyeuse, mascotte enthousiaste |
| Séance — Feedback incorrect | Bonne réponse affichée avec grille, ton bienveillant (mascotte neutre, jamais déçue) |
| Récap séance | Bilan progrès (faits promus, progression globale), badge éventuel, bouton « À demain » |
| Progression | Image mystère (vue enfant, §5.1) ; grille Leitner colorée réservée au dashboard parent (§5.2) |
| Badges | Collection de badges obtenus |
| Parent | Dashboard 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 transfert direct entre appareils par QR code (§7)
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 Tablito 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é. Le niveau 3 (§12) prolonge la même logique vers la division avec reste, après maîtrise des divisions exactes.
10Métriques de succès
L'application est considérée comme ayant atteint son objectif quand :
| Métrique | Cible |
|---|---|
| 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'objectif | 6-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 critère exact que la règle bonus ×11 (§2.3) : l'obtention des 8 badges « Table de N » (toutes les tables placées en boîte 4+). Critère fondé sur des badges — donc permanent, une mauvaise journée ne « reprend » pas l'accès. C'est le moment naturel « je connais toutes mes tables ». 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 décroche le 8e badge de table.
Pourquoi pas « Génie de la multiplication » (boîte 5 partout) ? Parce que la division est avant tout un outil d'entretien des multiplications (cf. ci-dessous), et qu'exiger la boîte 5 sur les 36 faits avant d'ouvrir le niveau imposait un long palier de pur grind boîte 4→5, sans aucun contenu nouveau — trop sévère et démotivant. On ouvre dès la maîtrise des tables ; le passage boîte 4→5 se poursuit ensuite naturellement via l'entretien intégré aux séances de division, et « Génie » devient un trophée de complétion décroché pendant le niveau 2 (carte « Nouveau badge » classique, plus une porte d'entrée).
Rythme d'introduction. 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 4+ » est conservée comme filet de sécurité per-fait : on n'introduit la division d'un fait que lorsque ce fait précis est solide. Le seuil est exactement celui de l'ouverture du niveau (badges « Table de N » = boîte 4+, cf. isDivisionUnlocked) — et c'est délibéré. Exiger la boîte 5 par fait alors que le niveau s'ouvre à la boîte 4 créait deux incohérences : (1) un profil ouvrant la division avec toutes ses tables en boîte 4 mais aucune encore en boîte 5 se retrouvait avec zéro fait introductible ; (2) un fait qui régresse et se coince en boîte 4 gelait indéfiniment l'introduction de ses divisions — vécu en prod : 56÷7 et 56÷8 jamais introduits parce que leur parent 7×8 (le fait le plus dur) stagnait en boîte 4 pendant que les 62 autres divisions étaient déjà maîtrisées. Aligner sur la boîte 4 supprime les deux. Effet de bord bénéfique conservé : l'enfant commence à diviser par les faits qu'il connaît déjà bien.
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 (boîte 4+), leur image est quasi complète (§5.1 ; elle se parachève à mesure que les derniers faits passent en boîte 5) 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.
Plancher de longueur. Les tout premiers jours du niveau 2, la division est maigre : le rythme d'intro est de 2 faits/séance et seuls les faits dont le parent est en boîte 4+ sont éligibles — il n'y a donc presque rien à réviser, et peu de tables sont dues. Sans filet, la séance tomberait à 2-5 questions. On applique donc le même plancher qu'en multiplication-only et en division pure (§6.2) : sous ~12 questions, on complète par des révisions bonus (sans toucher au calendrier Leitner) — divisions introduites d'abord, puis tables (réserve inépuisable, toutes introduites au déblocage). Ce padding bonus est distinct du plafond d'entretien (≤ 6 faits dus) : il ne se déclenche que faute de contenu, et se résorbe de lui-même à mesure que la division grossit.
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.
- Mathématiques CE2 — Attendus de fin d'année (Éduscol)
- Common Core — Grade 3, Operations & Algebraic Thinking (3.OA)
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 ».
Appui visuel : le partage en lots. L'intro montre aussi la division comme un partage équitable sur la grille de points (modèle array / equal-groups, le pont recommandé vers la multiplication — Van de Walle, PBS LearningMedia). La grille du fait se remplit (diviseur rangées de quotient points), puis ses rangées se séparent en lots (au nombre du diviseur) ; un lot est mis en avant et son compte est dévoilé = le quotient, sous la question « on partage 56 en 7 lots égaux — combien dans chaque ? ». Le visuel (partitif) et l'équation à facteur manquant se renforcent : on voit 7 lots de 8 et on cherche « 7 × ☐ = 56 ». La grille support est celle de la multiplication (§5.1), réutilisée telle quelle.
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.
12Niveau 3 — La division avec reste
Le niveau 2 (§11) s'arrête aux divisions exactes : 64 faits dont le quotient tombe toujours juste. L'attendu scolaire — et l'usage réel des tables pour les années qui suivent — est plus large : trouver le quotient et le reste quand le dividende ne tombe pas juste (« 45 ÷ 7 = 6, reste 3 »). Le niveau 3 prolonge le parcours par ce geste, l'encadrement par les multiples. Comme le niveau 2, il ne rouvre aucun chantier : il re-mobilise le même réseau multiplicatif par une troisième porte d'entrée — pour répondre à 45 ÷ 7, l'enfant récupère le fait de table immédiatement inférieur (7 × 6 = 42), puis compte l'écart. La progression se lit ainsi : niveau 1 « je connais mes tables », niveau 2 « je les traverse dans l'autre sens », niveau 3 « je m'en sers quand ça ne tombe pas juste ».
Statut. Comme le niveau 2, le niveau 3 est invisible tant qu'il n'est pas débloqué : un enfant qui travaille encore ses tables ou ses divisions exactes n'en voit rien — le focus des niveaux précédents est préservé.
12.1Pourquoi ce niveau, et pourquoi à ce moment
Sources : Programmes de l'Éducation nationale (attendus de fin de CE2 et programme de CM1) ; Common Core (4.OA.3) ; LeFevre & Morris (1999) ; Campbell (1997) ; Robinson & LeFevre (2012) ; Van de Walle
Côté programme. Les attendus de fin de CE2 déjà cités en §11.3 demandent à la fois la connaissance des tables et « l'obtention du quotient et du reste d'une division euclidienne par un nombre à un chiffre » — le niveau 2 ne couvre que la moitié « exacte » de cet attendu. Le CM1 formalise ensuite la division posée, dont le geste mental central est précisément l'encadrement : « dans 45, combien de fois 7 ? ». Un enfant qui termine l'image des divisions (niveaux 1 + 2, soit typiquement 4 à 6 mois de parcours) entre en CM1 : le niveau 3 arrive à l'heure du programme, ni en avance ni en retard. Common Core suit le même séquencement — l'interprétation des restes apparaît au grade 4 (4.OA.3).
Côté cognition. Le mécanisme est celui, déjà documenté, de la médiation par la multiplication (§11.1) : la division avec reste se résout en récupérant le multiple immédiatement inférieur dans la table, puis en complétant par un écart additif trivial (toujours < 9). C'est du retrieval practice sur le réseau multiplicatif existant — pas un corpus neuf à mémoriser — avec en prime la compétence scolaire la plus rentable de l'année suivante : un enfant fluent sur l'encadrement aborde la technique opératoire de la division posée avec le seul morceau réellement difficile déjà automatisé.
12.2Inventaire : 64 zones entre multiples
L'unité de maîtrise n'est plus un fait isolé mais une zone : la case (d, q) — diviseur d, quotient q, tous deux de 2 à 9 — couvre les dividendes compris entre d×q inclus et d×(q+1) exclu. La case (7, 6) couvre ainsi les dividendes 42 à 48 divisés par 7 ; la case (7, 7) prend le relais à 49. Pour un diviseur donné, les zones partitionnent l'intervalle des dividendes sans chevauchement.
- 64 cases (8 diviseurs × 8 quotients), non commutatives comme au niveau 2 : (7, 6) porte « 42-48 ÷ 7 », (6, 7) porte « 42-47 ÷ 6 » — deux questions distinctes.
- Le reste est tiré au sort à chaque révision : r uniforme dans 0..d−1, dividende = d×q + r. Le cas r = 0 (probabilité 1/d) garde vivante la discrimination « est-ce que ça tombe juste ? » — sans lui, l'enfant apprendrait le méta-pattern « il y a toujours un reste » — et entretient au passage les divisions exactes du niveau 2. Seule exception : l'écran d'introduction d'une zone utilise un reste canonique déterministe (max(1, ⌊d/2⌋), ex : 45 ÷ 7 pour la zone (7,6)) — non nul pour montrer le concept, et fixe pour que l'audio pré-généré colle aux nombres affichés.
- Les réponses restent à un chiffre : quotient de 2 à 9, reste de 0 à 8. Comme au niveau 2, la saisie est plus simple qu'en multiplication — jamais de nombre à deux chiffres à taper.
- Les divisions par 1 et par 10 restent des règles (§2.3, §11.2), jamais mémorisées ; le reste d'une division par 10 se lit directement au chiffre des unités (glisse-nombre inversé).
Pourquoi Leitner s'applique à une zone. L'association mémorisée est stable : quelle que soit la valeur de r tirée, la case mobilise le même fait d'appui (d×q) et le même geste. La variabilité du dividende est même un atout — elle empêche la mémorisation par cœur d'un énoncé exact et force le geste d'encadrement à chaque présentation, là où les niveaux 1 et 2 présentaient toujours la même question à l'identique.
12.3Déclenchement
Même logique que le niveau 2 (§11.3), translatée d'un niveau : le niveau 3 se débloque à l'obtention des 8 badges « Divisions par N » (toutes les divisions par n en boîte 4+). Critère fondé sur des badges, donc permanent. « Maître de la division » (boîte 5 sur les 64 divisions) n'est pas exigé — même raisonnement qu'en §11.3 pour « Génie de la multiplication » : exiger la boîte 5 partout imposerait un long palier de grind sans contenu nouveau, alors que le passage 4→5 se poursuit naturellement via l'entretien intégré aux séances du niveau 3, où « Maître de la division » devient un trophée décroché en route. Le déblocage est annoncé par une carte dédiée dans le récap (« Tu débloques la division avec reste ! »).
Rythme d'introduction. Identique aux niveaux précédents : 2 nouvelles cases 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 cases déjà introduites sont en boîte ≥ 2 (avec la même exception de phase finale qu'en §3.4bis). Filet de sécurité per-case : la case (d, q) n'est introduite que si la division exacte parente — la case (d, q) de la grille du niveau 2, soit d×q ÷ d — est en boîte 5. Les coordonnées coïncident exactement d'une grille à l'autre : chaque zone s'ouvre quand son point d'ancrage est parfaitement solide.
Une seule séance par jour, un seul bouton. Comme au niveau 2 (§11.3) : pas de second bouton, la séance du jour devient la division avec reste, et les révisions de maintenance des niveaux 1 et 2 (tables et divisions exactes dues) y sont intégrées, entrelacées avec les nouvelles questions. Le plafond d'entretien de 6 faits dus par séance absorbe le régime de croisière : 36 tables et 64 divisions revues tous les 21 jours produisent en moyenne (36 + 64) / 21 ≈ 5 révisions dues par jour. Le plancher de longueur (~12 questions, complétées par des révisions bonus sans effet Leitner) s'applique à l'identique pendant les premiers jours où le niveau est maigre.
12.4Stratégie « cherche le multiple juste en dessous »
Sources : Robinson & Dubé (2009), Robinson & LeFevre (2012) ; Van de Walle
Comme pour l'inversion multiplication/division (§11.4), on n'attend pas de l'enfant qu'il découvre le geste seul : l'encadrement est enseigné explicitement, et il est le cœur de l'introduction de chaque case. L'astuce prolonge l'équation à facteur manquant du niveau 2 en équation à encadrement :
« 45 ÷ 7, c'est : 7 fois combien font presque 45, sans dépasser ? » —
7 × ☐ ≤ 45. On trouve 7 × 6 = 42, et de 42 à 45 il y a 3. Donc 45 ÷ 7 = 6, reste 3.
Appui visuel : le groupement. Là où le niveau 2 montrait le partage (modèle partitif : « on partage 56 en 7 lots égaux »), le niveau 3 montre le groupement (modèle quotitif) : des rangées de 7 points se remplissent une à une (7, 14, 21… 42), on s'arrête avant de dépasser 45, et les 3 points qui ne forment pas une rangée complète restent isolés, mis en évidence : le reste, c'est ce qui ne rentre pas. Les deux modèles de la division sont ainsi couverts sur l'ensemble du parcours — la complémentarité recommandée par la littérature didactique (Van de Walle).
Le feedback de conclusion affiche l'égalité euclidienne en ligne — « 45 = 7 × 6 + 3 » — la forme exacte que l'enfant retrouvera en CM1. Comme aux niveaux précédents, l'astuce est affichée à l'introduction et en cas d'erreur pour les cases en boîte ≤ 2, et énoncée à voix haute (nouvelles clés TTS par case).
12.5Saisie en deux temps
C'est le principal coût UX nouveau du niveau : une question appelle deux réponses. Le flux reste sur un seul écran :
- La question s'affiche (« 45 ÷ 7 = ? ») et est énoncée à voix haute.
- Premier champ, mis en évidence : le quotient (« Combien de fois ? »). Un chiffre, validation automatique.
- Second champ : le reste (« Il reste combien ? »). Un chiffre (0 inclus), validation automatique.
Mode vocal : l'enfant énonce « six, reste trois » (variantes parsées : « six et il reste trois », « six reste trois ») ; un quotient seul est accepté et déclenche une relance douce (« et il reste ? »). Le cas « ça tombe juste » accepte « six » suivi de « rien » / « zéro » / « ça tombe juste ».
Feedback ciblé par étape : une erreur de quotient ré-affiche l'encadrement complet (les rangées qui se remplissent) ; un bon quotient avec une erreur de reste ne ré-explique que l'écart (42 → 45). Dans les deux cas la case redescend en boîte 1 — l'état Leitner est porté par la case, pas par l'étape — mais l'explication vise l'endroit précis où l'enfant a buté.
12.6Image mystère et badges
Une troisième image mystère propre au niveau, sur la même grille 8×8 : la case (d, q) de l'image porte la zone (d, q), en bijection parfaite — 64 maîtrises indépendantes, sans symétrie miroir (non-commutativité, comme en §11.5). Les images des niveaux 1 et 2 restent affichées, complètes, en témoins des réussites passées ; le sélecteur de l'écran « Mes images » gagne une troisième entrée, ouvert par défaut sur l'image du niveau actif.
Badges, masqués tant que le niveau n'est pas débloqué (même logique de révélation différée qu'aux §2.3 et §11.5) : Premier reste maîtrisé (🥉, première case en boîte 5), huit badges Division avec reste par N (glyphe « ÷Nʳ », n = diviseur 2..9, les 8 cases du diviseur en boîte 4+ — même famille visuelle que les médaillons ×N / ÷N) et Grand maître de la division (👑, les 64 cases en boîte 5).
Tableau de bord parent : le sélecteur Multiplications / Divisions (§5.2) gagne une troisième position « Divisions avec reste » (histogramme par boîte + grille Leitner, ouvert par défaut sur le niveau actif), la vue d'ensemble une carte « Zones maîtrisées », et la liste unifiée des faits les plus difficiles intègre la nouvelle opération avec son marqueur (« 45 ÷ 7 » affiché avec la mention reste).
12.7Adaptations de l'algorithme
Le moteur (Leitner, entrelacement, composition de séance) se réutilise tel quel, comme au niveau 2 (§11.6). Trois ajustements :
- Anti-interférence : les paires confusibles sont les cases de même diviseur à quotients adjacents — (7, 6) et (7, 7) se touchent à un point près (48 ÷ 7 contre 49 ÷ 7). Elles ne figurent jamais dans la même série, et leurs introductions sont espacées de 48h (règle §1.2 inchangée).
- Seuils de vitesse : deux saisies et un geste en deux temps — le seuil passe à 8 s au clavier, 6 s en voix (contre 6 s / 4 s au niveau 2), mesuré de l'affichage de la question à la validation du reste.
- Bienveillance accrue : encore plus d'erreurs et de lenteur attendues qu'au niveau 2 ; le feedback ciblé par étape (§12.5) évite de faire porter à l'enfant une erreur globale quand seul le reste a échappé.
12.8Réserve méthodologique honnête
La réserve du §11.7 s'applique, un cran plus loin. Au niveau 2, on généralisait la répétition espacée de la multiplication à la division ; ici, l'unité de maîtrise n'est même plus une association fixe question→réponse mais un micro-geste sur une zone (récupérer l'ancrage, compléter l'écart). Le pari : la zone est une association stable — « la zone de 7×6 » — et le geste s'automatise par la répétition comme un fait. Il est cohérent avec la littérature sur la médiation multiplicative et sur l'automatisation des stratégies de dérivation (§3.4bis), mais la répétition espacée n'a, à notre connaissance, jamais été testée spécifiquement sur ce format. Pari raisonné, assumé comme tel — à surveiller via le tableau de bord (temps de réponse, répartition des erreurs quotient/reste) si l'usage révélait un comportement différent des deux premiers niveaux.
13Multi-profils — plusieurs enfants par appareil
Une tablette familiale sert souvent à plusieurs enfants. Chaque enfant dispose de son propre profil : faits, boîtes Leitner, badges, séries et images mystère totalement indépendants. Aucune notion de compte ni de mot de passe — tout reste local sur l'appareil (§9).
13.1Parcours
- Mono-profil (cas majoritaire) : rien ne change. Pas d'écran intermédiaire, pas de bouton supplémentaire — zéro friction ajoutée à la boucle quotidienne.
- Ajout d'un enfant : bouton « Ajouter un enfant » dans l'espace parent (section Profils) ou depuis l'écran « Qui joue ? ». Rejoue l'onboarding complet : prénom, test de placement, intro des règles ×1/×10.
- Dès 2 profils : l'app s'ouvre sur l'écran « Qui joue ? » (liste des prénoms, pastille-initiale colorée stable par prénom). On ne devine jamais quel enfant tient l'appareil — choisir coûte un tap, se tromper de profil polluerait les boîtes Leitner des deux enfants.
- Changer de joueur : bouton dédié en haut de l'écran d'accueil (visible uniquement en multi-profils), qui ramène à « Qui joue ? ».
- Retour au premier plan : la PWA restant en mémoire des heures, le choix du boot ne suffit pas — quand l'app revient au premier plan après plus de 15 minutes en arrière-plan et qu'il y a plusieurs profils, « Qui joue ? » est reproposé. Uniquement depuis un écran sans état précieux (accueil, onboarding laissé en plan — même notion que pour les mises à jour du service worker) : une séance, un récap ou une navigation parent en cours ne sont jamais interrompus, et un aller-retour rapide (notification) ne change rien.
- Suppression : « Supprimer ce profil » dans l'espace parent, avec confirmation explicite. S'il reste un seul profil → retour direct à son accueil ; plusieurs → « Qui joue ? » ; aucun → onboarding.
13.2Stockage et migration
Chaque profil vit sous sa propre clé localStorage (multiplix-profile:<id>) ; un index léger (multiplix-profiles) liste les profils (id, prénom) et le profil actif. L'ancien schéma mono-clé (multiplix-profile) est migré automatiquement et silencieusement au premier lancement : le profil existant devient le premier profil de l'index, rien n'est perdu.
L'export/import de sauvegarde reste par-profil : l'export produit le JSON du profil actif (format inchangé, compatible avec les sauvegardes antérieures) ; l'import depuis l'écran d'accueil crée un nouveau profil (jamais d'écrasement d'un autre enfant), tandis que l'import depuis l'espace parent restaure le profil actif.
Le transfert par QR code (§7) est lui aussi par-profil : le profil reçu devient un nouveau profil actif sur l'appareil de destination — sauf si le même enfant (prénom + date de début identiques) y existe déjà, auquel cas son profil est mis à jour au lieu d'être dupliqué (cas du re-transfert). Pendant la récupération, l'app affiche « Récupération de la progression… » (pas d'écran vide entre le scan et l'arrivée) ; l'import réussi est confirmé par une bannière « bien arrivée ✓ », un transfert échoué (lien expiré ou déjà servi) par une bannière d'erreur.
14Suivi à distance — le parent sur son propre appareil
Le multi-profils (§13) couvre la tablette familiale partagée. Il ne couvre pas le cas, très courant, où l'enfant pratique sur un appareil qui n'est pas celui du parent — un ancien téléphone de la famille, en WiFi seul, gardé pour lui. Le parent n'a alors aucune visibilité sur la progression : le tableau de bord parent (§8) existe, mais il vit sur l'appareil de l'enfant.
Le suivi à distance répond à ce besoin sans introduire ni compte, ni mot de passe, ni adresse e-mail. Deux rôles, non exclusifs sur un même appareil : publieur (l'appareil de l'enfant) et suiveur (celui du parent).
14.1Parcours
- Ouvrir le partage (appareil de l'enfant) : « Partager la progression de <prénom> » dans l'espace parent, section « Suivi à distance ». Affiche un QR code — et un lien copiable en repli.
- Appairer (appareil du parent) : deux chemins. Scanner le QR avec l'appareil photo du téléphone, ce qui ouvre Tablito sur le lien ; ou, si Tablito est déjà installé, « Suivre un enfant à distance » depuis l'espace parent, qui filme le QR avec la caméra in-app (indispensable sur iPhone, où un lien n'ouvre jamais la web app installée).
- Parent qui n'a pas encore Tablito : le QR l'amène sur le site, et l'app boote directement sur l'espace parent avec la progression de l'enfant. Aucun onboarding enfant (prénom, test de placement) ne lui est proposé — ce serait un contresens : il n'est pas venu s'entraîner. La landing statique est également sautée.
- Consulter : le tableau de bord distant est le même écran que le tableau de bord local, aux mêmes statistiques. Une barre de fraîcheur indique la date du dernier dépôt (« Synchronisé il y a 2 h ») avec un bouton « Actualiser » — sans elle, un appareil enfant éteint depuis une semaine afficherait des chiffres périmés sans le dire.
- Deux sources côte à côte : un parent peut avoir son propre profil local (pour s'entraîner lui-même) et suivre un enfant à distance. Un sélecteur en tête de l'espace parent bascule d'une source à l'autre. Il n'apparaît que s'il y a vraiment un choix à faire.
- Arrêter : « Ne plus partager » côté enfant supprime le dépôt (les appareils suiveurs l'annoncent explicitement, distinct d'une panne réseau) ; « Ne plus suivre » côté parent oublie le suivi localement.
14.2Modèle et garanties
Après chaque séance, l'appareil de l'enfant dépose un instantané de son profil, gzippé puis chiffré côté client (AES-GCM, clé aléatoire), sous un code de 96 bits. C'est la primitive du transfert (§7) : la clé de déchiffrement voyage dans le fragment d'URL du QR, jamais transmise au serveur, qui ne voit donc passer qu'un blob opaque.
Deux différences avec un transfert, qui justifient une table distincte : le dépôt est durable (rafraîchi à chaque séance au lieu d'être consommé) et la lecture est non consommante. Le code est donc une capacité permanente jusqu'à révocation — garde-fous : entropie inénumérable, clé jamais exposée au serveur (un dump de la base ne donne rien de lisible), révocation explicite, et purge automatique d'un suivi que plus aucune séance n'a rafraîchi depuis 6 mois.
Le profil suivi n'est jamais installé sur l'appareil du parent : il ne vit qu'en mémoire, le temps de l'afficher. Installé, il se mêlerait aux profils locaux (« Qui joue ? »), et une séance faite par erreur dessus divergerait de l'appareil de l'enfant, que le dépôt suivant écraserait.
Conséquence assumée sur les sections propres à l'appareil : sauvegarde, transfert, rappel quotidien et suppression de profil disparaissent quand la source affichée est un enfant distant — elles parleraient d'une progression qu'on n'a pas en main.
15Évolutions possibles (V2)
- Mode défi : séance bonus optionnelle le week-end
16Références
- 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.
- 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
- 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
- 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
- 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
- Campbell, J. I. D. (1999). Division by multiplication. Memory & Cognition, 27(5), 791–802. doi:10.3758/BF03198532
- 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
- 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
- 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
- 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
- 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
- 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
- Hattie, J., & Timperley, H. (2007). The power of feedback. Review of Educational Research, 77(1), 81–112. doi:10.3102/003465430298487
- 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
- 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
- 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
- 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
- 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.
- Robinson, K. M., & Dubé, A. K. (2009). Children's understanding of the inverse relation between multiplication and division. Journal of Experimental Child Psychology. ScienceDirect
- 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
- 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
- Rohrer, D., & Taylor, K. (2007). The shuffling of mathematics problems improves learning. Instructional Science, 35, 481–498. doi:10.1007/s11251-007-9015-8