Practical thinking in programming education: Novices learning hands-on
Kristina von Hausswolffs avhandling fokuserar på betydelsen av hands on-lärandet för programmeringsnoviser i gymnasiet.
Kristina von Hausswolff
Dr. Anna Eckerdal, Uppsala universitet. Dr. Maria Weurlander, Stockholms universitet
Dr. Tony Clear, Auckland University of Technology
Uppsala universitet
2022-02-17
Practical thinking in programming education: Novices learning hands-on
Institutionen för informationsteknologi
Abstrakt
Programmering anses numera vara en viktig färdighet och därför införs programmering i skolundervisningen runt om i världen. I Sverige integreras programmering in i de befintliga ämnena matematik och teknik genom en läroplansrevidering 2018. Detta är en del av en större satsning för att stärka undervisning som syftar till att öka medborgarnas digitala kompetens. Forskning om hur noviser lär sig programmera framstår som allt mer angeläget, såväl nationellt som globalt. Forskning inom området datavetenskapens didaktik (Computing Education Research, CER) har under flera decennier studerat nybörjarprogrammering med ett rikligt antal publikationer som resultat, ofta med fokus på högre utbildning såsom ingenjörsutbildningar. Inom forskningsområdet råder konsensus kring uppfattningen att det är svårt att lära sig programmera (Robins, 2019). När både ett större antal och ett bredare spektrum av elever/studenter ska lära sig programmera finns ett ökande intresse för kunskap inom programmeringsdidaktik. Det praktiska handhavandet, att lära sig ”hands-on”, betonas ofta inom labbintensiva utbildningar som fysik och medicin. I programmeringsundervisning innebär “hands-on”-lärande att studenter sitter vid en dator och löser programmeringsuppgifter under så kallade programmeringslaborationer. Under laborationstillfället, som ofta är på plats i en datorsal, finns labbassistenten eller en lärare att tillgå för praktisk kodnära hjälp. Det är också vanligt att studenterna arbetar två och två i en så kallad parprogrammering under dessa laborationer. Det innebär att en student skriver ”hands-on” på tangentbordet medan den andra i paret sitter bredvid, det vill säga ”hands-off”. Rollerna byts under tiden men båda deltar kontinuerligt i problemlösningen och löser uppgiften tillsammans. Denna typ av samarbete har visat goda läranderesultat. Såväl studenter som lärare och forskare är överens om att studenternas aktiva lärande ”hands-on” är en viktig komponent i att lära sig programmera. Ändå finns ett betydande gap inom forskningen om förståelsen av hur, när och varför ”hands-on”-lärandet har positiva effekter. Denna avhandling fokuserar på betydelsen av ”hands-on”-lärandet för programmeringsnoviser och använder en ”mixed method” metodologi. Den inkluderar en explorativ experimentstudie med gymnasieelever som undersöker vilka faktorer som spelar roll för lärandet av programmering och jämför lärande hands-on med hands-off. Avhandlingen inkluderar också naturalistiska klassrumsstudier med universitetsstudenter. Det teoretiska ramverk som används som grund för kunskapssyn 56 och lärandeteori är filosofisk pragmatism. Pragmatismen placerar handlingar/görandet i fokus för kunskapsförståelsen, vilket också är centralt i denna avhandling. Att skriva kod upplevs av studenterna i klassrumsstudierna som det viktigaste när man lär sig programmering. Detta bekräftades dock inte av experimentstudien när kunskapen mättes direkt efter den lektion där eleverna möter programmering för första gången. Eleverna som arbetade vid tangentbordet uppvisade lika bra kunskaper som eleverna som satt bredvid. Elever som arbetade hands-on rapporterade dock en minskning i stress under lektionen och de hade också bättre kunskaper i programmering efter en vecka. Lärande hands-on visade sig vara fördelaktigt för lärande över tid och en hypotes är att emotionella faktorer medierar detta (Artikel II). Den totala upplevelsen under undervisningstillfället kan göra att eleverna som arbetade hands-on associerade positiva känslor med programmering och vid senare tillfällen, när det återaktualiseras, medför detta ökad motivation till att ta sig an programmering eller eventuellt minns man bättre. Resultaten från klassrumsstudierna i naturalistisk miljö bekräftade att känslor och den sociala miljö där lärandet sker är viktiga komponenter i lärandet och detta stämmer överens med tidigare forskning , (Kinnunen & Simon, 2012). Nybörjare upplevde frustration när de fastnade i en programmeringsuppgift och inte kom vidare utan hjälp, men de kände också glädje när de lyckades. Upplevelserna liknar en ”känslomässig berg- och dalbana”. Att arbeta tillsammans i par för att hantera de känslomässiga berg- och dalbanor som noviserna möter uppskattas. Ändå betonar studenterna att det är nödvändigt att själv skriva kod för att lära sig programmera, att få tid för den individuella interaktionen med datormiljön (Artikel III). Studenter som upplevde negativa känslor och inte får individuell kodnära hjälp när de fastnar verkar få en negativ uppfattningen om sig själva som programmerare. Detta kan påverka dem i deras beslut om huruvida de ska fortsätta studera programmering. Dessa negativa uppfattningar om sig själva som programmerare verkar vara vanligare bland kvinnliga studenter. (Artikel III, V och VI) Två nya begrepp, ”practical thinking” och ”come to agreement”, har tagits fram under arbetet med att kontextualisera den pragmatiska filosofiska utgångspunkten inom domänen programmeringslärande. Användandet av ny teori har visat sig framgångsrikt för att analysera studenternas lärprocesser under en programmeringskurs (Artikel IV). Mot slutet av kursen kände studenterna i klassrumsstudien att ”konversationen” med datormiljön flöt på bättre, utan större avbrott eller hinder. Detta beskrivs som att studenterna har ”come to agreement” med datormiljön (Artikel VI). Handlingar formas till vanor under tiden man skaffar sig programmeringserfarenhet, dessa handlingar utgör ”practical thinking”. ”Practical thinking” innebär bland annat att testa uttryck som bygger på intuition och outtryckta tankar. Studenten får möjlighet att 57 tänka/handla och i korta sekvenser av handling och återkoppling interaktivt bygga upp en konversation med datormiljön.
Practical thinking in programming education: Novices learning hands-on
Understanding how novices learn to program is of national and global concern. A substantial number of studies have been conducted within computing education research (CER), and, although some understanding has been gained, research still finds that programming is hard to learn. This thesis presents a detailed investigation of novice students’ learning of computer programming. The research project used a mixed-methods approach that ties together a controlled study with upper secondary school students with naturalistic classroom studies at the university level.
Underpinning the research is a pragmatic philosophical view on knowledge and learning. Pragmatism places “doing” at the forefront of knowledge acquisition, and doing is also central to this thesis. Learning that takes place in the computer lab is the primary object of investigation. Throughout the research, hands-on learning (direct control of keyboard and thus interaction with the computer environment) is compared with hands-off learning (other participation in programming activities).
Results from the controlled study demonstrated that hands-on learning decreased stress and was beneficial for learning over time. However, the usefulness of hands-on learning could not be confirmed in terms of improved learning outcomes immediately after students’ first encounter with programming. The beneficial effect of hands-on learning over time could be explained by emotional factors as mediators.
Findings from the naturalistic settings confirmed that emotions and the social setting in which the learning takes place were important. Novices experienced frustration when getting stuck but also joy when succeeding — an “emotional roller coaster”. All students report that hands-on code writing is necessary when learning to program.
Students in this research appreciated time for individual interaction with the computer environment, and time for working together in pairs to handle the emotional roller coasters. Experiencing negative emotions, or not getting personalized help when stuck, seemed to negatively affect student beliefs about themselves as programmers, and may result in decisions not to continue with computing.
Two new concepts, ‘practical thinking’ and ‘come to agreement’, were developed, which tie pragmatic knowledge theory to learning to program. These concepts help to understand and re-describe the purpose of an introductory programming course that in a way emphasizes the “doing”. This novel use of pragmatism in CER is one important contribution to the research field. The research presented in this thesis has implications for how programming education can be understood beyond the dichotomy of theory and practice.