Python in de Klas
Onze samenleving wordt steeds meer beïnvloed en gestuurd door computersystemen, apps en algoritmes. Talloze problemen, nu en in de toekomst, worden opgelost via die krachtige computers. Ook op school en in de klas voelen we die digitalisering. Maar als jij wil meedenken en -werken aan die digitale toekomst, leer je best computationeel denken! Zelf algoritmes leren ontwerpen en die vertalen naar programmeertalen zoals Python! Maar hoe breng je dat nu in de klas? Daar kan ik jou bij helpen! Meer dan 80 oefeningen, autocorrecties, 20 uitgewerkte lesvideo’s … allemaal samengevat in één overzichtelijke lessenreeks publiceerde ik op het open source platform Dodona (UGent). Free to use via www.pythonindeklas.be!
Bestond dit niet al?
Correct! Of toch ongeveer, want dit lesmateriaal gebruik ik nu twee schooljaren. Doorheen die periode merkte ik welke zaken niet vlot verliepen en waar het product beter kon. Zo geschiedde! Dit bouwt verder op dat lesmateriaal en het materiaal dat ik reeds maakte voor mijn klassen uit de eerste graad. Een overzichtje van die materialen en waar je ze kan vinden op KlasCement:
Waarom Python?
Python is een relatief gebruiksvriendelijke en goed gedocumenteerde programmeertaal. Het is een taal die gebruikt kan worden in combinatie met diverse andere lesmaterialen en -inhouden, zoals een Micro:Bit, MakeCode Arcade van Microsoft, binnen wiskunde, statistiek … maar ook voor het aansturen van AI-modellen! Wanneer je je verdiept in andere lesmaterialen op deze onderwijsblog zoals ‘ontwerpen met AI-modellen’, ‘restauratie van Oudgriekse inscriptie’, taalanalyse … zal je merken dat deze gebruikmaken van, jawel, Python! Op deze manier kies je dus voor een programmeertaal die je kan verwerken in verticale en horizontale leerlijnen. Dus leerstof die opbouwend werkt over verschillende jaren heen (=verticaal) én met mogelijkheden binnen vakoverschrijdende projecten (=horizontaal).
Bijkomend werken we via dit lesmateriaal in de Dodona-omgeving van de UGent. Door deze keuze bereiden we leerlingen voor op de sprong naar het hoger onderwijs waar dit soort lesmateriaal ook op deze wijze wordt aangeboden.
Wat is er nieuw?
Herziene Volgorde Programmeerconcepten
Na twee scholenjaren werken met eigen lesmateriaal en materiaal van uitgeverijen, merkte ik dat de volgorde van de leerstof niet altijd even goed ineen stak. Bepaalde programmeer- en wiskundeconcepten worden duidelijk uitgelegd, met nadien oefeningen. Andere concepten doken plotseling op en had je nodig om de oefening op te lossen. Dit maakte dat het lesgeven met duidelijk afgebakende instructiefase en oefenfase stroever verliep.
In de nieuwe versie van deze lessenreeks verdelen we de oefeningen nog steeds overheen vijf primaire programmeerconcepten, namelijk:
sequentie
selectie
begrensde herhaling
voorwaardelijke herhaling
grafieken
Binnen die primaire programmeerconcepten geven de namen van de oefeningen en de lesvideo’s duidelijker aan wanneer er nieuwe wiskunde- en programmeerconcepten worden geïntroduceerd. Dit vergroot de duidelijkheid voor zowel leerling als docent.
Geïntegreerde Lesvideo’s
Binnen de cursus vind je oefeningen en ‘leesopdrachten’ terug. Die laatste bevatten de geïntegreerde lesvideo’s. Deze zijn korter in speelduur dan de voorgaande video’s en focussen specifiek op één bepaald concept. Elke video volgt dezelfde opbouw:
Uitleg van het concept
Voorbeeldoefeningen die we ontleden
Schematiseren
Schema omzetten in Python-code
Oefening maken op Dodona
De video’s zijn ook los te vinden op YouTube en kunnen gebruikt worden door zowel de docent als de leerling. Bijvoorbeeld om een les voor te bereiden, bij leerlingen die wat differentiatie in de tijd nodig hebben (=lees: voorop lopen), in een ‘Flipped Classroom’ aanpak, als remediëring, bij het instuderen …
Geïntegreerde Autocorrectie
Op vraag van collega’s en leerlingen werken de oefeningen nu met een vorm van autocorrectie. Deze zal, indien de structuur van de oefening dat toelaat, het algoritme van de leerling controleren op twee niveau’s:
Syntaxis: klopt de code volgens de spelregels van Python?
Inhoudelijk: klopt de invoer en uitvoer?
Die laatste feature is volledig nieuw en te vinden bij het meerendeel van de 80+ oefeningen in de lessenreeks. Het stelt ons in staat om de leerling te voorzien van feedback en de leerkracht kan via het dashboard sneller zien of een leerling een inhoudelijk correcte oplossing heeft ingevoerd. Vroeger kon een leerling een algoritme schrijven zoals:
print(‘Ik voer dit lekker in bij elke oefening. Hihi!”)
Dit is syntax-gewijs volledig correct. Hier staat een print-statement en het zal de string naar het scherm schrijven. Maar inhoudelijk slaat dit natuurlijk nergens op. In de vorige versie van deze lessenreeks werd er dus slechts één controle uitgevoerd. Nu zal Dodona opmerken dat die ene string niet past in ons vraagstuk. Eureka!
Evaluatie, Overzicht en Feedback
Door te werken binnen Dodona, in tegenstelling tot bijvoorbeeld de Notebooks die we gebruiken voor de losstaande AI-projecten, bekom je enkele voordelen als docent en student. Deze zijn:
Docent
Dodona is een open-source leeromgeving ontworpen door onderzoekers aan de UGent;
Het is gratis te gebruiken;
Je kan een bestaande lessenreeks (zoals deze) integraal kopiëren en gebruiken in de eigen klassen;
Je kan een volledig eigen lessenreeks samenstellen op basis van de oefeningen van tal van andere docenten;
Het platform is bereikbaar via de browser (dus geen installatie vereist);
De Python-code kan je uitvoeren via de browser en er is dus geen gegoochel nodig met ‘opslaan als’ en ‘run scripts’. Dit werkt drempelverlagend voor de leerlingen;
Je krijgt een handig overzicht van de vooruitgang van elke leerling, zowel op vlak van oefeningen als dagen van de week waarop de leerling werkt. Dit soort lesmateriaal krijg je enkel onder de knie (lees: werken aan automatisering) door geregeld te oefenen. Uiterst handig bij concrete feedback aan de leerling en diens ouder(s);
Er is mogelijkheid tot plagiaatcontrole;
Je kan als docent per oefening geschreven feedback toevoegen.
Student
Alle oefeningen staan op één enkele plaats;
Je krijgt feedback op vlak van syntax en inhoud;
Tussendoor kan de docent via leesopdrachten en video’s theorie aanbrengen;
Je hoeft niets te installeren;
Je kan aanmelden via Smartschool, Microsoft 365 …
Les- en Leerplandoelen
Lesdoelen
Leerlingen kunnen de stappen van het computationeel denken doorlopen en toepassen:
decompositie, patroonherkenning, abstraheren, algoritme maken, debuggen
Leerlingen kunnen algemene programmeerconcepten toepassen. Concepten zoals:
verschillende datatypes (string, integers, float)
sequentie
selectie
begrensde herhaling
voorwaardelijke herhaling
Leerlingen kunnen specifieke (verdiepende) programmeerconcepten toepassen. Concepten zoals:
afronden tot X decimalen
importeren van bibliotheken
vierkantswortel nemen van Y
voorwaarden opstellen met diverse operatoren (<, >, >=, <=, ==, !=, and, or)
opstellen van grafieken
manipuleren van lijsten
manipuleren van strings
Leerlingen kunnen wiskundeconcepten toepassen. Concepten zoals:
eenvoudige bewerkingen
bewerkingen met percentages
verheffen tot een macht
formules van omtrek en oppervlakte
toepassen stelling van Pythagoras
vermoeden van Collatz
Leerplannen
Deze lessenreeks werd ontwikkeld met oog op de leerplandoelstellingen en tabellen van het Katholiek Onderwijs Vlaanderen. Gegeven de moderniseringen (meervoud, herhaaldelijk) en de late herziening van de leerplannen, vind je hieronder de doelstellingen zoals geformuleerd in o.a. Wiskunde C 2de graad D-finaliteit II-WisS-d. en Gemeenschappelijk leerplan ICT 2de graad D-, D/A- en A-finaliteit II-GLI-ddaa, waar het leerplan wiskunde expliciet naar verwijst (bouwstenen van digitale systemen. Dit stuk van het lesmateriaal is dus onderheving aan verandering.
LPD 60 De leerlingen ontwerpen algoritmes om problemen digitaal op te lossen.
Concepten van computationeel denken: decompositie, patroonherkenning, abstractie, algoritme
Controlestructuren: opeenvolging, herhalingsstructuur, keuzestructuur
Elementen van programmeertalen: variabelen, datatypes, eenvoudige gegevensstructuren, operatoren, parameters, condities, procedures of functies, ingebouwde functies
Debuggen
Je voorziet volgens het leerplan hier best 10 lestijden voor. Uit ervaring reserveer ik, zeker voor de verdiepende onderdelen, tijd voor formatieve en summatieve evaluaties, hier 12 lestijden voor.
Eindtermen
De leerlingen ontwerpen algoritmen om problemen digitaal op te lossen.
Conceptuele kennis
Concepten van computationeel denken: decompositie, patroonherkenning, abstractie, algoritme
Organisatie, modellering, simulatie en digitale representatie van informatie
Debuggen: testen en bijsturen
Principes van programmeren: sequentie, herhalingsstructuur, keuzestructuur
Ingebouwde functies
Elementen van programmeertalen: variabelen, datatypes, operatoren, parameters, condities, procedures of functies
Procedurele kennis
Toepassen van principes van computationeel denken: decompositie, patroonherkenning, abstractie, algoritme
Toepassen van principes van organisatie, modellering, simulatie en digitale representatie van informatie
Toepassen van principes om te debuggen
Toepassen van principes van programmeren: sequentie, herhalingsstructuur, keuzestructuur
Toepassen van controlestructuren en eenvoudige gegevensstructuren bij het formuleren van algoritmen
Ik wil dit in mijn klas! Wat moet ik doen?
Wil je hier zelf mee aan de slag in jouw klaslokaal? Super! Jongeren laten kennismaken met computationeel denken, programmeer- en wiskundeconcepten is belangrijk in een steeds meer digitale samenleving. Daar hoort het verkennen van- en verdiepen in Python zeker bij. Ik wil jou daar gerust bij helpen! De oefeningen vind je via onderstaande knop of via www.pythonindeklas.be!