Gerard Dummer

Alles over Onderwijs en ICT.

Browsing Posts published in maart, 2017

In mijn vorige blogpost vatte ik het artikel van Weintrop et al over Computational Thinking (CT) binnen Science en Math samen om een overzicht te krijgen hoe zij de verbinding zien tussen CT en deze vakgebieden. Ik concludeerde dat zij vooral Science als leidend uitgangspunt hebben genomen. Rekenen-wiskunde wordt vooral in de toepassingssfeer genoemd. Dat hoeft misschien niet altijd zo te zijn maar in dit artikel stond (naar mijn idee) science toch vooral centraal.

Ik gaf ook aan dat ik wilde kijken op welke manier er een vertaling gemaakt zou kunnen worden naar het basisonderwijs en dan specifiek naar rekenen-wiskunde en wetenschap en technologie (W&T). Ik wil met dat laatste beginnen. En dan van de W&T in eerste instantie de W, die ik kort door de bocht vertaal met onderzoekend leren. De vraag die ik daarbij vooral wil beantwoorden is:

Hoe kan CT zoals genoemd in het artikel van Weintrop et al ingebed worden in de cyclus van onderzoekend leren?

Cyclus van onderzoekend leren
Vooropgesteld dat onderzoekend leren meer inhoudt dan een cyclus en dat het al helemaal meer inhoudt dan het afwerken van een cyclus, wil ik kijken op welke manier de verschillende aspecten van CT gekoppeld kunnen worden aan de cyclus van onderzoekend leren. Ik gebruik hiervoor de cyclus zoals wij die op de HU Pabo aanbieden aan onze studenten. Dat is deze cyclus (afkomstig van Universiteit Utrecht):

onderzoekend_leren_klein

1. Confrontatie.

In de fase van Confrontatie (verwonderen, afvragen) zie ik niet direct linken met de invulling van CT zoals Weintrop et al die geven. Ik zie die wel buiten dit model om, omdat de leefwereld van kinderen vol zit met computational practices. De publicatie van Hanno van Keulen, Wetenschap en Techniek, ijkpunten voor een domein in ontwikkeling, beschrijft de mogelijkheden van W&T in het dagelijks leven van kinderen. Deze zou gemakkelijk aangevuld, aangescherpt kunnen worden met CT.

2. Verkennen

In de fase van Verkennen zie ik verschillende mogelijkheden om met CT aan de slag te gaan. Mogelijkheden vanuit het model van Weintrop et al zijn naar mijn idee:

  • 2a. Using computational models to understand a concept
  • 4a. Investigating a complex system as a whole
  • 4b. Understanding the relationships within a system
  • 4c. Thinking in levels

Kinderen kunnen door middel van een computational model kennis maken met een bepaald concept. Met voorgeschreven opdrachten verkennen leerlingen dan dit concept. Kinderen kunnen kennis maken met verschillende systemen en proberen hier inzicht in te krijgen. Daarbij zouden gerichte opdrachten helpen om de relaties binnen een systeem duidelijk te maken en zouden ze uitgedaagd kunnen worden om de denken in verschillende niveaus.

3. Opzetten experiment

Bij het opzetten van een experiment (bedenken en plannen) zouden de volgende punten aan bod kunnen komen:

  • 2b. Using computational models to find and test solutions
  • 2d. Designing computational models
  • 2e. Constructing computational models
  • 3a. Preparing problems for computational solutions
  • 3b. Computer programming
  • 3c. Choosing effective computational tools
  • 3d. Assessing different approaches/ solutions to a problem
  • 3e. Developing modular computational solutions
  • 3f Creating computational abstractions
  • 4e. Defining systems and managing complexity

Het gaat bij alle punten om het voorbereiden van een experiment waarbij je bestaande tools gaat inzetten of zelf iets gaat maken. Het laatste punt (defining systems and managing complexity) gaat over de vraag, naar mijn idee, naar het afbakenen van je onderzoeksterrein.

4. Uitvoeren van het experiment

Bij het uitvoeren van het experiment (experiment doen en resulaten noteren) zouden de volgende punten aan bod kunnen komen:

  • 1a. Collecting Data
  • 1b. Creating Data
  • 3g. Troubleshooting and debugging

Uit een experiment dat je doet komt namelijk data (in welke vorm dan ook) en kun je tegen problemen aanlopen die je moet oplossen.

5. Concluderen

Bij het onderdeel concluderen (beantwoord je onderzoeksvraag) zouden de volgende punten aan bod kunnen komen:

  • 1c. Manipulating Data
  • 1d. Analyzing Data

De data die je hebt gekregen uit je experiment moet je namelijk interpreteren. Daarvoor kan het noodzakelijk zijn om je data te manipuleren zodat je het gemakkelijker kunt analyseren.

6. Communiceren

Bij het onderdeel Communiceren (presenteren, discussiëren en vergelijken) zouden de volgende punten aan bod kunnen komen:

  • 1e. Visualizing data
  • 4d. Communicating information about a system

De data die je hebt genanalyseerd ga je tijdens de communicatiefase visualiseren zodat je ze kunt presenteren. Dat geldt ook voor punt 4d.

7. Verdiepen

Bij het onderdeel Verdiepen (verbreding, verdieping) het volgende punt kunnen passen:

  • 2c. Assessing computational models

Als een soort discussie op je eigen onderzoek kun je terugkijken in hoeverre de gebruikte modellen iets zeggen over de werkelijkheid.

Conclusie

Naar mijn idee is het goed mogelijk om in de verschillende fasen van onderzoekend leren CT te integreren. Hoe dit er concreet in het basisonderwijs uit kan zien wil ik beschrijven in een volgende post. Ik kan me voorstellen dat niet alles aan bod hoeft te komen in één project. Ik kan me ook voorstellen dat in de onderbouw van het basisonderwijs de mogelijkheden beperkter zijn dan in de bovenbouw van het basisonderwijs. En ik kan me voorstellen dat leerlingen die meer ervaring hebben met onderzoekend leren of met CT weer meer aankunnen dan leerlingen die daar nog nooit mee gewerkt hebben.

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

screen-shot-2017-03-17-at-10-14-34

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.

screen-shot-2017-03-17-at-11-30-10

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.

In het document K12 Computer Science Framework formuleren The Association for Computing Machinery, Code.org, Computer Science Teachers Association, Cyber Innovation Center, en National Math and Science Initiative de core concepts (kernconcepten) en core practices (kernpraktijken) van K12 Computer Science.

screen-shot-2017-03-14-at-14-02-09

Computational Thinking maakt in hun overzicht deel uit van de core practices. Daarnaast hanteren ze nog crosscutting concepts. De uitleg daarvan is dat:

These “crosscutting concepts” provide thematic connections across the core concepts. The criteria for selection of a crosscutting concept was that it should

  • apply across multiple core concepts,
  • illuminate connections between different core concepts of computer science,
  • build familiarity with fundamental themes in computer science through repetition in different
    contexts, and
  • create a richer understanding of a concept statement in which it is integrated

 
De Crosscutting Concepts zijn:

1. Abstraction
2. System Relationships
3. Human–Computer Interaction
4. Privacy and Security
5. Communication and Coordination

Zoals gezegd maakt Computational Thinking dus deel uit van de core practices.

1. Fostering an Inclusive Computing Culture
2. Collaborating Around Computing
3. Recognizing and Defining Computational Problems
4. Developing and Using Abstractions
5. Creating Computational Artifacts
6. Testing and Refining Computational Artifacts
7. Communicating About Computing

Ze geven de volgende uitleg over waarom CT op deze manier in de core practices staat:

Computational thinking plays a key role in the computer science practices of the framework as it encompasses practices 3, 4, 5, and 6. Practices 1, 2, and 7 are independent, general practices in computer science that complement computational thinking. Multiple research articles and documents informed the delineation of computational thinking practices, such as Operational Definition of Computational Thinking for K–12 Education (ISTE & CSTA, 2011) and Assessment Design Patterns for Computational Thinking Practices in Secondary Computer Science (Bienkowski, Snow, Rutstein, & Grover, 2015).

Interessant vind ik ook dat ze schrijven dat ze nog niet in staat zijn om die core practices per niveau te omschrijven:

The practice statements delineate specific expectations by the end of 12th grade and are followed by a narrative that describes the progression leading to those end points. This structure differs from the grade-band delineation of the core concepts because the current research base and practitioner experience with practices in computer science do not provide enough information to create clear, grade-banded expectations. The narratives describe the practice progressions in a manner that is less prescriptive about developmental appropriateness to emphasize flexible expectations.

In mijn eerdere post van vandaag verwijs ik naar de CSTA-standaarden waar de SLO zich op baseert als het gaat om Computational Thinking (CT). Deze standaarden zijn in 2011 geformuleerd. CT is een onderdeel van computer science (CS) en CS bestaat naast CT uit: Collaboration, Computer Practice and Programming, Computer and Communication Devices, Community, Global and Ethical Impacts.

In het document van 2011 beschrijven ze het belang van CT als volgt:

We believe that computational thinking (CT) can be used across all disciplines to solve problems, design systems, create new knowledge, and improve understanding of the power and limitations of computing in the modern age. The study of computational thinking enables all students to better conceptualize, analyze, and solve complex problems by selecting and applying appropriate strategies and tools, both virtually and in the real world.

In het document van 2016, dat nog in conceptversie online staat wordt computational thinking niet meer als een apart onderdeel genoemd. De indeling die in dit document wordt aangehouden is: Computing Systems, Networks and the Internet, Algorithms and Programming, Data and Analysis, and Impacts of Computing.

Over computational thinking wordt in deze versie gezegd:

We believe that computational thinking is a problem solving methodology that expands
the realm of computer science into all disciplines, providing a distinct means of
analyzing and developing solutions to problems that can be solved computationally.
With its focus on abstraction, automation, and analysis, computational thinking is a
core element of the broader discipline of computer science and for that reason it is
interwoven through these computer science standards at all levels of K–12 learning.

CSTA kiest hier dus voor de lijn om CT te integreren in CS. Ben benieuwd hoe SLO en Kennisnet tegen deze verandering aankijken…

In mijn blogpost van 16 februari 2017 over computational thinking benoem ik verschillende definities van computational thinking. Mijn eigen definitie voegde ik daar aan toe:

Het oplossen van problemen waarbij je gebruik maakt van de ideeën uit de informatica.

Later bedacht ik me nog dat dit nog niet compleet was want andersom geldt dit, zeker volgens uitgangspunt van Wing, ook. Wing het noemt dit het automatiseren van abstracties. Waarbij abstracties als het ware de denkkapstok is van de informatica. Als ik mijn eigen definite aanvul met dit uitgangspunt dan kom ik uit op:

Computational thinking is enerzijds het oplossen van problemen waarbij je gebruik maakt van de ideeën uit de informatica en anderzijds het gebruiken van informatica om problemen op te lossen.*

Als ik het heb over ideeën dan bedoel ik zaken zoals algoritmes en patronen. Als ik het heb over problemen dan kan dat slaan op een zakelijke insteek (zoals het uitvoeren van een project) als een creatieve insteek (zoals het maken van een kunstwerk).

Een volgende stap die ik wil zetten in mijn denkproces/zoekproces is het volgende: de voorbeelden die rondom computational thinking worden gegeven vind ik nogal hap-snap. Ik zie nog geen duidelijke lijn in de opbouw van computational thinking. Websites zoals CSunplugged bieden allerlei activiteiten aan maar die staan naar mijn idee nog niet in een lijn. Dat komt misschien omdat ik nog niet goed heb gekeken of mijn kennis nog niet groot genoeg is rondom dit onderwerp. Ik weet bijvoorbeeld ook nog niet of dit überhaupt moet of niet.

Als ik een vergelijking zou maken met rekenen-wiskunde dan lijkt het of de activiteiten die benoemd worden de ene keer gaan over sommen als 3 + 4 dan weer over 34 x 35 en dan weer over de vraag hoeveel seconden er in een dag zitten. Sommen die komen uit verschillende plekken van de leerlijn of zelfs uit verschillende leerlijnen.

De website van Kennisnet en de SLO over de leerlijn programmeren komt al meer in de richting. Zij hebben zich gebaseerd op de SLO die zich weer heeft laten inspireren door ISTE en CSTA. Tijd om me daar verder in te verdiepen.

Een idee dat ik ook heb over CT is om te kijken in hoeverre het zinvol is om dit te koppelen aan een taxonomie zoals die van Bloom. Omdat in de stukken die ik tot nu toe lees het vooral gaat over het onderdeel Computational en nog niet zozeer over het onderdeel Thinking. Een idee dat verder wordt ingegeven door het feit dat ik denk dat je eerst aspecten van computational thinking zou moeten herkennen voordat je in staat bent om er iets mee te doen. En dat idee wordt weer getriggerd doordat ik me in de afgelopen jaren ook bezig heb gehouden met de invoering van Wetenschap en Technologie (W&T) op onze Pabo. Een mooi document dat daarin een belangrijke rol speelt is die van Hanno van Keulen waarin hij laat zien hoeveel W&T in ons dagelijks leven een rol speelt. Bij veel voorbeelden die hij noemt is naar mijn idee moeiteloos CT te koppelen. Dat doet hij in zijn publicatie niet. Daarom ter afsluiting Linda Liukas die dat wel doet 🙂

 

*Aanvulling op mijn definitie van 14 maart 2017 op 12 januari 2018: ideeën zou beter vervangen kunnen worden door het begrip “fundamentele ideeën”. Dit sluit beter aan bij auteurs zoals Schwill (1994), Denning (2004) en Zendler en Spannagel (2008) die benadrukken dat computer science op school zich bezig moet houden met de fundamentele ideeën (of great principles of central concepts) omdat het veld zo dynamisch is.