Hoe het curriculum is opgebouwd en welke didactische keuzes eronder liggen. Bedoeld voor docenten en ontwikkelaars van lesmateriaal β niet voor studenten.
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.
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.
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.)
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
Elke sprint heeft dezelfde opbouw: vier blokken (US) met elk drie taken, en één afsluitend 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.
project_plan.md).Afspraken die in al het lesmateriaal consequent worden gehanteerd.
battery, get_height()."Batterij te laag!".