Dekomposition är en grundläggande datavetenskaplig färdighet som är avgörande för att utveckla elevernas långsiktiga förståelse för hur man löser kodningsproblem. Den här artikeln utforskar vad sönderdelning är, varför det är viktigt och hur man underlättar elevers lärande om sönderdelning.
Vad är nedbrytning?
Dekomposition är processen att bryta ner ett komplext problem i mindre, mer hanterbara delar. Detta förenklar processen att skapa ett kodningsprojekt genom att låta eleverna lösa en del av problemet i taget.
Varför är nedbrytning viktigt?
När elever börjar lära sig programmera ställs de inför att tänka på språk på ett nytt och utmanande sätt. De måste gå från att kommunicera i talat språk, som är fullt av slutsatser och nyanser, till den precisa och logiska struktur som krävs vid kodning. Denna anpassning är extremt svår för eleverna och hindrar dem ofta från att lyckas. Dekomposition är en viktig datavetenskaplig färdighet som elever måste tillägna sig för att koda framgångsrikt, eftersom det gör det möjligt för eleverna att börja med talat språk och förfina det tills det är något som kan användas i ett kodningsprojekt.
Att bryta ner ett problem gör att det kan lösas i små steg, vilket hjälper till att förhindra att det blir överväldigande för eleverna. När eleverna bryter ner problem i mindre delar innan de börjar koda, kan de sedan bygga varje liten del av ett projekt och testa det för att se till att det fungerar som förväntat, innan de går vidare till nästa del. Detta är mycket enklare än att försöka koda alla steg som behövs för att uppnå ett mål på en gång, och det förhindrar att eleverna blir frustrerade över att gå vilse i ett långt projekt när de försöker felsöka fel.
Nedbrytningsprocessen ger också eleverna en systematisk metod för att bygga ett projekt, vilket eliminerar frestelsen att gissa och testa sig fram till en lösning. Att gissa och kontrollera är ett ineffektivt sätt att lösa ett problem, och det blir ineffektivt när eleverna börjar engagera sig i mer och mer komplexa kodningsutmaningar.
Dessutom gör dekomponering av ett projekt det möjligt för eleverna att identifiera mönster i sin kod och att bygga vidare på, modifiera och återanvända delar av koden. Detta gör både byggandet och felsökningen av projekt enklare, samtidigt som det ger eleverna en djupare förståelse för koden de skapar, vilket gör att de kan använda denna förståelse i framtida projekt.
Slutligen underlättar nedbrytning även samarbete mellan elever när de arbetar tillsammans för att skapa robotprojekt i grupper. Ett uppdelat projekt som registrerats i en ingenjörsanteckningsbok ger en artefakt som eleverna kan använda när de diskuterar gruppprojekt eller delar med andra grupper.
Underlätta nedbrytning
Nedbrytning sker när eleverna är i planeringsstadiet, innan de ens börjar bygga ut sina projekt. Eleverna bör dokumentera sin nedbrytningsprocess i sina ingenjörsanteckningsböcker och dela den med dig innan de börjar koda. För mer information om hur man använder ingenjörsanteckningsböcker med studenter, se den här artikeln.
Ge eleverna detta enkla ramverk i tre steg för att närma sig nedbrytning:
- Identifiera projektets huvudmål genom att ange det resultat som roboten kommer att visa när projektet är framgångsrikt. Anteckna detta mål i ingenjörsanteckningsboken.
- Bestäm de viktigaste stegen roboten måste ta för att uppnå målet. Beakta och registrera de viktigaste, eller övergripande, stegen som roboten måste slutföra för att uppnå målet. Anteckna dessa övergripande steg i ingenjörsanteckningsboken.
-
Bryt ner huvudstegen i minsta möjliga steg av robotens beteende. Bryt ner varje huvudsteg i det minsta beteende roboten kan utföra. Anteckna dessa uppdelade steg i ingenjörsanteckningsboken.
- Varje robotbeteende ska kunna matchas med ett motsvarande block eller kommando. Om inte, kan stegen delas upp ytterligare.
I det här exemplet bryter eleverna ner ett projekt för att slutföra en labyrint i VEXcode VR Wall Maze + Playground.
Steg 1: Identifiera projektets huvudmål. Anteckna målet i ingenjörsanteckningsboken.
Steg 2: Bestäm de viktigaste stegen roboten måste ta för att uppnå målet.
- Här har eleven tänkt igenom alla beteenden som roboten behöver utföra för att köra från startpunkten till slutpunkten i labyrinten, och listat dem i ordning i ingenjörsanteckningsboken.
Steg 3: Bryt upp huvudstegen i de minsta stegen av robotbeteende.
- Eleverna kan börja bestämma de ungefärliga värden som behövs för att slutföra varje steg. Dessa värden måste testas och justeras när projektet bygger i VEXcode.
- Eleverna bör kontrollera att varje dekomponerat steg motsvarar direkt ett VEXcode-block. Om inte, behöver steget sönderdelas ytterligare.
När eleverna har delat upp sitt projekt till nivån för enskilda block eller kommandon kan de gå från projektplaneringsstadiet till implementeringsstadiet. De bör överföra huvudstegen som bestämdes i steg 2 till Kommentarer, och sedan lägga till motsvarande block eller kommandon för varje fullständigt dekomponerat beteende från steg 3 till var och en av dessa kommentarer för att bygga sina projekt.
Eleverna bör bygga sina projekt ett delat steg i taget och testa varje beteende (eller logiskt grupperad uppsättning beteenden) innan de går vidare till nästa. Det är i detta skede som eleverna behöver använda de resurser de har för att bestämma rätt parametervärden. Till exempel, i VEXcode VR-exemplet ovan, bestämdes avståndsvärdena med hjälp av kunskapen om att varje labyrintkvadrat är 300 mm i diameter. Metoden för att bestämma värden varierar beroende på omständigheterna, men det kommer alltid att vara nödvändigt att testa och justera värden under processen att skapa ett kodningsprojekt.
Stödja elever när de lär sig nedbrytning
Innan eleverna börjar arbeta med en utmaning från ett STEM-labb, eller annat VEXcode-projekt, ta dig tid att arbeta igenom nedbrytningen själv så att du är redo att svara på frågor som eleverna kan ha. Uppmuntra eleverna att visa dig den uppdelade planen för sitt projekt innan de börjar koda, så att du kan förstärka uppdelningsprocessen och kontrollera att de har uppdelat uppgiften i minsta möjliga robotbeteenden. Påminn eleverna om att de ska kunna identifiera en blockering eller ett kommando som motsvarar varje beteende.
- Om eleverna har svårt att föreställa sig de huvudsakliga eller övergripande stegen som roboten behöver ta för att uppnå projektets mål, uppmuntra dem att:
- Rita den väg roboten behöver ta för att uppnå målet.
- Beskriv de steg roboten behöver ta för att uppnå målet.
- Diskutera de steg roboten behöver ta för att uppnå målet.
- Om eleverna har svårt att avgöra om deras steg har delats upp till individuella block- eller kommandonivåer, fråga dem:
- Hur många block eller kommandon skulle det krävas för roboten att slutföra det beteendet?
- Kan roboten slutföra det steget med bara ett block eller kommando?
- Hur kan man bryta ner det beteendet i ännu mindre robothandlingar?
Att stödja dina elever när de lär sig att bryta ner sig säkerställer att de har en solid grund för framtida problemlösning inom datavetenskap.
Har du fler frågor om hur man underlättar elevers lärande om nedbrytning i ditt klassrum? Fråga dem i PD+ Community, eller boka in en enskild session för att prata med en VEX-expert.