Visar inlägg med etikett datalogiskt tänkande. Visa alla inlägg
Visar inlägg med etikett datalogiskt tänkande. Visa alla inlägg

måndag 24 mars 2014

När mina egna ord inte räcker till...

...är det bra att andra kan formulera sig. Det här med demokratiaspekten av kodkunskap från en annan aspekt än den jag brukar anföra. Tack för det Simon Winter.

http://fof.se/tidning/2013/10/artikel/kronika-datorkunniga-barn-starker-var-demokrati

onsdag 15 januari 2014

Träna sekvenstänk med datorspel "live"

Treornas programmeringstema fortsatte idag. Vi jobbade vidare med Kojo och jag repeterade begreppen funktion och parameter. De fick lära sig några fler funktioner som kräver parameter för att fungera. De fick också lära sig hur man gör en loop genom att använda "upprepa" och {}

Efter lunch hade de fått koda av sig så pass att vissa hittade till spelen och exemplen. Då tyckte jag att det var dags att bryta. Vi delade upp de 25 eleverna i två grupper. Den ena gruppen fick stanna kvar och jobba vidare, samt att de fick prova på att programmera Bee-Bot tillsammans med treornas lärare Catarina. 

Jag tog med mig andra halvan av gänget till ett tomt klassrum där vi möblerade om för att kunna göra en spelplan åt vårt levande datorspel.

På en halvtimme hinner man inte så långt och med 12-13 elever så är det inte helt lätt. Jag tror absolut att konceptet går att utveckla. Eleverna tyckte det var roligt och ville försöka om och om igen. 

Vi byggde en bana med ett stort bord i mitten, gång runt bordet och avstickare åt alla fyra hörn, så att man skulle kunna komma undan den jagande zombien. 

Precis som med sexåringarna lät vi zombien gå i samma bana, i samma takt runt, runt så att den som styrde roboten kunde avgöra när hen skulle starta. Treorna var något bättre än sexåringarna på att hålla tempo som zombie, och inte förivras av att vilja fånga roboten. Svårare var det för robot och spelare. Liksom igår gav spelaren order genom att ropa kommandon. Höger och vänster är svårt i stressen. Likaså att avgöra avstånd och kompisens storlek på steg. 

För att göra det hela lite mer spännande lade vi till ett poängplockarsystem, legobitar att samla med funktionen "plocka". Vi lade också till "minor" i form av papper på golvet. Med funktionen "hoppa" kom roboten över. Det gällde alltså att anpassa antalet steg så att roboten inte dog. Vi fick även lägga till en tidsgräns för att alla skulle hinna med att spela, men det gjorde det bara roligare. 

Jag är sugen på att utveckla konceptet och verkligen skapa en fin datorspelsvärld med karaktärer och rekvisita. Någon gång i framtiden när jag har tid så...

 

tisdag 14 januari 2014

Kodintroduktion för förskoleklassen


Sexåringar är helt underbara att jobba med. De är så fullständigt oberäkneliga och spontana. Jag är i förskoleklassen en eftermiddag i veckan och vill nu passa på att introducera datalogiskt tänkande för dem. Några av mina elever har redan dansprogrammerat med några av dem, men det är 100 ungar så jag har några att beta av.

Idag slängde jag ut frågan i gruppen om några ville jobba lite med mig. Jag fick med mig 8 nyfikna. Första uppgiften som jag hade tänkt mig var att de skulle rita hur de tror att datorer fungerar. Det är en uppgift jag tänkt på länge att jag skulle vilja se hur barn tänker. Det visade sig vara alldeles för abstrakt för sexåringarna. De löste problemet som de själva ville. De började tillverka egna små laptops av A4:at.




Sen när jag skulle försöka visa dem en bild på hur en dator fungerar, var det en bild på en dator med burk och extern skärm. "Nä det där är ingen dator" avfärdades den med. Nehepp. "Min pappa har två data Karin" "Har du en iPad?" " Min kanin brukar sitta så här i buren"

Okej, abstrakt igen. Jag fattade vinken. "Kan vi inte robotdansa nu?" sa en kille, som tydligen varit med förut. Jag kom på att jag skulle testa lite inför morgondagens live-datorspel med treorna. Hur exakt kaotiskt kan det bli? Vi byggde en labyrint av stolar och gjorde två olika vägar de kunde gå. En blev programmerad till zombie som fick gå fram och tillbaka i samma takt genom labyrinten.

Sen skulle vi skriva kod. Underbara pilar och siffror! Vi försökte både med att bygga koden på golvet och på whiteboarden, men det var för svårt för roboten att följa. Istället fick en vara robotkapten.


Robotkaptenen styrde roboten med kommandon som "fram 8 steg". Det gällde att försöka få igenom roboten till bo, utan att bli tagen av zombien. Det var svårt att tänka tillräckligt snabbt och svårt att anpassa antalet steg. Bra träning på höger och vänster, uppskattning och tänka i flera led. En var zombiekapten och var den som "satte igång" zombien. Där tänker jag att det är möjligt att utveckla hur zombien ska kunna programmeras på olika sätt. Det aningens svårt att hålla samma takt hela tiden, speciellt när det var så nära att kunna ta roboten. Mycket förståeligt. 

 

Trots alla missöden och förkastade planeringar tror jag att eleverna fick med sig något. Nu återstår att se om de kan överföra sin kunskap på den här lille fine roboten som jag fick idag. 



Jag köpte min här:







Kodintroduktion för treorna

Den här veckan har jag glädjen att få hålla i elevens val för årskurs 3. De har en intensiv vecka med tre dagars elevens val från morgon till eftermiddag. En utmaning för mig som är van att ha små snuttar här och där. Det är helt klart annorlunda att ha samma grupp tre hela dagar. För att ytterligare göra det lite mer komplicerat har jag tagit in mina elever som lärare åt treorna, medan jag har andra lektioner. Det har krävt lite mer planering än vad jag normalt lägger ner. Eller rättare sagt, jag har varit tvungen att skriva ner instruktionerna som jag annars har själv i huvudet. Bra det, för då kan jag ju dela vidare.

Första lektionen var jag själv på plats. Jag hade tänkt använda en uppgift från code.org där eleverna får prova att skriva bokstäver i binärkod. http://prod.cdn-code.org/unplugged/unplug1.pdf Tyvärr lyckades jag inte få upp dokumentet på min jobbdator så jag var tvungen att tänka om på två minuter. Jag bestämde mig för att göra en variant av dansprogrammering som jag gjort tidigare.

Jag berättade om grunderna i programmering, sådant som är generellt för alla språk. Att det handlar om problemlösning, att förenkla så att datorn förstår, att stava rätt, skriva i rätt ordning och att vara tydlig.

Eleverna fick i uppgift att skriva kod två och två, för att få en robot (en av dem) att ta sig från ena sidan i klassrummet, till den andra. Det blev en förbril verksamhet i klassrummet när kod skulle testköras och lånbytas. Många skrev text, men några gjorde symboler istället.

 

Det visade sig att grupperna tänkte lite olika när det kom till att svänga till höger och vänster. De flesta menade att alla steg skulle gås i sidled, medan vissa menade att roboten skulle vrida sig och sedan gå rakt fram i ny riktning. Då blev det tydligt att man måste ha vissa regler som gäller, annars kan inte roboten tolka rätt.

Grupperna tog sig an uppgiften på väldigt varierande sätt. För vissa räckte det att försöka gå från A till B. Andra passade på att lägga in lite hinder och uppgifter för roboten på vägen. Det fick mig att vilja prova en ny sak, att göra ett "live" datorspel. I morgon ska vi testa. Vi ska bygga upp en bana med hinder och sedan även programmera lite fienden längs banan. Kan bli hur galet som helst med 25 ungar i klassrummet, men jag brukar ju inte banga för lite kaos :)

Efter den lekfulla introduktionen lämnade jag över eleverna i händerna på mina två femmor, Teodor och Ludvig. De fick mina instruktioner och sedan fick de klara resten själva. Uppgiften var att förklara hur Kojo fungerar och visa grunderna i programmet. Jag tror att det gick bra. Alla verkade i alla fall glada när jag kom tillbaka sista minutrarna av dagen.

Nu ser jag fram emot morgondagens utmaningar!

Här finns dokumentet med instruktionerna som eleverna fick:

https://docs.google.com/document/d/1tKJjpmi8T0lZ80aGdBIO5inIKuZPBla_vueherGUq68/edit?usp=sharing

torsdag 15 augusti 2013

Mindstorms av Seymour Papert



Fascinerande att läsa en bok som började skrivas på 1970-talet och som ännu är pinsamt högaktuell. Papert är professor (på MIT) i matematik, som även jobbat tillsammans med Jean Piaget i Schweiz under flera år. Inspirerad av Piaget intresserade sig Papert för hur det kommer sig att många tappar sugen för matematik och rent av får "mathophobia" (något som jag verkligen känner att jag lider av).

Genom att ta fram programmeringsspråket LOGO som verkar likna Kojo väldigt mycket i det att man flyttar en sköldpadda genom kommandon. Vad jag förstår så är dock LOGO ett påhittat språk, mendan Kojo bygger på Scala som är ett programmeringsspråk som används.

Papert har många intressanta tankar, men boken är dåligt tryckt och blir därför extra svårläst. Jag tycker ändå den är värd att ögna igenom, inte minst för att få ett uppvaknande om hur länge sedan det talades om kod som viktigt i framtiden. Vilken framtid?, undrar jag. Är rätt säker på att Papert inte syftade på 2030. Vi är redan på efterkälken.

En poäng som jag tar med mig som stärkande ord, är Paperts åsikter om BASIC, att det var ett programmeringsspråk för de redan invigda, att det krävs något som är pedagogiskt enklare att ta till sig. Jag tänker på mina elever och mig själv, att det finns en mening med att jag som alltid kallat mig datoranalfabet, undervisar eleverna i det här. Min förhoppning är att jag kan få med mig även de inte redan frälsta på spåret genom att inte vara riktigt lika "nördig" som en genomsnittlig datorlärare.

Inser förstås vikten av att jag som lärare faktiskt lär mig mer och förstår vad jag ämnar lära ut, men jag tror att jag kanske lite lättare kan förstå vad som är svårt att förstå. Förstår ni?

Om man inte orkar läsa Paperts gamla bok i dåligt tryck, så kan man se några föreläsningar med honom på Youtube.


onsdag 24 juli 2013

Hur kan man använda programmering på svenskan?

I mitt arbete har jag främst använt programmeringen som en sätt att få till en ökad motivation till kommunikation hos mina elever. Det funkar bra tycker jag, men här ska jag ge exempel på hur man kan dra nytta av det datalogiska tänkandet även i språkundervisningen.

Anledningen till min passion för programmering är att den innehåller nycklar som jag tror är värdefulla verktyg för fortsatt lärande inom andra områden. Förra sommaren ramlade jag på en sammanställning som google har över datalogiskt tänkande och övningar i att träna förmågor i förhållande till det. 

Google tar upp några grundläggande begrepp som är viktiga principer i datalogiskt tänkande. Jag tar mig friheten att göra en översättning här på bloggen så slipper du klicka på länken just nu. 

Dekompostion: Förmågan att kunna bryta ner en helhet till mindre delar så att vi kan förklara en process för en annan person eller en dator. Om man tar till vana att bryta ner helheter lär man sig att känna igen mönster och generalisera och därmed förmågan att formulera algoritmer. Inom matematiken övar eleverna detta genom att ge olika förslag på hur man kan representera olika tal: 6= 1+1+1+1+1+1 eller 2x3 eller 2+2+2 eller 3+3 osv. 

Om man överför till språkundervisning så kan eleverna träna detta t.ex. genom att analysera text på olika sätt. En mening kan brytas ner till ordgrupper, satsdelar, vokaler och konsonanter. En längre text kan brytas ner i olika slags satser: frågor, påståenden, rak ordföljd vs omvänd ordföljd.

Jag tänker att jag använder textanalysen för att visa eleverna hur man måste tänka för att kunna kommunicera med en dator. En dator vet ju inte på förhand vad ett verb är. En programmerare kan "lära" datorn genom att skriva en algoritm som datorn kan följa för att lista ut om ett ord är ett verb eller inte. Förmågan att hitta de beståndsdelarna som krävs för att göra algoritmen tror jag är något som eleven kan ha nytta av, både för att få syn på språkets byggstenar och för att lösa problem i allmänhet. 

Känna igen mönster: Förmågan att hitta likheter och skillnader som gör att vi kan förutsäga vad som ska hända och ge oss ledtrådar och genvägar. Att känna igen mönster är en vanlig utgångspunkt för att lösa problem och designa algoritmer. Mycket av vår dagliga inlärning handlar om detta, redan som bebisar. Vi lär oss att om vi gör A så händer B. Det här är så klart en förmåga som kan utvecklas och det gissar jag att många lärare redan sysslar med. 

Låt eleverna hitta mönster i hur meningar är uppbyggda, ord stavas eller verb böjs. Inga revolutionerande övningar i sig, men koppla det till programmering så blir det mer spännande (tycker jag, men jag är ju lite nördig). 

Mönstergeneralisering och abstraktion: Förmågan att sålla bort den information som inte är nödvändig för att lösa ett visst problem och att generalisera den information vi behöver. Mönstergeneralisering och abstraktion gör att vi kan överföra en idé eller en process till generella termer (variabler) så att vi kan använda dem för att lösa liknande problem. Exempel på abstraktioner vi använder dagligen är kalendrar, kartor och matematiska formler. 

Designa algoritmer: Förmågan att kunna ta fram en stegvis strategi för att lösa ett problem. För att kunna skriva en bra algoritm måste man kunna bryta ner helheten till delar, känna igen mönster och hitta en lösning och sedan använda en abstraktion för att förklara med hjälp av variabler. Vardagliga algoritmer är vägbeskrivningar, recept och instruktioner. 

Att skriva instruktioner är svårt men ett viktigt kunskap som finns med i centrala innehållet och kunskapskraven i svenskämnet. Genom att använda det datalogiska tänkandet tänker jag att eleverna tydligare får syn på hur instruktioner är uppbyggda och hur de blir så effektiva som möjligt.