Informatik C: programmering i p5.js

Formål

Formålet med dette forløb er at give eleverne en grundlæggende viden om de mest basale programmeringsstrukturer. Indholdet svarer til de kompetencer som er beskrevet i læreplanen for faget, navnlig kendskab til funktioner, variable, løkker og forgreninger.

Forløbet er udviklet som empiri for min opgave i teoretisk pædagogikum, og har et parallelt formål som vedrører digital dannelse. Samtidig med at eleverne i de fleste tilfælde stifter bekendtskab med programmering for første gang, forsøger undervisningen at introducere og stilladsere noget mere principiel kundskab om digitale teknologiers natur og potentiale:

  • Computeres evne til at opstille simulationer af virkeligheden
  • Digital teknologis relevans i naturvidenskabelige kernefag: kemi, biologi, fysik og matematik
  • Use/modify/create som almendannende forståelse: kopiering, remediering, videreudvikling
  • Innovation – evne til at skabe noget nyt?

Dermed søger forløbet på et principielt niveau, at pirre elevernes nysgerrighed og refleksion omkring digitale teknologier og deres personlige muligheder for at anvende dem. Ikke mindst at introducere en skillelinje mellem at anvende software andre har lavet – og selv at skabe/påvirke computeren til at udføre operationer/scenarier.

Fagkonsulent Lars Andersen fra Undervisningsministeriet præciserer digital dannelse som:

Mål: At skabe digitalt nysgerrige elever

  • Understøttelse af elevens studiekompetence
  • Uddannelsesperspektiv – at få eleven til at reflektere over anvendelse af digitale medier i uddannelses- og samfundsmæssige sammenhænge
  • Anvende digitale kompetencer i egne læreprocesser – understøtte faglig udvikling
  • Del af elevernes almene dannelse – understøtter evnen til at tage til stilling til teknologien i faglig sammenhæng og i hverdagen

Indhold

Programmering

  • funktioner
  • variable, sekvenser, løkker og forgreninger

Desuden tilføjes objekter og lister, som ikke er en del af læreplanen – men som er formålstjenstligt for at opbygge mindre programmer og have det sjovt imens.

Metode

Der arbejdes med kodning i plenum individuelt gennem en række korte øvelser udviklet efter et “worked example” princip med tilhørende øvelser i varierende sværhedsgrad. eleverne arbejder i grupper af to eller alene efter eget valg. Alle skal dog individuelt uploade deres egne skitser undervejs, der er altså tale om individuelle afleveringer for alles vedkommende.

Der afleveres efter hver time i form af en skitse, som lægges ud på elevens virtuelle webserver.

Eftersom forskellige klasser har forskelligge forudsætninger for at programmere, er der udtalt behov for at differentiere og skræddersy forløbet. Samtlige opgaver er tilknyttet øvelser efter et grøn/gul/rød princip med stigende sværhedsgrad. Dygtige elever har altså mulighed for at arbejde selvstændigt med opgaver der modsvarer deres viden.

Materiale

Forløbet er linket til den i-bog som skolen benytter til Informatik C.

Alle de tilknyttede læringsobjekter kan se her

Evaluering og progression

Eleverne udarbejder efter hvert modul en skitse, som uploades på nettet så både læreren og de andre kan følge med i hvad der produceres. Forløbet afsluttes med en lille opgave, som samler elevernes viden op i et konkret projekt. Det tilsigtes at hver lektion indeholder en mundtlig evaluering, hvor formålet med den enkelte time evalueres og diskuteres.

Forløbet afsluttes med en kreativ opgave omkring programmering af et lille spil eller interface. Udvalgte opgaver præsenteres og gennemgås i plenum.

Til sidst bruger klassen en halv times tid på at udfylde dette evalueringsskema, som er oprettet mhp at måle både kernefaglige og mere dannelsesorienterede udbytter af forløbet.

Forløbets sekvens

Lektion 1: introduktion til editoren og javascriptet p5.js

Følger læringsobjekt her 

Lektion: betingelser og logiske udsagn

Følger Læringsobjekt her

Lektion: Variable

Følger læringsobjekt her 

Lektion: Loops

Følger læringsobjekt her 

Lektion: Funktioner

Følger læringsobjekt her 

Lektion: objekter

Følger læringsobjekt her 

Lektion: Fysisk for begyndere

Følger læringsobjekt her 

Lektion: Arrays

Følger læringsobjekt her

Formålet med lektionen er at give eleverne indblik i computerprogrammers mulighed for at oprette og manipulere lister (arrays). Der arbejdes med lister af objekter, som eleverne for nylig har programmeret. Dermed giver øvelsen også noget indblik i programmers evne til at kopiere og mangfoldiggøre instanser af klasser.

Indholdet Følgende kernefaglige elementer indgår:

Programmering

  • funktioner
  • variable, sekvenser, løkker og forgreninger

Metoden er en redskabsmæssig tilgang, hvor eleverne arbejder individuelt og i fællesskab/plenum, med at løse en række programmeringsopgaver af stigende sværhedsgrad.

Materialet består af et worked example, som bygger på tidligere erfaringer med et enkelt objekt.

Evalueringen laves som en kort spørgerunde i slutningen af timen

Peer Lektion: lav dit eget minispil

Eleverne er i øjeblikket i gang med at producere et lille spil to og to på baggrund af et Worked Example:  Følger læringsobjekt her. De har godt fem lektioner til at lave spillet færdigt samt et par elevtimer. På dette tidspunkt i processen er de nået til den fase hvor de arbejder selvstændigt i grupperne, denne lektion skal understøtte dette arbejde.

Formålet med lektionen er at eleverne ser på andres forslag til modificereinger og diskuterer mulige løsningsstrategier. Eleverne har på forhånd uploadet deres arbejde til nettet, så koden kan gennemgås i plenum.

Der er desuden en enkelt elev som har tilbudt at vise hvordan man kan implementere en særlig funktionalitet – det sættes der ligeledes tid af til.

Indholdet sætter elevernes viden om programmering – variabler, sekvenser, strukturer og løkker – i spil, men de lærer også at udvikle en prototype som i næste ombæring kan testes på en brugergruppe.

Metoden er makkerarbejde på baggrund af et Worked Example. Der er i denne lektion høj grad af lærerinvolvering – men det søges at undersøge programmeringsstrategier i plenum, altså at indgå i en fælles udforskning, hvor læreren ikke er styrende eller anvisende ift eleverne, men mere i en rolle som guide/mediator.

Materialet  følger læringsobjekt her samt elementer i lærebogen Informatik C fra Systime og bygger desuden på forløbets øvrige læringsobjekter.

Evaluering er indbygget i denne time på den måde at udvalgte elevprojekter gennemgås i Plenum – evalueringen er formativ, da diskussionen har fokus på videre udvikling og mulige strategier til at forbedre spillet/komme i mål/se nye muligheder.

Sekvenser

Timens forløb:

  • Se på ideer
  • Se på fælles udfordringer samt hvordan man kan løse dem
    • Tid til at man kan implementere de foreslåede strategier
  • Gustav viser eksempel på hvordan man kan få kuglen til at skyde med kugler..

Idéer og strategier fra blogs (10 min):

Nogle ideer

“Få bolden til at køre igennem en labyrint, hvor at labyrinten køre ned af, og man så skal undvige væggene, hvor det bliver ved med at accelerere.”

“Bolden skal styres med musen på den vertikale-akse Spillet skal blive hurtigere jo flere kasser man rammer. Der skal være en point tæller på bolden, og man skal få point når man rammer kasserne. Nogle af stenene skal ikke rammes, og hvis man gør, taber man. Boldene skal variere i størrelse og fart. Kasserne…”

“Jeg vil gerne have fixet boldens “hitbox” sådan at den faktisk rammer ordentligt. Jeg vil lave spillet så man styrer bolden frit rundt på skærmen med “wasd”. Så kommer stenene til at flyve efter en fra alle retninger og så skal man skyde dem ned med bolden, hvor jeg så gør så bolden kan …”

“en ‘aim trainer’ der skal træne en i at ramme små punkter hurtigt. pointen er at man skal klikke på en masse små cirkler der kommer frem på skærmen, cirklerne bliver hurtigt mindre og når man ikke at klikke på dem slutter spillet. ”

“Mit spil bygger på grundskitsen, men i stedet for at ligge på bunden, så skal tyngdekraften virke mod højre. man bevæger sig op og ned af væggen, men kan hoppe udad til venstre. man skal ramme firkanter for at sende dem tilbage, firkanterne må ikke røre væggen til højre, det sørger man for ved…”

“Spillet skal være et hjælpe-værktøj til personer der endnu ikke har tilegnet sig tastaturet. Spillet består af en masse firkanter der hver i sær har sit bogstav. Firkanterne “falder” nede fra toppen og ned i mod bunden. Når f.eks. en firkant med bogstavet a falder ned skal man klikke på tasten a på tastaturet, efterfølgende sendes der et skyd fra jetflyet hen i mod firkanten og den tiltentegøres.”


Fælles udfordringer (40 min)

For hvert af de følgende emner skal klassen diskutere (og måske implementere) funktionaliteten. Der er nødt til at være noget elastik ift hvor mange emner der kan nåes. For hvert emne lægges der op til at alle kan nå at implementere – og hvis nogen allerede har gjort det, kan de gå rundt og hjælpe andre.

Denne del af lektionen slutter under alle omstændigheder når en elev skal vise sin stump kode, omtrent 45 min inde i lektionen

  • Genstart /starte forfra skal være nemt
    • Strategi: (lav en knap som reloader siden)
    • Bud på løsninger
    • Tid til at implementere – gerne med makkerhjælp
  • En hopknap
    • Strategi (lav en knap som kalder funktionen der får bolden til at hoppe – hvad med udseende?)
  • Der skal være pointtæller
    • Strategi: (Find ud af hvad der skal give point – lav en pointtæller – lav et felt der viser point)
  • Man skal komme til at styre ball med piletasterne
    • Strategi: (udvid keypressed funktion)
  • Der skal være billeder på stenene og bolden
    • (find billede(r) – load i stone eller ball, vis dem i stedet for cirkler og firkanter)
  • Indsætte musik når man rammer objektet, og gameover musik hvis man dør
    • (hent lyd OPDAG FEJL modificer stone.js)

Bold skal kunne skyde – Gustav præsenterer (10min)

Afrunding

  • Det er godt nok selvom det ikke virker
  • Det handler om at eksperimentere med at skabe og forstå koncepter indenfor programmering på et personligt niveau
  • Det er vigtigt at skrive kommentarer i koden ifbm afleveringen

Lektion: knapper

Lektion: funktionen random()

Lektion: mouseX og mouseY

 

 

Leave a comment