17 svar
2354 visningar
Lindehaven behöver inte mer hjälp
Lindehaven 820 – Lärare
Postad: 9 aug 2018 09:19

Att lära programmering

Skulle vilja diskutera ämnet programmering - vad och hur man lär sig och lär ut till andra. Du som studerar programmering, vad vill du lära dig och hur? Du som lär ut programmering, vad lär du ut och hur?

Ser att programmering ibland reducerats till att handla enbart om att skriva kod i ett visst programspråk. Ofta utelämnas viktiga delar som exempelvis samarbete, design, versions-hantering, test, felhantering, avlusning och dokumentation. Bristerna märks både i skolan och i arbetslivet. Tycker att vi behöver ändra på detta.

Aerius 504 – Fd. Medlem
Postad: 9 aug 2018 13:05 Redigerad: 9 aug 2018 14:33

Jag har intresserat mig för programmering på fritiden. Gått någon enstaka kurs i skolan. Jag har tittat mycket på programmerare på youtube och lyssnat på deras råd. Bland det bästa råden tycker jag är tänk i algoritmer som inte är kopplat till ett programmeringsspråk. Lära sig att förstå idéen av hur ett program är strukturerat och hur det utför sin uppgift. Denna idé kan sedan programmeras i olika spåk. Jag tycker man borde använda fler språk än ett i en kurs. Kursen kan ha som grundspråk Java, men vissa enklare delar kan man även göra i andra språk. Dels för att visa att det går men även visa hur olika programmeringsspråk kan användas tillsammans.

En annan sak är göra enkla skisser av programmet. Diagram över hur programmet ser ut och används. Till exempel innan någon kod skrivits beskriv programmet med en mind map.

jonis10 1919
Postad: 9 aug 2018 17:40

Hej

Jag studerar själv programmering (utöver det som görs i skolan) och lär även ut till klasskamrater/elever på skolan som läser programmering. Tyvärr så har den svenska skolan eller skolverket inte tillämpat val av programmering fören på gymnasiet. De har infört en lägre typ av programmering från årskurs 1 upp till högstadiet. Dock så är den programmering bara en typ av "drag and drop" med olika kodblock, vilket alltid är en början för elever, men jag anser inte att det är "riktigt" programmering. Jag tycker att man redan från åk 6-9 bör införa det fundamentala i något språk. På så sätt är man redo när man kommer till gymnasiet och det blir lättare att bygga vidare på sina kunskaper och även lättare att gå över till något annat språk skulle behövas.

Idag så kommer elever inte i kontakt med programmering fören åk 1 på gymnasiet (obligatoriskt endast för teknik programmet) vilket är en väldigt liten del av landets elever. Självklart finns det de som lär sig självmant genom internet etc, men jag pratar mer generellt just nu. Detta är ändå något som börjar förändras och börjar gå i en allt mer positiv riktning. Där skolverket försöker involvera allt fler elever inom programmering. Problemet är att många tänker på programmering som fakta, istället för att se det som ett språk. T.ex. så hade en vän som läst ett exempel ur boken och försökte komma ihåg koden och inte riktigt tanken på varför man ens införde den typen av variabeln etc. Detta leder till att elever lägger mer tid på att lära sig kod i huvudet, istället för att försöka förstå sig på problemet och därefter lösa det med t.e.x pseudokod. Då har eleven ändå tänkte och förstått stora delar av problemet därefter kan personen översätta det till kod ta hjälp av internet eller liknande för att kolla upp saker som t.ex. hur en sorteringsalgoritm ser ut.

Vi tar en grundläggande uppgift "Du ska kunna skriva in 5 tal därav ska programmet skriva ut det störa och det minsta talet samt summan av dem två talen."

När jag lär ut en person försöker jag börja med att fråga hur personen tänkt lösa uppgiften med ord. "Först behöver jag en lista som kan förvara mina tal. Sedan en metod som hittar det minsta respektive största talet osv...". Nu har ändå eleven en god överblick och kan börja att skriva koden. Om en elev har svårt att lösa problemet med ord så kan man som lärare alltid ge en ledtråd så att eleven kommer framåt. När eleven sedan börjar koda brukar det nästan alltid vara något som man glömmer bort, antigen så kommer man på det själv eller så låter man eleven söka på internet efter ett svar på problemet. Självklart inte hela uppgiften men om det är någon metod eller liknande. Det är också en väldigt god kunskap att kunna söka från internet och använda sig av den informationen och översätta det till sitt eget problem.

Lindehaven 820 – Lärare
Postad: 13 aug 2018 10:38

Aerius och jonis10, tack för era inlägg. Jag håller med om vikten att tänka igenom lösningar innan man börjar programmera. Att beskriva lösningar i ord, pseudo-kod, diagram, skisser, mind map el dyl som visar data, flöde, algoritmer, gränssnitt och struktur är bra exempel på vad som kan ingå i design. Jag tycker att studenterna ska ges en förståelse för vikten av detta oavsett vilket programmeringsspråk de använder. Att leda dem fram med ledtrådar och tips tror även jag är bra för att lära studenterna att utforma olika lösningar.

På internet finns otroligt mycket att läsa, se och lyssna på gällande programmering. Det är en mycket bra källa till information om man kan söka, sålla och vara källkritisk. Det finns många forum liknande Pluggakuten som är specialiserade på programmering där man kan få rankade svar på de mest obskyra frågor.

Men det jag vill förmedla till studenter - förutom betydelsen av design - är en mer sammanhängande och komplett bild av vad programmering är och vad man behöver kunna för att kunna arbeta med programmering. Hur vet man att man förstått uppgiften och förväntad funktionalitet? Hur arbetar man tillsammans för att lösa uppgiften? Hur skriver man kod med tillräckligt få fel? Hur vet man att användarna är nöjda med mjukvaran? Hur hittar man orsaken till fel i mjukvaran? Hur vet man att ett visst fel blivit rättat och levererat till användarna? Hur vet man var och hur man ska koda för att lägga till ny funktionalitet? Och mer...

Aerius 504 – Fd. Medlem
Postad: 13 aug 2018 20:07

Jag tror förstå programmet på en så hög nivå som möjligt. En mind map ska vara så detaljerad på sin nivå att den utgör hela programmet, eller den del av programmet den representerar. Ha en känsla av utifrån den här mind mapen kan jag skriva programmet. Lära sig skriva kod, se koden på ett sådant sätt, att när fel upptäcks ska det gå att åtgärda dem.

PeterÅ 842
Postad: 8 sep 2018 17:24 Redigerad: 8 sep 2018 17:26

En sak som ofta förbises är att programmering är ett sätt att tänka och alla tänker inte på samma sätt.
Prova själv: Tänker du som en ledare, en kläddesigner, en trollkonstnär? Det är stora skillnader och jag tror inte Skolverket förstår detta. Alla kan helt enkelt inte bli programmerare eller skådespelare.

Det är stor skillnad att lära sig grundläggande grammatik i ett språk och att kunna tala det till att kunna skriva en roman i språket. Samma sak med programmering.

AlvinB 4014
Postad: 8 sep 2018 19:15

 Jag tycker ni alla har rätt i att det behövs ett mer allmänt algoritmiskt tänkande, MEN, jag tycker även att det är oerhört viktigt att man lär sig något språk på djupet.

När man väl ska börja skapa ett fullfjädrat program med fillagring och GUI-menyer m.m. skiljer sig detaljerna ganska mycket mellan språken. Det är inte bara själva syntaxen, utan också hur man angriper ett problem. Hur man bör utforma själva strukturen av ett program kan skilja sig avsevärt i ett objektorienterat språk mot för ett procedurellt språk, hur man ska hantera minne, etc. etc.

För att kunna programmera ett större program på ett korrekt sätt krävs en ganska stor erfarenhet inom just det programspråket, och det är det som jag tror ibland glöms bort. Jag själv har haft lite sporadisk programmeringsundervisning under min skoltid, men jag tyckte alltid det var olidligt tråkigt eftersom vi egentligen aldrig skapade ett riktigt program. Istället sysslade man bara med att göra en massa beräkningar med tal eller få gubbar att flytta sig över skärmen.

När jag djupdök i Java på egen hand fick jag upp ögonen mycket mer för programmering eftersom jag insåg att jag själv kunde skapa ett program som hade någon faktisk nytta och såg ut som ett vanligt program.

Det är klart att man kan hävda att det är för avancerat att direkt börja lära ut hur man gör ett standalone-program eller en hemsida men om man har rätt programmeringsmiljö är det fullt möjligt att få eleverna att enkelt programmera något som faktiskt påminner om en riktig applikation ganska tidigt. Det är klart att det ska finnas utrymme för hur man lär sig grunderna, men om man ganska snabbt visar elever att de faktiskt kan använda sina kunskaper till att skapa något som ter sig som ett riktigt program tror jag att man kan få många fler att intressera sig för programmering. I nuläget tror jag att man tappar många för att de inte inser vad "skriv ett program som spottar ut alla tal mellan 1 och 100" har att göra med det som de egentligen vill göra, att skapa ett program eller en hemsida liknande de man använder på datorn hemma.

SeriousCephalopod 2696
Postad: 8 sep 2018 21:40 Redigerad: 8 sep 2018 21:41

Mina intryck är att programmering generellt undervisas genom att helt enkellt titta på exempelkod, diskutera dess konstruktion med diagram, modifiera koden ganska marginellt för att se hur resultaten förändras, och sedan försöka reproducera kodens struktur från minnet med relevanta modifikationer. Inledningsvis sitter vi och skriver av från en projektorbild och senare börjar vi kopiera från internet. 

Hur enkellt detta schema är så verkar det fungera ganska väl, i alla fall mycket bättre än samma tillvägagångssätt med exempelvis matematik eller språkträning, och där mycket av skillnaden enligt mig förmodas komma av att programmerbara system har inbyggd återkoppling som snabbt gör det möjligt att utvärdera modifikationers effekter och människor är i regel väldigt väldigt bra på att lära oss saker genom mängdträning så länge det finns kontinuerlig återkoppling

De saker inom programmering som blir lidande blir dock de där det inte finns någon sådan uppenbar återkoppling. Dessa andra saker kräver istället någon grad av socialisering snarare än ett operationellt förhållande och handlar om att utveckla normer för vad som är bra dokumentation eller hur man kommunicerar i versionhanteringssytem. Att undervisa socialisering, att uppta normer, är om än kanske inte omöjligt så i alla fall betydligt svårare och de flesta som försöker göra programmerad undervisning för normer skäms mest över att det så uppenbart är en skenverklighet att man helst undviker det helt. Kanske måste man vara i en mer realistisk situation för att det ska gå?

De mer frisläppta tankarna sagt så ser jag väl inte att ämnesluckor nödvändigtvis är så kritiska utan de flesta kan väl lära sig de sakerna när behovet uppstår. Jag lärde mig aldrig något om databaser när jag studerade men känns fullt uppnåeligt att lära mig hantera en liten databas via Django och git för att hålla reda på klienten nu när behovet i min vardag/yrksliv uppstått. Hade varit trevligt att redan kunna såklart men all utbildning måste i främsta rummet bedömmas utifrån vilka möjligheter som givits för fortsatt oberoende lärande.

Också om vi ska rösta. Algoritmer är bäst. GUIs är för personer med för mycket fritid. 

Slutligen en tanke om pseudokod som jag tycker är lite lustig när jonis10 skriver att man bör hålla på med det som en preliminär aktivtet innan man kodar. Ska jag vara helt ärlig så konstruerar jag alltid pseudokod vid säg en förklaring genom att först tänka ut koden i ett verkligt språk som Python eller Java och därefter översätta det till pseudo genom att skala bort språkspecifik syntax. Det betyder ju att jag faktiskt aldrig tänker i pseudokod. Däremot är jag en flitig användare av blockdiagram för att beskriva saker. 

PeterÅ 842
Postad: 9 sep 2018 18:30 Redigerad: 9 sep 2018 19:41

AlvinB & SeriousCephalopod

Hur tänker ni nu? Ni utgår från att ni (var och en för sig) är utmärkta programmerare och vill fördjupa er i era redan tillägnade kunskaper. Det kommer efter många års träning och ni har tillägnat er den kunskapen. Bra så.
Era texter är däremot fokuserade mot er själva, hur bra ni kan uttycka er, hur bra ni är på att göra allt abstrakt.

Att lära sig programmera måste börja med ett intresse, en vilja. Finns tankegången där kan det fungera. Ingen ska tvingas lära sig programmera precis som att ingen ska tvingas att sjunga vackert eller att kunna tälja en vacker barkbåt .

Skolverket måste se över läroplanen, men kommer det ske?

woozah 1414 – Fd. Medlem
Postad: 9 sep 2018 19:13 Redigerad: 9 sep 2018 19:16

 Personligen så tycker jag att det är skrattretande att göra programmering obligatoriskt. Mestadels för att jag helt enkelt tycker att man introducerar programmering som (någon i tråden ren sagt) "drag-n-drop" men man vägrar sedan att gå vidare. Om man nu ska införa programmering så kan man börja med det grundläggande av hur programmering går till och de viktiga baserna för det (om vi bortser från att kunna ett helt språk då... :P ) hur programmering bedrivs.

 

Oftast tycker jag bara det är rent nonsens. Hur många av er brukar sätta er och dra och klistra lite utan att ha gjort ett enda förarbete? Inte många skulle jag gissa, och verkligen inte så jag skulle arbeta.

 

Edit: Men sedan förstår jag också själva principen att språket sig självt är svårt att börja lära ut. Hur många skulle i 7:an ärligt talat klara en lite lätt kod-snutt på java? Inte många heller. Därför tycker jag att det inte det ska införas heller, eftersom det varken blir korrekt eller särskilt användbart samt att det ger en helt felaktig bild av vad programmering är.

PeterÅ 842
Postad: 9 sep 2018 19:20 Redigerad: 9 sep 2018 19:25

woozah: Personligen så tycker jag att det är skrattretande att göra programmering obligatoriskt

Kanske inte skrattretande men väldigt onödigt och ett stort resursslöseri.

Skärpning. En drös OT-inlägg raderade och en varning utdelas till PeterÅ för upprepade brott mot reglerna 2.1 och 2.3. Ytterligare regelbrott kan leda till en tillfällig avstängning.

Håll er till ämnet och kom med sakliga argument och inlägg som för diskussionen framåt.

/Mod 

SeriousCephalopod 2696
Postad: 9 sep 2018 21:34 Redigerad: 9 sep 2018 21:43

PeterÅ. Mestadelen av mitt inlägg var en beskrivning av hur jag upplevt att programmeringsundervisning gått till, en fråga som jag tolkade var central för frågan om hur programmering lärs ut. Samt mina upplevda styrkor och svagheter med detta tillvägagångssätt. Jag genuint är intresserad om detta är en bild som känns igen av andra eller om det finns någon skola av programmeringsundervisning som jag inte känner till. Andra halvan var mycket riktigt mer utgående från min personliga erfarenheter men jag förmodar att det kan vara nyttigt att veta lite mer om varifrån jag kommer in i mina tankar. Det där om att jag inte eg. kan git är exempelvis för mig ett sätt att förtälja att jag inte är en så bred kodare.

Gällande införandet av programmering i grundskoleundervisningen (woozas tråd) så är jag själv försiktigt optimistisk även om jag ska erkänna att min reflex kring att många verkar vilja testa Blockly eller Scratch eller Swift Playgrounds som inkörsportar till programmering  var att tänka något i stil med: Nej men det är ju inte programmering såsom jag ser det! Men sedan när reflekterat något så inser jag att jag faktiskt behöver veta resultaten innan en sådan reflex är legitim. Min reflex kommer av att jag inte själv lärde mig på det viset men det är ju ingen god grund för att se till framtiden. När jag tänker efter så var det ju blockprogrammering i Game Maker Studio när jag lekte med det som 13åring och var ju rätt så kul. (Men ånej, nu talar jag ju om mig själv igen) Att java är ett tråkigt språk att komma igång med verkar ju vara skälet att block eller python rekommenderas som startpositioner idag. 

Sedan är det visserligen rätt att allt lärande måste involvera intresse och vilja för att fungera, såsom PeterÅ uppmärksammar. Tvång är för många den värsta av gläde-  och intressedödare och skolan är ett slags tvång. Men det argumentet är ju applicerbart på allt innehåll och jag vet inte om jag har förstått vad som skulle vara speciellt med programmering?

Om jag ska ha något motargument mot att introducera programmering i skolan så är det främst att det riskerar att ta ur programmeringsämnet dess förankring i verkligheten vilken just nu är så stark och där man tvingas lära sig realistiska verktyg och sökmetoder snarare än i små simulerande miljöer såsom klassrummen ofta riskerar bli. Men jag tror ändå att vinsterna med en mera kodkunnig allmännhet och de nya man lyckas nå och att det kan fräscha upp andra ämnen som matematiken -- är värt det.

Lindehaven 820 – Lärare
Postad: 12 sep 2018 12:35

Tack för alla olika tips och synsätt på ämnet. Önskade att fler studenter/elever deltog i diskussionen, men jag får ju inte alltid som jag vill :-)

Oldboy 17
Postad: 3 apr 2019 11:27

Mycket intressant tråd!

Jag är betydligt äldre än de flesta och min första kontakt med datorer var 1973 då jag var 25. Då handlade det om ALGOL och BASIC. Det var naturligtvis för sent och idag finns det ingen anledning att vänta så länge. Det är intressant att se vad ni tycker om programmering i grundskolan. Jag gissar att man kopierar det mesta från Storbritanien tex Scratch. Jag ser programmering som matematikens "förlängda arm". Det finns ingen anledning tex att för hand räkna ränta på ränta och insättningar under tex 20 år. Sudoku är även en sån uppgift där programmering är effektiv men det är nog över grundskolans nivå. Towers of Hanoi borde kunna vara lagom då det är lätt att förstå principen. Det mesta finns på rosettacode.org

Något som man även borde titta på är uppgifter som de flesta programspråk är dåliga på. Jag tänker då på Zebra puzzle. Det är inte omöjligt att lösa för hand med papperslappar på hus, personer, husdjur, drycker och tobak. Det sista är väl kanske inte rumsrent idag så maträtter är ju ett alternativ. Prolog är effektivt men ett ganska ovanligt språk.

Jag gillar inte programmering, så om det är en obligatorisk kurs kan det ju va bra om du vet hur man övertygar de mindre intresserade om dess användbarhet och att det är kul.

Jag har försökt övertyga mig själv några gånger men misslyckats. Jag lärde mig html för länge sedan, det var väldigt roligt tyckte jag. Jag vet inte vad som hänt sen dess

Lindehaven 820 – Lärare
Postad: 21 feb 2020 16:02

Jag undervisar i informationsteknik på gymnasiet där jag själv tycker att programmering är det roligaste. Vi har en mängd prylar omkring oss med datorer utan att vi tänker på det. Alla dessa prylar har några programmerat så det finns även ett behov av programmerare.

Att elever får prova enklare programmering i grundskolan är bra. Vi provar så mycket annat i skolan så att få en liten inblick i denna del av vår moderna värld känns rätt. Men programmeringskurser bör inte vara obligatoriskt för någon. Det är användningen av modern teknik som bör läras ut - inte hur den konstrueras.

De elever som läser Teknik-programmet får alla en introduktion i programmering. Där försöker jag visa nyttan, t ex programmering av robotars beteende eller lösning av problem som kräver många beräkningar där miniräknaren tar för lång tid.

Alla behöver inte vara intresserade av, eller kunna, programmering.

Teraeagle Online 21190 – Moderator
Postad: 21 feb 2020 16:56 Redigerad: 21 feb 2020 16:58

Det handlar visserligen mer om styr- och reglerteknik än programmering men jag kan tycka att det ges för lite undervisning inom ämnet. Jag tycker att det är bra att det lyfts fram mer och mer. Sen håller jag med om att det inte behöver vara obligatoriskt för alla, men fler elever borde göras medvetna (och intresserade?) av dess användningsområden. 

Om man (som jag) har pluggat en del kemi är man ofta skolad i hur saker ska blandas med varandra med vissa proportioner. Vill jag ha en lösning med pH 3 kan jag lätt räkna ut hur mycket av en syra som behöver tillsättas. Det är dock ganska ”verklighetsfrånvänt” i många verkliga sammanhang. Det är mer troligt att man har designat ett system som mäter pH och sedan justerar mängden tillsatt syra för att närma sig börvärdet 3. Det är först nu i arbetslivet som jag har insett vikten av området och på så sätt har skapat ett visst intresse för det.

Svara
Close