Onderwijs Computational Thinking

Waarom computational thinking van belang is

Terwijl leerlingen door de lesstof gaan raken zij vertrouwd met programmeren en wat daarmee mogelijk is. Gaandeweg verwerven zij zo ook inzicht in de kracht van logica. Verder leren zij hoe je grotere problemen kunt oplossen door ze in kleinere stukjes op te delen. Beslist ook kennis die van pas komt bij het doen van andere vakken en die je ook terugvindt in andere toepassingsgebieden.

"Everybody in this country should learn to program because it teaches you how to think"
 — Steve Jobs

Met programmeren leer je hoe je repetitieve taken kunt automatiseren, hoe je waarnemingen kunt vertalen naar acties en hoe je altijd de juiste beslissing kan nemen, zelfs in vooraf onbekende situaties. Toch is leren programmeren niet ons hoofddoel.

Als je een taal onderwijst, heeft dit niet als doel om alle leerlingen schrijvers te laten worden. Als je wiskunde onderwijst, heeft dit niet als doel om alle leerlingen wiskunde leraar te laten worden. Met programmeren is dat eigenlijk hetzelfde. Je hoeft echt geen programmeur of ingenieur te worden om toch voordeel te kunnen hebben van een basisbegrip van de fundamentele onderliggende concepten. Daarom praten we hier liever over Computational Thinking...

Laat Bill Gates, Mark Zuckerberg en anderen je overtuigen waarom het uitmaakt dat je leert programmeren.

Wat is Computational Thinking?

Computational Thinking is een term die gebruikt wordt om de manier van denken en probleemoplossen te beschrijven die de basis van automatisering vormt. Daarom definiëren we het als:

Hoe zorg je ervoor dat een machine doet wat je wilt.
 — RoboMind Academy

Er zijn meerdere definities in omloop, maar deze meer formele definitie vinden we zelf het beste:

"Computational Thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent."
 — Cuny, Snyder, Wing

De RoboMind Academy is een aantrekkelijke leeromgeving om Computational Thinking te trainen. Bij het opzetten van de leeromgeving en de lesprogramma's hebben wij eerst het gebied van Computational Thinking geanalyseerd. Dit heeft geleid tot een fijnmazige structure van concepten en vaardigheden die hieronder vallen. Alle lesprogramma's, presentaties, quizen en opdrachten zijn zo ontworpen dat deze specifieke aspecten uit deze set trainen. De tabel hieronder laat een hiërarchische indeling zien van de concepten en vaardigheden die samen het veld van Computational Thinking omvatten.
Computational Thinking
Concepten
Praktijken
Perspectieven
Programmeren Wiskunde Probleem oplossen Oplossingen bedenken Communicatie Toepassingen Begrijpen
Uitvoer volgorde (sequenties, lussen, condities, procedures), Syntax, Programmeer paradigma's Logica, Geometrie, Algebra, Statistiek Toestandsruimte, Doelen, Probleem formulering, Zoekstrategieën, Oplossing, Uitvoer, Evaluatie Modellering, Abstraheren, Debuggen, Herstructureren, Documentatie Project management, Samen programmeren, Kennis delen Robotica, Kunst, Transport, Logistiek, Plannen, Domotica Werking uitleggen, Kritisch kijken naar oplossingen, Patronen zien: in specifieke toepassingen en tussen domeinen

Zoals te zien is in de tabel wordt Computational thinking soms ook georganiseerd rond drie hoofdaspecten: Concepten (de ingrediënten), Praktijken (de toepassingspraktijk), Perspectieven (de kijk op de wereld). Bij de RoboMind Academy gaan we echter altijd uit van de zeven genoemde hoofdgebieden.

Programmeren is, zoals eerder gezegd, een belangrijk gebied om logisch en gestructureerd denken te trainen. De bouwstenen van de automatisering vallen hieronder: sequenties van acties, definitie van delen die herhaald worden, beslissen op basis van perceptie. Deze ingrediënten kun je formeel opschrijven. Als je verder vordert leer je ook om keuzes te analyseren die voor specifieke programmeertalen zijn gemaakt.

Wiskunde komt op natuurlijke wijze aan bod tijdens te opdrachten. Je gebruikt bijvoorbeeld logica als je opschrijft onder welke condities een actie moet worden uitgevoerd. Geometrie komt aan bod in de navigatie taken die de robot moet doen in verschillende werelden. Bij het herformuleren van een oplossing helpt algebra je om dit correct te doen. Willekeurige processen vormen de basis van veel moderne toepassingen: van internet bankieren tot het ontwikkelen van medicijnen. Met RoboMind zal je dit ook zelf gaan zien.

Probleem oplossen is een ander belangrijk kernbegrip van Computational Thinking. Een probleem zal eerst geanalyseerd moeten worden voordat een nauwkeurige definitie van het doel gegeven kan worden. Daarna moet er een oplossing voor het probleem worden gevonden. Mogelijke oplossingen worden geëvalueerd op basis van complexiteit en algemene toepasbaarheid en kunnen dan worden uitgevoerd op een machine. Wij trainen je grondig in dit proces en introduceren en passant ook nog klassieke oplossingsstrategieën.

Oplossingen bedenken en formuleren als een programma leert je vele vaardigheden: van nauwkeurige analyse van de opdracht, tot ontwerp en implementatie van de oplossing en het testen ervan.

Communicatie vaardigheden worden getraind bij veeleisende problemen, omdat deze in de praktijk zelden door iemand alleen worden opgelost. Van brainstorm sessies, tot het delegeren van taken, tot het presenteren van resultaten.

Toepassingen op allerlei relevante gebieden worden direct gekoppeld met Computational Thinking. De robotwereld is buitengewoon geschikt om problemen in transport en logistiek, de automatisering van fabrieken en het zoeken in onbekende omgevingen te demonstreren.

Begrijpen wat je geleerd hebt tijdens het implementeren van oplossingen voor concrete problemen helpt je om beter ontwerpbeslissingen te formuleren. Door verschillende oplossingen te evalueren en te kijken welke keuze gemaakt wordt bij een bepaalde toepassing wordt het begrip versterkt. Door toepassingen van dezelfde fundamentele concepten in verschillende domeinen worden standaard patronen zichtbaar.

Referenties