Summary: | The Swedish government has decided to add programming to the Swedish curriculum to strengthen students’ digital skills. The teachers who will teach programming do not always know programming themselves. Because of that, KTH Royal Institute of Technology researchers are planning to start an initiative of creating a Massive Open Online Course (MOOC) in fundamental programming in Swedish for those teachers. Interpreting error messages given by the compiler is one problem with learning programming. An aim of this study is to lower that threshold. The study seeks to identify common misconceptions about programming among novice programmers in order to design a static analyser that investigates code written by students and provides formative feedback to help students in their own learning process. The study combines the constructivist theory of learning with views about formative assessment in order to automate the process that is usually done by a teacher or teaching assistant when assessing code. A phenomenographic study is done in order to identify teachers’ perceptions of common misconceptions about programming by interviewing five active teachers at KTH. The results of that study are used to construct code examples that correspond to these misconceptions. Those results lead to the design and implementation of a software that detects these problems in code. That software is evaluated using a larger set of test data, consisting of 77 errors divided into five larger programs, inserted by independent individuals. From the initial study, five categories of misconceptions are given. Of the 77 errors, the majority are correctly positioned and almost all are given a good hint about the position. About a quarter of the errors are parse errors, which never reach the analysing part of the software that demands the program to be parsable. The study shows that we have succeeded both in designing and implementing a software that detects the identified misconceptions with good results. In the context of a MOOC, the software might require an extension with a more advanced parser and also dynamic analysis to be able to test the correctness of the students’ programs. The software is limited to handle the language Javascriptish, which is a subset of JavaScript. === För att stärka den digitala kompetensen bland svenska grundskole och gymnasieelever har programmering lagts in i läroplanen. De lärare som är tänkta att hålla i denna programmeringsundervisning har själva inte alltid tillräckliga kunskaper i programmering, varpå ett initiativ för att hålla en storskalig, öppen och internetbaserad kurs (MOOC) på svenska har startats av forskare på Kungliga Tekniska Högskolan (KTH). En av svårigheterna med att lära sig programmering är att förstå meddelandena som kompilatorn ger. Ett mål med denna studie är att sänka denna tröskel för studenten. Denna studie ämnar identifiera vanliga missuppfattningar om programmering hos nybörjare, för att designa en programvara som utför statisk analys av kod skriven av studenter och därefter ge återkoppling kring dessa missuppfattningar. Studien kombinerar den konstruktivistiska teorin om lärande med tankar om formativ bedömning för att automatisera den process som vanligtvis görs av en lärare eller lärarassistent vid bedömning av kod. En fenomenografisk studie görs för att identifiera lärares uppfattningar om vanliga missuppfattningar kring programmering genom att intervjua fem verksamma lärare på KTH. Resultatet från den studien används sedan för att konstruera kodexempel som belyser de identifierade missuppfattningarna. Därefter designas och implementeras en mjukvara som sedan evalueras genom att analysera totalt 77 fel, konstruerade av oberoende individer, uppdelade på fem större program. Den initiala studien resulterar i fem olika kategorier av missuppfattningar. Av de 77 evaluerade felen ger majoriteten en korrekt positionsangivelse och nästan alla ger en god indikation över var felet ligger. Omkring en fjärdedel av felen är parsningsfel, vilka aldrig når huvudmjukvaran som kräver att programmet är parsningsbart. Studien visar att vi lyckas designa och implementera en programvara som med goda resultat upptäcker vanliga missuppfattningar kring programmering hos nybörjare, baserat på det teoretiska ramverket. I kontexten av en kurs på internet kan programvaran behöva utvecklas med en mer avancerad syntaxanalys (eng. parser) samt lägga till dynamisk analys av program för att även kunna testa programmens korrekthet. Programvaran är begränsad till att analysera kod skriven i språket Javascriptish, vilken är en delmängd till JavaScript.
|