Wiskunde automatiseren met Mathy
Ik gebruik dagelijks Math Academy, wat de beste manier is om wiskunde te leren. Maar ik wilde een mobielvriendelijke manier om wiskunde en zwakke punten onderweg te oefenen, die handiger en minder omslachtig was dan Anki-kaarten. Daarnaast is het een mooie manier om in die versnipperde vrije momenten iets productiefs te doen (met het gevoel dat ik ergens naartoe bouw) in plaats van doelloos te scrollen.
De essentie van Mathy is contra-intuïtief: als het werkt, zul je het minder gebruiken. Naarmate bepaalde onderwerpen automatisch gaan, kunnen de aanbevolen oefensessies bijvoorbeeld weken uit elkaar liggen of nog langer (hoewel je natuurlijk nog steeds kunt oefenen wanneer je maar wilt).
Waarom Mathy?
Ten eerste ben ik een groot voorstander van Math Academy, hun filosofie en alles wat Justin deelt over leren, dus ik zal dat hier niet herhalen.
Ik wil veel beter worden in gevorderde wiskunde, maar ik ben geen natuurlijk getalenteerd wiskundige en loop tegen een plafond aan. Ook steek ik bewust niet zoveel tijd en focus in als ik zou kunnen; het is een hobby. Hoewel ik over een lange periode consistent ben, is mijn dagelijkse volume vrij laag. Maar ik ben daarmee oké en ik ben tevreden met de progressie die ik maak gezien de tijd die ik erin steek. Het past goed in mijn leven.
Om mezelf een voordeel te geven, wilde ik een makkelijkere manier om wiskunde te drillen, zodat meer zaken automatisch gaan. Ik ben benieuwd hoe ver ik daarmee kan komen en in hoeverre automaticiteit mijn plafond kan verhogen, gegeven mijn andere beperkingen.
Hoewel Math Academy de beste manier is om wiskunde te leren, richt het zich op lessen, herhalingen en toetsen, en niet op drillen zoals met flashcards. Er zijn genoeg andere tools voor dat laatste, en daarmee heb ik geëxperimenteerd. De populairste leek Anki te zijn. Hoewel Anki een flexibel hulpmiddel is, was het niet ideaal voor wiskunde. Bovendien was het omslachtig om kaarten te maken en te onderhouden. Omdat ik geen andere goede alternatieven voor wiskunde kon vinden, is Mathy ontstaan.
Hoe het tot stand is gekomen
Ik dacht hier al een paar jaar over na, en de behoefte werd acuut toen ik moeite had met het onthouden van trigonometrische verhoudingen, formules, enzovoort—zeker omdat de variëteit aan inhoud toeneemt naarmate je dieper in de wiskunde duikt.
In de loop van de tijd had ik notities gemaakt over wat ik wilde, dus ik had een goed startpunt. Op een weekend heb ik deze notities omgezet in een product requirements document om te zien hoe dit eruit zou zien. Dat beviel me, maar ik had geen tijd, dus ben ik het een paar maanden vergeten.
Parallel hieraan ben ik het afgelopen jaar diep in de agentic coding gedoken. Ik heb honderden miljoenen tokens verbruikt om te leren waar AI toe in staat is, wat de beste manieren zijn om ermee te bouwen en om mijn workflows te verfijnen. De meeste projecten waar ik aan werkte waren echter vrij complex met veel bewegende delen. Ik vroeg me af hoe "makkelijk" het zou zijn om een simpeler product te bouwen. Daarom besloot ik dit project aan te pakken.
De kern van de app was in een paar dagen klaar, maar het gebruik ervan onthulde tientallen kleine onvolkomenheden die niet helemaal goed voelden en dieperliggende problemen waar ik over moest itereren. Hoewel de basisapp dus snel ontstond, duurde het een paar weken voordat ik er tevreden over was, omdat ik met veel verschillende benaderingen experimenteerde. Er zitten nog steeds onvolkomenheden in, dus laat het me weten als je feedback hebt.
Hoe het werkt
Mathy is bedoeld om simpel te zijn voor gebruikers en een aanvulling te vormen op je bestaande leerproces. Een voorbeeld van hoe het in een leerprogramma past:
- Leer het concept met iets als Math Academy en doe de initiële oefeningen.
- Kies het onderwerp (op basis van leerjaar, cursus of thema) en Mathy vertelt je wanneer je opnieuw moet oefenen op basis van je prestaties (met gebruik van FSRS).
- Wanneer je er klaar voor bent, kun je getimede "sprint"-uitdagingen doen om je beste score te verbeteren. Toekomstige plannen voorzien erin dat je tegen anderen kunt strijden.
Er is geen diagnostische test of plaatsing zoals bij Math Academy. Het is aan jou om de onderwerpen te kiezen. Daarom raad ik aan om dit af te stemmen op wat je in Math Academy hebt geleerd.
Productfocus en beperkingen
Beperkingen helpen, dus ik ben heel bewust geweest over wat de app wel en niet is:
- Alleen voor automaticiteit: Het is bedoeld om wiskunde automatisch te maken, NIET om nieuwe concepten te leren. Het is voor het oefenen van wat je al weet.
- Mentale wiskunde: Alleen zaken die je mentaal kunt doen; voornamelijk directe recall en korte procedures die bij vloeiendheid resulteren in reacties van ongeveer 3 tot 5 seconden.
- Offline en mobiel geoptimaliseerd: Je kunt de app onderweg gebruiken en de kernfuncties moeten offline werken in de mobiele app (ondersteuning voor iPhone & iPad).
- Minimale effectieve dosis: Het doel is niet om elke dag te oefenen, maar om je 'automatisch' te houden in je geselecteerde onderwerpen. Hoe beter je wordt, hoe minder je hoeft te oefenen. Sommige dagen of weken heb je misschien helemaal geen oefening nodig. Het doel is om flexibiliteit te bieden en automaticiteit te behouden. Zodra je automaticiteit hebt bereikt, is het enkel voor periodiek onderhoud wanneer je een paar vrije minuten hebt.
Platform
In plaats van een native iOS-app (in Swift) te bouwen, heb ik gekozen voor React Native, zodat zowel iOS (iPhone en iPad) als het web vanuit dezelfde codebase ondersteund worden. Als er genoeg tractie is, vervang ik dit mogelijk later door native iOS- en Android-apps.
Het oefenen, de beoordeling, de planning en de opslag van voortgang draaien allemaal lokaal, zonder account of een backend voor de oefeningen. Voor het versturen van hulp of feedback is wel een internetverbinding nodig. De app is gratis te gebruiken.
De voortgang blijft momenteel op het apparaat of in de browser staan waar je oefent. Het synchroniseert (nog) niet tussen apparaten, en het verwijderen van de app of het wissen van browsergegevens kan de data wissen.
Opmerking: Ik ben van plan om optionele accountondersteuning toe te voegen voor het opslaan en synchroniseren van voortgang, en mogelijk mini-competities en ranglijsten. De MVP is echter volledig lokaal.
Spaced repetition-algoritme
Voor de planning heb ik FSRS gebruikt. FSRS is gemaakt door Junyao Ye, die ook een Math Academy-gebruiker is.
FSRS bepaalt de status van de geheugensplanning en wanneer iets herhaald moet worden. De eigen wachtrijbeleid van Mathy bepaalt hoe herleren, openstaande taken, nieuwe doelen, zwak materiaal, onderhoud, versterking en verwarbaarheid worden samengevoegd in de oefensessies.
De homepage van de app toont de aanbevolen oefeningen en komende herhaaldatums. Een aparte optie "Play your way" laat je oefenen wanneer je wilt in verschillende modi:
- Daily Math
- Timed Math
- Endless Math
- 60-Second Sprint
Problemen programmatisch genereren
Dit werd veel eenvoudiger door de bovengenoemde focusbeperkingen. Ik heb mezelf beperkt tot zaken die ik deterministisch kan verifiëren.
Waar Math Academy een team heeft voor het creëren van instructieve inhoud, is Mathy een automaticiteits-app en leert het geen nieuw materiaal. Als ik iets niet deterministisch kan verifiëren, hoort het niet in deze app thuis.
De app gebruikt een gecureerde bank van recall-doelen, inclusief vaste feiten en formules naast geparametriseerde probleemfamilies. Deze families genereren varianten binnen gecontroleerde grenzen, met deterministische antwoordsleutels in plaats van AI-gegenereerde antwoorden.
Intuïtieve presentatie met deterministische verificatie
Mathy presenteert elk probleem met duidelijke typografie en wiskundige opmaak, terwijl de beoordeling volledig reproduceerbaar blijft. Dezelfde variant van een probleem komt altijd uit op dezelfde antwoordsleutel, ongeacht hoe de oefenwachtrij is geschud of geordend.
Onder de motorkap heeft elk recall-doel en elke gegenereerde variant een stabiele ID. Hierdoor kan de app het exacte probleem dat een leerling zag identificeren en reproduceren, wat nuttig is voor beoordeling, debugging en het reageren op foutmeldingen.
Normaliseren van invoer
Voor getypte numerieke antwoorden normaliseert de app de inzendingen vóór de vergelijking:
- Verwijderen van witruimte
- Unificeren van symbolen
- Parsen via deterministische numerieke parser-regels
- Converteren naar een canonieke vorm (breuken, decimalen, percentages, wortels waar toegestaan).
Voor een vraag die equivalente numerieke waarden accepteert, kunnen invoeren zoals 1/2, 0.5, 50% en 2/4 naar dezelfde waarde leiden. Vragen die een specifieke weergave testen, kunnen nog steeds specifiek een percentage, decimaal of vereenvoudigde breuk vereisen. Als de syntaxis ongeldig is, geeft de app eerst een duidelijke foutmelding over het formaat voordat de waarde wordt gecontroleerd.
Automaticiteit meten
De app volgt herhaald correct gedrag over tijd, niet alleen een eenmalige correctheid. Er wordt gebruikgemaakt van drempelwaarden voor nauwkeurigheid, recente correctheidsdichtheid, responstijd, spreiding en cue-dekking, met een regel voor uitval/schorsing bij fouten en herintredingsregels wanneer er regressie optreedt.
Ik ben hier nog steeds mee aan het itereren. Geautomatiseerde simulaties bootsen al jaren aan oefening na, maar praktijkgegevens zullen helpen begrijpen hoe goed het model overeenkomt met de ervaring van mensen over tijd. Dit is een andere reden waarom ik cloud-synchronisatie wil toevoegen.
Onderwerpen
Het model van de app is een graaf: Domein > Onderwerp > Concept > Recall-doel > Prompt-variant
Het bevat onderwerpen die overeenkomen met de cursussen/leerjaar-paden van de gebruiker voor eenvoudig browsen en filteren. Ik verwacht dat er nog gaten in zitten; feedback hiervoor is welkom via de app.
Dekking en variatie
Het doel is voldoende dekking binnen elk onderwerp, met zinvolle varianten waar dat helpt. Mathy balanceert het beschikbare materiaal over de onderwerpen en vermijdt recente herhalingen wanneer er alternatieven beschikbaar zijn.
Browsen en selectie
Gebruikers kunnen browsen op cursus, leerjaar of alle onderwerpen bekijken. Mathy bevat alleen materiaal uit de Common Core dat geschikt is voor korte automaticiteitsoefeningen, waardoor er gaten in de inhoud zitten.
Plezier en betrokkenheid
Door de focus op automaticiteit kon de app meer aanvoelen als een spel dan als een leer-app. Er is lichte gamificatie toegevoegd met levels, XP, wiskundemedailles en streaks. De on-track streak volgt je aanbevolen schema; dagen waarop geen oefening nodig is, tellen dus ook mee, zonder dat je de app hoeft te openen.
De 60-seconden sprint-modus is bijzonder leuk. In de toekomst wil ik ook leuke zaken toevoegen zoals wiskundige trucs, olympiade-hacks en meer uitdagingen.
De laatste 10% (die 90% voelt)
De laatste 10% duurt altijd het langst. De kernapp was in een paar dagen klaar, en na ongeveer twee weken was de app klaar voor indiening bij de Apple App Store, maar er is nog steeds werk te doen.
Veel van dit werk ging over hoe de app aanvoelt en welke inhoud wanneer wordt gepresenteerd. Omdat ik in die twee weken veel reisde, kon ik fixes doorvoeren, deze op de dev-versie op mijn telefoon testen, notities maken over onvolkomenheden en opnieuw wijzigingen pushen. Ik liet zelfs mijn kinderen de app gebruiken tijdens vluchten, wat waardevolle feedback opleverde.
Er is nog veel werk te doen op de volgende vlakken:
- Kwaliteit en variëteit van inhoud: Hoewel deterministische checks het makkelijker maken om probleemfamilies uit te breiden, moeten dekking, formulering, moeilijkheidsgraad en variatie nog worden verbeterd.
- Presentatie en interactie: Omdat ik ontwerp voor mobiel is de vormfactor een uitdaging, vooral bij gevorderde inhoud.
Onverwacht plezier
Ik ben trots op hoe de app vormkrijgt, maar het meest onverwachte was hoe leuk het was om eraan te werken. Ik ben een product-persoon, dus dat is logisch. Maar onlangs had ik zoveel tijd besteed aan complexe projecten (architectuur, backend, SDK's, nieuwe modellen) dat het bouwen van iets simpels me de kans gaf om me weer op de frontend te concentreren. Dat had ik gemist.
Wat is nu de volgende stap?
Ik ben van plan om aan het volgende te werken:
- Accountcreatie: Om voortgang te backuppen en te synchroniseren tussen apparaten.
- Verbetering inhoud: Uitbreiding van dekking, variatie, invoer en weergave, vooral voor gevorderde onderwerpen.
- Herinneringen: Meldingen wanneer het tijd is om te oefenen, vooral bij sessies die weken uit elkaar liggen.
- Uitdagingen/ranglijsten: Om tegen anderen te strijden, bijvoorbeeld in de 60-seconden sprints.
- Wenslijst: Integratie met Math Academy, zodat oefenen XP oplevert, zwakke punten automatisch worden gesynchroniseerd en nieuwe leerdoelen direct naar de juiste Math Academy-cursus leiden.
De app is momenteel gratis. Als de app meer tractie krijgt of als ik cloud-synchronisatie lanceer, introduceer ik waarschijnlijk een optioneel betaald plan van ongeveer $1 per maand om de hostingkosten voor cloudfuncties en multiplayer-inhoud te dekken.
Groetjes,