Docentenhandleiding Β· Python Drone Curriculum

Docentenhandleiding

Hoe het curriculum is opgebouwd en welke didactische keuzes eronder liggen. Bedoeld voor docenten en ontwikkelaars van lesmateriaal β€” niet voor studenten.

Het curriculum leert procedureel en objectgeoriënteerd programmeren via één doorlopende context: het aansturen van een DJI Tello EDU-drone. De opbouw is bewust concept-gedreven: elk nieuw idee wordt eerst als probleem gevoeld, en pas daarna als oplossing aangereikt. Gebruik de tabbladen hieronder.

Elk principe is een gevestigde onderwijskundige theorie. Bij elk staat kort wat de theorie inhoudt (cursief) en daaronder hoe die is toegepast in dit curriculum.

1 Problem-Based Learning

Leren begint bij een concreet probleem, niet bij de theorie.

Toepassing in dit curriculum

Het "Pijn β†’ Fix"-model. Studenten lopen bewust tegen een concreet probleem aan (een crash, spaghetti-code, een bevroren beeld) vΓ³Γ³rdat de theorie wordt uitgelegd. De fix voelt daardoor als een welkome redding, niet als huiswerk.

2 Cognitive Load Theory

Het werkgeheugen is beperkt; beperk hoeveel nieuws er tegelijk binnenkomt.

Toepassing in dit curriculum

Nieuwe syntax en nieuwe hardware komen nooit tegelijk. Een student leert niet op hetzelfde moment hoe self werkt Γ©n hoe de Tello-wifi communiceert: algemene blokken en droneblokken zijn gescheiden, zodat elke taak maar één nieuwe bron van belasting toevoegt. (WΓ©lke eerst komt, hangt af van de sprint β€” zie principe 4.)

3 Transfer of Learning

Kennis die losstaat van één context is breder toepasbaar.

Toepassing in dit curriculum

De algemene blokken gebruiken alledaagse contexten (scores, spelers, leeftijden). Studenten komen uit JavaScript en PHP: de Γ©chte lesstof zijn de verschillen. Wat ze los van de drone begrijpen, passen ze later ook toe op webshops of AI.

4 Scaffolding

Tijdelijke steun die je stap voor stap afbouwt naarmate de student het zelf kan.

Toepassing in dit curriculum

De volgorde per sprint volgt de cognitieve behoefte van dat moment, niet een vast stramien. Soms algemeen-eerst (nieuwe abstractie), soms drone-eerst (hardware als motivator). De zijwieltjes worden stap voor stap afgenomen.

5 Actief Leren

Kennis zelf ophalen en toepassen beklijft beter dan passief lezen.

Toepassing in dit curriculum

Geen voorgekauwde codeblokken. In plaats van "Typ dit: leeftijd = 21" staat er "Maak een integer-variabele voor je leeftijd". Studenten halen de syntax zelf uit hun geheugen op (muscle memory).

6 Authentieke Leeromgeving

Leren in taken die lijken op de echte beroepspraktijk.

Toepassing in dit curriculum

Studenten werken in sprints met user stories en acceptatiecriteria. Ze gebruiken een venv, maken een planning, schrijven tests en refactoren code β€” precies zoals software engineers in het bedrijfsleven doen.

7 Chunking

Grote stof opdelen in behapbare, samenhangende brokken.

Toepassing in dit curriculum

6 uur theorie = 4 blokken van 1,5 uur. Elk blok = 3 minitaken van een paar minuten lezen en direct doen. Het project (Β±4 uur) staat altijd apart en bouwt voort op de blokken van dezelfde week.

8 Zichtbaar resultaat

Direct waarneembaar effect motiveert en stuurt bij (feedback).

Toepassing in dit curriculum

Elke taak levert iets zichtbaars op: soms een kleine uitvoer in de console, soms code waarmee de drone echt vliegt. Vanaf sprint 3 staat bovendien de videostream aan β€” studenten kijken door de ogen van hun eigen drone, en elke sprint daarna maakt dat beeld beter bestuurbaar. Wat je ziet, wil je verbeteren.

9 Differentiatie

Iedereen haalt de basis; wie meer aankan wordt net boven zijn niveau uitgedaagd β€” zone van naaste ontwikkeling (Vygotsky).

Toepassing in dit curriculum

Op drie plekken bieden we een toegankelijke basis met ruimte naar boven ("low floor, high ceiling"):

Theorie in twee versies. "In het kort" voor wie niet van lezen houdt en er zo tΓ³ch alles mee kan; "uitgebreid naslagwerk" voor wie Γ‘lle ins en outs wil.

Extra per taak. Wie de basis net aankan leert genoeg; wie uitdaging nodig heeft gaat door met de extra-opdracht.

Extra per project. De basisopdracht is genoeg voor iedereen, met een extra stuk erbovenop voor wie meer aankan.

10 Correct vanaf dag 1

Goede gewoonten meteen inslijpen kost minder dan ze later afleren.

Toepassing in dit curriculum

PEP 8 vanaf de eerste regel: snake_case, UPPER_CASE voor constanten, betekenisvolle namen, geen magic numbers, en guard clauses in plaats van diepe nesting. Studenten leren het meteen goed, zodat er later niets afgeleerd hoeft te worden.

11 Challenge-Based Learning

Een open uitdaging aangaan met alleen een doel en hints β€” de aanpak bedenk je zelf.

Toepassing in dit curriculum

Sommige blokken zijn een challenge (zoals de routeplanner in sprint 3): de student krijgt een doel en enkele hints, maar bepaalt zΓ©lf de taken, de aanpak en de oplossing. Dat vraagt meer eigenaarschap en zelfregulatie. Challenges staan er bewust niet constant in β€” ze zijn het pittige tussendoortje dat scherp houdt.

12 Afwisseling & herhaling

Onderwerpen afwisselen (interleaving) en verspreid herhalen (spacing) beklijft beter dan lang hetzelfde.

Toepassing in dit curriculum

Te lang op één onderwerp werkt averechts. Daarom wisselt het jaar bewust van context, en komen eerder geleerde vaardigheden steeds terug in de challenges tussendoor. Zo blijft de stof levend en leren studenten wannéér ze iets toepassen, niet alleen hóe. Zie het tabblad Jaarritme.

De planning loopt van vakantie naar vakantie, met bewuste onderwerpwisseling en een challenge om de paar weken om studenten scherp te houden. Hieronder het overzicht per week.

Week Sprint Kernonderwerp Blokindeling Status
0 Introductieweek Kennismaking, setup, verwachtingen & werkwijze β€” β€”
Sprint 1–5 Β· Python syntax
1 1 Β· First Flight Setup, basistypes, input, venv, sensordata alg Β· alg Β· drone Β· drone βœ… Klaar
2 2 Β· Beslissingen Booleans, if/elif, logica, guard clauses alg Β· alg Β· drone Β· drone βœ… Klaar
3 3 Β· Herhaling, Lists & Video for/while, lists, videostream, frames drone Β· alg Β· drone Β· challenge βœ… Klaar
⚑ Einde week 3 · challenge om scherp te houden
4 4 Β· Datastructuren & Foutafhandeling dict, try/except, raise, keyboard-controller alg Β· alg Β· drone Β· drone βœ… Klaar
5 5 Β· Functies & Scope def, return, parameters, module, scope alg Β· alg Β· drone Β· drone βœ… Klaar
πŸ‚ Herfstvakantie
Sprint 6–9 Β· Basis OOP
6 6 Β· OOP β€” Classes, properties & constructor class, __init__, self, attributen (arcade-game) alg Β· alg Β· game Β· game βœ… Klaar
7 7 Β· OOP β€” Methoden methodes, return, samenwerkende methodes β€” πŸ”§ In ontwikkeling
⚑ Einde week 7 · challenge om scherp te houden
8 8 Β· OOP β€” Visibility & encapsulation private (_naam), getters/setters, validatie β€” πŸ”§ In ontwikkeling
9 9 Β· OOP β€” Meesterstuk fase 2 Integratie tot een volledige game β€” πŸ”§ In ontwikkeling
Sprint 10–13 Β· Gevorderd OOP & API
10 10 Β· Gevorderd OOP Overerving, super(), abstract & static β€” πŸ”§ In ontwikkeling
11 11 Β· Gevorderd OOP Polymorfisme, design patterns, testing β€” πŸ”§ In ontwikkeling
⚑ Einde week 11 · challenge om scherp te houden
12 12 Β· Gevorderd OOP Deployment & CLI β€” πŸ”§ In ontwikkeling
13 13 Β· Gevorderd OOP Eindproject β€” πŸ”§ In ontwikkeling
πŸŽ„ Kerstvakantie Β· 2 weken

Blokindeling: alg = opdracht zonder drone/game Β· drone = opdracht met de drone (sprint 1–5) Β· game = opdracht in de arcade-game (sprint 6–9) Β· challenge = alleen doel + hints.   Status: βœ… klaar   πŸ”Ά concept (nog niet volledig gecontroleerd)   πŸ”§ in ontwikkeling.

Let op β€” fase 2 (sprint 6–9): hier ronden we de basis van OOP volledig af (classes, objecten, properties, constructor, methoden, visibility) met een pygame arcade-game als toegepaste context in plaats van de drone. Overerving, abstracte klassen, polymorfisme en static horen bij het gevorderde deel (sprint 10–13). De theorie blijft generiek; alleen de toegepaste opdrachten en het project draaien om de game.

Waarom deze opzet?

Elke sprint heeft dezelfde opbouw: vier blokken (US) met elk drie taken, en één afsluitend project.

Sprint bevat 4 Γ— US (blok) β†’ elke US: 3 taken (T1Β·T2Β·T3) β†’ 1 project

Een US (user story / blok) is één samenhangend concept. De drie taken binnen een US volgen een vast ritme:

Taak Rol Voorbeeld (Sprint 2 Β· Guard clause)
T1 De pijn β€” laat het probleem voelen met bestaande kennis. Opstijgen bij 1% batterij; wat gaat er mis?
T2 De oplossing β€” introduceer het nieuwe concept dat de pijn wegneemt. Conditie omkeren, vroeg afbreken met een guard.
T3 De verfijning β€” verdiep, maak robuust, of combineer. Melding met de gemeten waarde erin.

Elke sprint sluit af met een project waarin alle blokken samenkomen. Het project heeft een vaste structuur en vertrekt vanuit de klant.

Vaste projectstructuur

  • Opdracht β€” beschrijving, user stories & planning maken.
  • Ontwerpen β€” structuur uitdenken vΓ³Γ³r het typen.
  • Bouwen β€” stapsgewijs met tussentijds testen.
  • Testen β€” expliciete testcases, stap voor stap.
  • Opleveren β€” acceptatiecriteria als checklist.
  • Extra β€” verdieping als los tabblad, buiten de urenschatting.

User stories vanuit de klant

  • Elk project vertaalt de opdracht naar user stories.
  • Geformuleerd vanuit de klant/gebruiker (piloot, onderzoeker), niet de developer.
  • Vorm: "Als <rol> wil ik <wens>, zodat <waarde>."
  • De taken bij een story bedenkt de student zelf β€” die geven we niet.
  • Daarna maakt de student een eigen planning (project_plan.md).
Waarom klantperspectief? Het dwingt studenten na te denken over wΓ­Γ© iets gebruikt en waarΓ³m β€” de kern van requirements-denken. De vertaalslag van klantwens naar concrete taken is bewust hΓΊn werk, niet die van het materiaal.

Afspraken die in al het lesmateriaal consequent worden gehanteerd.

Taal

  • Code (variabelen, functies): Engels β€” battery, get_height().
  • Output & meldingen: Nederlands β€” "Batterij te laag!".
  • Uitleg & theorie: Nederlands, op niveau 2F.
  • Comments: mag beide, consequent per bestand.

Opdracht vs Extra

  • Opdracht: scenario + startpunt, niet het volledige skelet. Student vult veel zelf in.
  • Extra: alleen hints in woorden β€” geen kant-en-klare code.
  • Acceptatiecriteria: beschrijven wat moet kloppen, niet hoe. Maximaal ~5, testbaar.
  • Challenge-blokken geven alleen een doel en hints, geen stappenplan.