Didactiek (enkele opmerkingen over…)
Top down vs. Bottom up
Om een probleem op te lossen delen we het vaak op in (liefst kleinere) problemen: divide & conquer. Een ervaren ontwikkelaar werkt doorgaans Top down vanaf het totale probleem totdat dit in ‘hapklare brokken’ is opgedeeld waarvan de ontwikkelaar overtuigd is dat die onderdelen op te lossen zijn, liefst min of meer planbaar.
Dit is mogelijk als de ontwikkelaar voldoende ervaring heeft met het opsplitsen van een probleem. Verder moet het niveau van de deelproblemen (wellicht na meerdere keren delen) binnen de ervaring liggen van de ontwikkelaar.
Dit probleemoplossend vermogen is een van de belangrijke vaardigheden waarvan we willen dat leerlingen bij zichzelf kunnen ontwikkelen. Hoe kunnen we hen hierin ondersteunen en motiveren?
Als je voor het eerst programmeert, of als voor het eerst in een nieuwe programmeertaal of in een nieuw paradigma problemen oplost heb je in dat gebied nog weinig ervaring. Als je met kleine(re) problemen ervaring opdoet (succeservaringen!) kun je doorgroeien naar grotere problemen. Door eerst wat bottom-up-ervaring op te doen weet je waar die bodem zit en worden de problemen die je kunt oplossen (bottom up) steeds groter. Door de op te lossen problemen groter te maken leert de leerling vanaf het nieuwe niveau steeds terug te gaan naar het bekende niveau.
Hoe komt dit terug in dit lesmateriaal?
Het materiaal begint met een contextschets: Wat zijn programmeerparadigma’s? Welke zijn er? Hoe zit dat met het functionele paradigma?
Daarna wordt basiskennis bijgebracht over recursie
. Recursie is essentiëel bij het functionele paradigma. Het is dé manier waarop herhaling bereikt wordt. Enkele recursieve toepassingen worden besproken. Deze toepassingen komen later terug in de hoofdstukken over Elm.
In de volgende stap wordt een bodem gelegd in Elm. Door de leerling regelmatig uit te nodigen zelf dingen na/uit te zoeken of te berekenen wordt getracht de leerling te activeren en de nieuwe kennis te relateren aan al eerder verworven kennis en vaardigheden, zodat het geleerde beter wordt onthouden.
Het vierde en laatste deel bestaat uit meer uitdagende problemen, toepassingen genaamd. Om deze challenges op te kunnen lossen zal vaak top down gewerkt moeten worden, omdat deze problemen doorgaans te groot zijn om in één stap op te lossen.
Aansluiten bij vakken in VO
De keuze om het functionele paradigma centraal in de module te stellen was een didactische: hiermee sluiten we aan bij de lesstof van andere vakken, met name wiskunde, natuurkunde, mogelijk economie. Zie vooral de toepassingen.
Waarom Jupyter?
Jupyter biedt de mogelijkheid om theorie en opgaven bij elkaar te rangschikken. De theorie en de praktijk staan daardoor vlak bij elkaar. Een student kan de programma’s executeren in een notebook. De student kan ook na het uitvoeren het notebook opslaan en dit inleveren. De antwoorden en vragen worden samen opgeslagen.