Dat is de titel van een artikel van Weintrop et al (2016) waarin ze een opzet geven voor het integreren van computational thinking (CT) in het wiskunde en science onderwijs. Een interessant artikel omdat dit een beeld geeft hoe je aandacht kunt besteden aan CT buiten het vakgebied computer science. De opzet die ze kiezen voor het integreren van CT is een taxonomie van doelen toegespitst op wiskunde en science. Op basis van eigen onderzoek komen ze uiteindelijk tot 4 categorieën: data practices, modeling and simulation practices, computational problem solving practices en system thinking practices. Belangrijkste reden voor de auteurs om CT te integreren binnen wiskunde en science is dat deze vakken daarmee beter aansluiten op de werkelijkheid van de wetenschap van nu. Daarnaast, geven de auteurs aan, kan het gebruik van computational tools en vaardigheden het begrip van wiskunde en science vergroten.
In het artikel gaan ze verder in op CT zelf, CT in K12 education, de steeds groter wordende rol van computation in wiskunde en science en de methode die ze gebruikt hebben om te komen tot hun taxonomie. Over de steeds groter wordende rol van computational methodes geven ze aan dat door de toegenomen rekenkracht steeds ingewikkeldere problemen kunnen worden opgelost, dat daardoor de wetenschap verandert en dat leerlingen daarop moeten worden voorbereid.
De Taxonomie
Zoals gezegd bestaat de taxonomie uit vier categorieën. Elke categorie is weer onderverdeeld in een aantal practices. Ik weet niet hoe practices zich het beste laat vertalen aangezien de auteurs zelf daar een apart punt van maken. In eerste instantie spreken ze over skills (vaardigheden) maar…
but concerns were raised, such as a request we move from the terms skills to the broader and more actionable practices to reinforce what it means to use these concepts as well as to reflect larger changes in the mathematics and science standards landscape.
Misschien dat werkwijze, praktijken of competenties een vertaling hiervoor zou kunnen zijn. Voor nu laat ik het maar even bij practices.
In het artikel lichten ze elke practice toe en daarna per practice alle onderdelen. Ik zal daarvan een korte samenvatting geven.
1. Data-practice
Data, zo geven de auteurs aan, is de kern van wetenschappelijk en wiskundige bezigheden. De manier waarop data wordt verzameld, gemaakt, geanalyseerd, gemanipuleerd en gevisualiseerd verandert snel. Leerlingen moeten leren dat data niet is geordend in structuren maar dat je die zelf nog moet aanbrengen.
1a. Collecting Data (dataverzamelen)
Door het observeren en meten kan data worden verzameld. Computational tools kunnen worden ingezet om data te verzamelen. Aan het eind van het artikel noemen de auteurs een voorbeeld van zo’n computational tool: De Tracker Video:
1b. Creating Data (Data maken)
Met behulp van computersimulaties kunnen wetenschappers data maken. Bijvoorbeeld om de evolutie van een melkwegstelsel te onderzoeken. Deze data is anders niet beschikbaar omdat dit soort processen bijvoorbeeld te lang zouden duren zonder simulaties.
1c. Manipulating Data (Data manipuleren)
Met data manipuleren wordt bedoeld het kunnen sorteren van data, filteren, opschonen, normaliseren en datasets kunnen samenvoegen. Hierbij moet ik denken aan het kunnen werken met Excel bijvoorbeeld. De auteurs noemen elders in het artikel nog tools zoals Tinkerplot, Fathom en SimCalc.
1d. Analyzing Data (Data analyseren)
Bij data analyseren gaat het er om dat je op zoek gaat naar patronen, afwijkingen, regels kunt definiëren om data te categoriseren, trends kunt vaststellen en verbanden kunt leggen. Nu er zoveel data beschikbaar is (big data) is het belangrijk dat je computational tools kunt gebruiken om de data te analyseren.
1e. Visualizing data (data visualiseren)
Computational tools kunnen helpen om data te visualiseren zodat je er ook met anderen over kunt praten. Denk hierbij aan diagrammen en grafieken. Maar ook aan dynamische, interactieve visualisaties.
2. Modeling and simulation practices (modellen en simulaties)
In de wetenschap is het maken, verfijnen en gebruik van modellen over fenomenen een belangrijk uitgangspunt. Je kunt hierbij denken aan stroomschema’s, diagrammen, vergelijkingen, chemische formules, computersimulaties en fysische modellen. Modellen kunnen worden gebruikt om te voorspellen hoe iets in de werkelijkheid zal gaan. De auteurs noemen hierbij specifiek niet statische representaties van fenomenen die gesimuleerd kunnen worden door de computer. Modellen maken het mogelijk om vragen te onderzoeken en hypotheses te testen die anders te duur, te gevaarlijk, te moeilijk of onmogelijk zijn uit te voeren.
2a. Using computational models to understand a concept (Computationele modellen gebruiken om een concept te begrijpen.
Een computational tool kan een goed leermiddel zijn om een concept te begrijpen zoals de afhankelijkheden in een ecosysteem en hoe objecten in een wrijfingsloze omgeving zich gedragen. Op zoek naar voorbeelden kwam ik op Wikipedia deze uitgebreide lijst tegen met computational models. Maar ik moest ook denken aan de GoLabs zoals Ton de Jong die beschrijft en de onderzoeken naar simulaties van Wouter van Joolingen met bijvoorbeeld SimSketch.
2b. Using computational models to find and test solutions (computational modellen gebruiken om oplossingen te vinden en testen)
Verschillende hypothesen testen zonder dat het teveel geld en tijd kost.
2c. Assessing computational models (computationals models beoordelen)
Hoe verhoudt het fenomeen zich tot de werkelijkheid? Welke abstracties zijn in het model ingebouwd? En welke invloed hebben de abstracties op de betrouwbaarheid van het model?
2d. Designing computational models (computational modellen ontwerpen)
Hierbij moeten technologische, methodologische en conceptuele beslissingen worden genomen. Hierbij gaat het om een ontwerpproces nog op papier.
2e. Constructing computational models (het construeren/ bouwen van computational modellen)
Hierbij gaat het echt om het bouwen van computational models. Hiervoor is programmeerkennis nodig.
3. Computational problem solving practice (computationeel probleemoplossend vermogen)
Het gaat hierbij om de toegepaste informatica die helpt om de wetenschap verder te helpen. Als leerlingen programmeren, algoritmes ontwikkelen en computationele abstracties maken kan dit een positief effect hebben op het bestuderen van wiskundige en wetenschappelijke fenomenen.
3.a Preparing problems for computational solutions (problemen zo formuleren dat ze computationeel kunnen worden opgelost)
Problemen lenen zich niet altijd automatisch om door een computerprogramma te worden opgelost. De kunst is om het probleem zo te formuleren dat het geschikt is om er met een computational tool mee aan de slag te gaan.
3b. Computer programming (programmeren)
Het gaat hierbij om het kunnen begrijpen van computerprogramma’s van anderen en zelf programma’s schrijven. Programmeerconcepten die hierbij belangrijk zijn: conditionele logica, iteratieve logica, herhaling, abstracties (waaronder subroutines en datastructuren). Niet iedereen hoeft een programmeur te worden, geven de auteurs aan, maar een basiskennis is wel belangrijk.
3c. Choosing effective computational tools (effectieve computationele middelen kiezen)
Het gaat hierbij om de vraag welk programma het beste past bij het probleem dat je hebt. Wat zijn de mogelijkheden en wat zijn de beperkingen?
3d. Assessing different approaches/ solutions to a problem (aanpakken en oplossingen beoordelen)
Als er meer mogelijkheden zijn om iets te doen dan is het belangrijk dat je de juiste keuze kunt maken. Je kunt denken aan de kosten, de tijd, duurzaamheid, herbruikbaarheid en flexibiliteit.
3e. Developing modular computational solutions (modulaire computationele oplossingen ontwikkelen)
Het gaat om het in stappen of stukjes op kunnen knippen van een proces. Zodanig dat ze gemakkelijk kunnen worden hergebruikt, voor andere doeleinden kunnen worden ingezet en fouten makkelijker kunnen worden opgespoord.
3f Creating computational abstractions (in staat zijn om abstracties te maken)
Vaststellen wat de hoofdlijnen zijn en wat de details. Dit helpt bij het schrijven van een computerprogramma, generaliseren, visualiseren van data en het vaststellen van de reikwijdte of schaal van een probleem.
3g. Troubleshooting and debugging (probleemoplossing en debuggen)
Bij het oplossen van problemen gaat het om het vaststellen van het probleem, het systematisch testen van het systeem om het probleem te isoleren en het reproduceren van het probleem om mogelijke oplossingen te testen.
4. System thinking practices (systeemdenken)
Er zijn problemen die je alleen op kunt lossen als je kijkt naar het systeem in het geheel en niet naar de afzonderlijke onderdelen. Systeemdenken is daarom een belangrijke vaardigheid. Voorbeelden van systemen die je in z’n geheel zou moeten bestuderen zijn natuurlijke selectie en populatieveranderingen in de natuur, het menselijk ademhalingssysteem en de algemene gaswetten. Ze benoemen daarbij ook de term cross-cutting concepts die ook al een keer was tegengekomen bij theorie over Wetenschap & Technologie. Computationele middelen kunnen een krachtig middel zijn om systemen te begrijpen.
4a. Investigating a complex system as a whole (een systeem als geheel bestuderen)
Soms is het effectiever om een systeem in het geheel te bestuderen in plaats van de afzonderlijke onderdelen. Dat betekent dat je sommige details moet kunnen weglaten. Computationele middelen zoals modellen en simulaties zijn hierbij handig om te gebruiken.
4b. Understanding the relationships within a system
Alhoewel het handig is om systemen als geheel te bestuderen is het ook handig om te weten hoe afzonderlijke onderdelen op elkaar reageren.
4c. Thinking in levels (in niveaus denken)
Het gaat hierbij om het kunnen onderscheiden van verschillende niveaus in een systeem en op basis daarvan onderzoek te doen.
4d. Communicating information about a system (communiceren over een systeem)
Als je een systeem onderzoekt is het de kunst om over de resultaten te kunnen communiceren. Visualisaties en infographics kunnen daarbij helpen. Belangrijk daarbij is de vraag wat je wel en niet presenteert.
4e. Defining systems en managing complexity (systemen definiëren en complexiteit managen)
Wat zijn de grenzen van het systeem dat je wilt gaan onderzoeken? Een systeem moet zo gedefinieerd zijn dat het bruikbaar is en productief.
De auteurs hebben een mooie opzet gemaakt waarin ze kijken hoe CT binnen wiskunde en science een rol kan spelen. Mijn idee is dat vooral science (onderzoekend leren) hierbij leidend is geweest. Ik heb tenminste het idee dat de opbouw zich als geheel vooral leent voor onderzoekend leren. De afzonderlijke onderdelen zouden naar mijn idee weer goed kunnen worden ingebed binnen rekenen-wiskunde. Rekenen-wiskunde is hierbij vooral een toepassing en niet zozeer het doel. In een volgende blogpost zal ik kijken of er op basis van bovenstaande ook vertalingen naar het basisonderwijs zijn te maken. En dan specifiek naar rekenen-wiskunde en wetenschap en technologie.