Tech uden tech
Her er en samling analoge (pen-papir-saks) øvelser designet til at give praktisk forståelse af:
✅ Lister (List)
✅ HashMaps (Map)
✅ Sets
De kan laves i klasseværelset uden computer — og fungerer både som fælles aktiviteter og gruppearbejde.
Emne: List
Mål: Forstå rækkefølge, indeks, indskud, sletning
Materialer:
- Små papirlapper med værdier (fx dyr, navne, tal)
- Tape eller gulvplads
Instruktion:
Eleverne står i række, hver holder en seddel → de ER en liste.
Læreren siger:
- “Indsæt denne nye værdi ved index 3”
- “Slet element ved index 1”
- “Tilføj til slutningen”
Eleverne fysisk flytter sig for at repræsentere listen.
Refleksion:
- Hvad er listen god til?
- Hvor tog flest flytninger? (Omkostninger i indskud midt i listen)
- Hvad er O(1) vs O(n)?
Emne: HashSet
Mål: Forstå unikke værdier og ingen rækkefølge
Materialer:
- Sedler med ord eller billeder
- En kasse eller et område på gulvet
Instruktion:
- Eleverne kommer i vilkårlig rækkefølge og smider deres seddel i en kasse.
- Hvis en elev kommer med en værdi, som allerede ligger i kassen → kasser duplikatet.
- Til sidst læses værdierne op — rækkefølgen er irrelevant.
Variation:
- Lad eleverne prøve at sortere sættet → men det må de ikke, for det er et SET, ikke en LIST.
Refleksion:
- Hvorfor må der ikke være dubletter?
- Hvorfor kan vi ikke garantere rækkefølge?
Emne: Map
Mål: Nøgle → Værdi, hurtig lookup
Materialer:
- Sedler
- Stort papir med “nøgler” tegnet som felter
- Eller gulvet med felter markeret
Instruktion:
Læreren tegner fx 6 felter på gulvet: KEY0, KEY1, KEY2 …
Eleverne får værdier (fx billeder/ord).
De skal lægge værdien i feltet med matchende nøgle (opslag).
Spørg derefter:
- “Hvem har nøgle X?” → Eleven finder hurtigt feltet
Variation:
- Kollisioner → to elever skal i samme felt → De lægger sig i en mini-kø (linked list i bucket)
Refleksion:
- Hvad er forskellen på at søge via nøgle vs position?
- Hvorfor er Map ofte hurtigere end List?
Emne: Hashing
Mål: Lær hashing + collisions
Materialer:
- Sedler med ord
- Hash-regler på tavlen, fx: “Bogstavernes sum mod 5 → bucket”
Instruktion:
- Eleverne får ord
- De summerer bogstavers værdier (fx a=1, b=2)
- De modder resultatet mod fx 5 = bucket
- Går hen til den bucket på gulvet og lægger sig
Diskuter:
- Hvorfor ender nogle buckets med mange ord og andre med få?
- Hvordan kan vi håndtere kollisioner?
Emne: Set / duplicate elimination
Mål: Se hvordan Set fjerner duplikerede værdier
Materialer:
- 2 sæt sedler med navne (duplikater forekommer)
Instruktion:
- Lav to høje med tilfældige navne (der er dubletter)
- Eleverne må kun smide navnene i et fælles SET-område hvis navnet ikke allerede er der
Resultat:
- Set fjerner duplikerede værdier automatisk
Refleksion:
- Hvornår er det nyttigt i praksis?
Emne: Sortering
Mål: Introducere sortering + sammenligning
Materialer:
- Sedler med tal
Instruktion:
- Eleverne står i en lang række med tal
- De må kun bytte plads hvis det mindste tal står til højre for det større
- Gennemfør bubble-sort manuelt
Refleksion:
- Hvor mange bytter?
- Hvordan ville man forbedre?
Emne: Map lookup
Mål: Se hvorfor Map er hurtig
Materialer:
- Almindelige bøger (eller sedler)
- Sedler med “hylde” labels
Instruktion:
Hver hylde (område) har en nøgle fx A-F, G-L osv.
Eleverne “opbevarer” bøger baseret på første bogstav
En elev søger efter en bog:
- I List → tjek én ad gangen
- I Map → går direkte til hylden
Refleksion:
- Compare time cost: O(n) vs O(1)
Start med en liste af ting, og gennemfør:
- LIST: Sæt alle elever i række
- SET: Fjern duplikater
- MAP: Opdel i buckets efter en hash
Eleverne kan se, hvordan datastrukturen udvikler sig afhængigt af behov.
Efter aktiviteterne diskuter:
- Hvornår er List bedst?
- Hvornår er Set bedst?
- Hvornår er Map bedst?
- Hvordan oplevede de forskellen i “effektivitet”?
To hold:
- Et hold leder i LIST (lineært)
- Et hold leder i MAP (direkte lookup)
→ MAP-holdet vinder altid → god forståelse for tidskompleksitet