๐Ÿš Python Drone

MBO N4 ยท Software Developer ยท LJ2
Fase 1 โ€” Procedurele fundering ยท Sprint 1โ€“5
Sprint 1 ยท First Flight
US1: Van jouw taal naar Python
T1: Indentatie & geen accolades T2: "3" + 5 โ€” drie talen, drie antwoorden T3: PEP 8, snake_case & None
US2: Variabelen, input & f-strings
T1: De vier basistypes T2: input() geeft altijd een string T3: F-strings & / vs //
US3: venv, pip & eerste verbinding
T1: venv aanmaken & activeren T2: pip install djitellopy T3: Wifi drone, import, connect()
US4: Sensordata & assert
T1: Wat geeft get_battery() terug? T2: assert als bewijs T3: end() โ€” verbinding sluiten
Project: Systeemrapport bij opstart
Sprint 2 ยท Beslissingen
US1: Booleans & vergelijken
T1: Vergelijkingsoperatoren T2: De stille bug: "85" > 20 T3: Truthiness & x is None
US2: if/elif/else & logica
T1: if / elif / else T2: and / or / not T3: Chained comparisons & ternary
US3: Guard clause
T1: Opstijgen bij 1% batterij T2: Conditie omkeren, vroeg afbreken T3: Melding met de gemeten waarde
US4: Platte guards
T1: Vier niveaus diepe if-boom T2: Meerdere guards plat achter elkaar T3: Happy path ongenest onderaan
Project: Veilige takeoff
Sprint 3 ยท Herhaling, Lists & Video
US1: For & range
T1: 8ร— move_forward typen T2: for met range() T3: break & continue
US2: Lists
T1: 100 losse variabelen โ†’ [] T2: Indexeren, len(), append(), slicing T3: enumerate() โ€” index รฉn waarde
US3: Video streaming
T1: Video stream starten en stoppen T2: Frames verwerken terwijl je vliegt T3: Frames opslaan als PNG
US4: Challenge โ€” Routeplanner
Deel 1: Waypoints inlezen Deel 2: Route valideren Deel 3: Route uitvoeren
Project: Vluchtplan + videostream
Sprint 4 ยท Datastructuren & Foutafhandeling
US1: Parallelle lijsten โ†’ dict
T1: Parallelle lijsten T2: Dictionary: sleutel-waarde T3: .keys(), .values(), .items()
US2: Try/except/finally
T1: Type conversie crasht T2: Meerdere exceptions tegelijk T3: Finally: code die ALTIJD loopt
US3: Dispatch-pattern
T1: Lange if/elif-ketens T2: Dispatch-dict met ord() T3: De dispatcher-loop
US4: Live control โ€” keyboard & video
T1: waitKey() als dispatcher T2: Video opnemen met VideoWriter T3: Tekst op frames met putText()
Project: Live Keyboard Drone Controller
Sprint 5 ยท Functies & Scope
US1: DRY & functies
T1: Herhaling op meerdere plekken T2: def โ€” code een naam geven T3: Call stack & return values
US2: Parameters & return
T1: print() vs return T2: Default parameters T3: Tuple unpacking
US3: Drone-helpers
T1: Alles in รฉรฉn bestand T2: ร‰รฉn functie, รฉรฉn verantwoordelijkheid T3: Een eigen module importeren
US4: Scope
T1: Lokale variabelen & NameError T2: Getal vs lijst als parameter T3: Geen block scope in Python
Project: Modulaire Drone Console
Fase 2 โ€” OOP fundament ยท Sprint 6โ€“9
Sprint 6 ยท De blauwdruk: classes & constructor
US1: Het losse-variabelen-probleem
T1: Losse variabelen lopen uit de hand T2: De class als blauwdruk T3: Elk object heeft zijn eigen data
US2: De constructor & self
T1: __init__ dwingt data af T2: self โ€” welk object ben ik? T3: Meerdere parameters en default-waarden
US3: Van dict naar object โ€” Enemy
T1: Parallelle lijsten lopen uit de pas T2: Eรฉn object draagt zijn eigen status T3: Twintig objecten, twintig losse toestanden
US4: De Game โ€” alles in รฉรฉn object
T1: Losse globals zweven rond je script T2: Een object mag een ander object bewaren T3: De toestand in self opslaan
Project: Arcade Dodge โ€” Player, Enemy & Game
Sprint 7 ยท Methoden: gedrag in je classes
US1: State via een eigen methode
T1: De state die buiten bereik valt T2: De methode die zichzelf updatet T3: Wat geeft een methode terug?
US2: Methodes zijn geen functies
T1: Dezelfde actie, maar wie is het slachtoffer? T2: De methode hoort bij de data T3: Methodes die samenwerken
US3: Methodes die het spel besturen
T1: Een parameter stuurt de methode aan T2: Een kogel maken, een grens bewaken T3: De engine roept jouw methodes aan
US4: Beslissende methodes
T1: De methode die 'nee' zegt T2: Een vraag die je in een if gebruikt T3: Guard en query samen
Project: Arcade Dodge v2 โ€” methodes
Sprint 8 ยท OOP โ€” Overerving
Beschikbaar na afronding fase 1.
Sprint 9 ยท OOP โ€” Meesterstuk fase 2
Beschikbaar na afronding fase 1.
Fase 3 โ€” Gevorderd OOP ยท Sprint 10โ€“13
Sprint 10 ยท Design patterns
Beschikbaar na afronding fase 2.
Sprint 11 ยท Testing & tooling
Beschikbaar na afronding fase 2.
Sprint 12 ยท Deployment & CLI
Beschikbaar na afronding fase 2.
Sprint 13 ยท Eindproject
Beschikbaar na afronding fase 2.
๐ŸŽ“ DocentenhandleidingDidactische principes & opbouw