När studenterna lär sig att programmera på introduktionskurser i datavetenskap är det många som har problem med att tillämpa de grundläggande koncepten. Cay Horstmann är professor i datavetenskap på SJSU och ville hjälpa studenterna att öva sig i programmering på egen hand, så att de kunde öva upp sina färdigheter snabbare. Eftersom kodningsuppgifterna ofta återanvändes år efter år var det enkelt för studenterna att leta reda på lösningarna online. Professor Horstmann behövde ett sätt att erbjuda fler övningsuppgifter utan att det skulle vara enkelt att se svaren.
På San José State University stöder man elever som lär sig grunderna i programmering på egen hand
Med begränsad kapacitet för virtuella datorer behövde den datavetenskapliga institutionen på SJSU ett sätt att utöka resurserna om de skulle kunna tillhandahålla programmeringsövningar utan begränsningar till studenterna i datavetenskap.
"När studenterna gör sina hemuppgifter på söndagskvällarna kan vi ha upp till tjugo virtuella datorer igång, och när arbetsflödet ändras ökar eller minskar trycket på datorerna automatiskt."
Cay Horstmann, Professor i datavetenskap, San José State University
Möjliggör riktiga övningar för alla studenter
Att skapa ett system där studenterna kan lära sig på egen hand har blivit allt viktigare i takt med att studenter från andra ämnesområden, till exempel biologi och juridik, blir intresserade av programmering som ett sätt att göra bättre efterforskningar eller öka sin produktivitet. Programmering är inte längre ett ämne som bara riktar sig mot blivande utvecklare.
”Institutionerna för datavetenskap måste förbereda sig för det ökande intresset för programmering”, säger Horstmann. ”Studenter med andra inriktningar väljer kurser i datavetenskap för att bli effektivare på det egna studieområdet. Eftersom det är ont om datavetenskapslärare måste studenterna kunna lära sig på egen hand.”
Cay hörde talas om Google Clouds program för utbildningsbidrag via Special Interest Group on Computer Science Education och ansökte om ett forskningsanslag för att få ett tillgodohavande i Google Cloud. Han fick tillgodohavandet som han kan använda i valfri Google Cloud-produkt. Med hjälp av verktygen utvecklade han ett automatiskt betygsättningsprogram, CodeCheck, med hundratals övningar som studenter kan öva programmering på.
CodeCheck är ett webbaserat program som utformats för att lära studenter att programmera på olika språk. Lärarna kan anpassa programmeringsproblemen så att studenterna måste skapa egna lösningar i stället för att enkelt hitta svaren online. Eftersom den datavetenskapliga institutionens servrar redan kördes på full kapacitet skapade Cay CodeCheck med hjälp av Google Compute Engine, vilket är virtuella datorer med obegränsad datorkraft. Han valde Stackdriver för övervakning, loggning och diagnostik och Cloud SQL på grund av dess skalbarhet och praktikalitet.
”När studenterna gör sina hemuppgifter på söndagskvällarna kan vi ha upp till tjugo virtuella datorer igång, och när arbetsflödet ändras ökar eller minskar trycket på datorerna automatiskt”, säger Horstmann.
Nu kan datavetenskapslärarna på SJSU använda molnbaserade datorverktyg för att lära ut programmering utan att bekymra sig över kapaciteten hos skolans servrar. Det gör det enklare att ta sig an fler studenter, inklusive sådana som har andra huvudämnen än datavetenskap. Studenterna lär sig att hantera fjärrsystem och anpassa arbetsbelastningen samt loggning och automatisk implementering.
Uppmuntrar studenterna att lära sig på egen hand
Med CodeCheck får studenterna feedback på sin programmering i realtid, så att de vet direkt om lösningen är godkänd eller inte. CodeCheck talar inte om för dem vad de gjorde för fel – det måste de komma på själva. Tidigare fick inte studenterna feedback förrän flera veckor efter att de lämnat in arbetet. Vid det laget hade de ofta glömt hur de kom fram till svaret.
Undersökningsresultat visar att studenter sätter stort värde vid att ha övningsresurser online. De behöver inte skämmas om de begår ett misstag och känner ingen press att hinna klart inom en viss tid.
Enligt Horstmann förbättrar CodeCheck även studenternas inlärning och provresultat. Under en Java-kurs för studenter som inte hade Java som huvudämne, där klassen delats in i två grupper, presterade gruppen som använde CodeCheck dubbelt så bra som kontrollgruppen. På en kurs i programmeringsspråk fick gruppen som använde CodeCheck 20 procent bättre resultat än kontrollgrupper på frågor om Scheme-programmering. På en fråga som inte ingick i övningsfrågorna svarade de två grupperna likadant. I en kurs i C++ för studenter som bytt från andra kurser och där alla studenterna hade fått lösa övningsproblem gick det genomsnittliga antalet försök per problem ned med en tredjedel från kursstarten till slutet av kursen. Dessutom tog det i genomsnitt bara hälften så lång tid att svara på frågorna.
Programmeringsundervisning för alla
Studenterna använder molnbaserade tjänster allt mer, och utbildningsverktygen måste utvecklas för såväl datavetenskapsstudenterna som studenter inom andra områden. När en student exempelvis avancerar från ett enkelt bildbaserat problem till att skriva loopar är steget jättestort, eftersom loopen måste fungera med alla typer av indata. Många studenter förstår konceptet, men att tillämpa det är mycket svårare. När de lärt sig mönstret förstår de hur de ska överföra konceptet till kod.
Med verktyget för automatisk rättning kan studenterna börja med kortare uppgifter med fem rader kod. När de behöver skriva två hundra rader kod i en kursuppgift kan det låta lite med bara fem rader, men målet är att studenterna ska lära sig i små steg och tillämpa det de lärt sig gradvis i mer komplicerade uppgifter.
”Programmering är något som 2000-talets ekonomer, forskare, jurister, journalister … ja, kort sagt alla som arbetar med data behöver kunna”, säger Horstmann. ”Om vi har en hög andel datavetenskapsstudenter som inte klarar utbildningen med den traditionella modellen med föreläsning, laboration och hemuppgift, kommer den inte heller att fungera för studenter som har andra huvudämnen. Det är därför jag använder den välbeprövade metoden med inlärning genom repetition.”
"Programmering är något som 2000-talets ekonomer, forskare, jurister, journalister … ja, kort sagt alla som arbetar med data behöver kunna."
Cay Horstmann, Professor i datavetenskap, San José State University
Kör verktyg för automatisk rättning sömlöst via server
Stackdriver erbjuder stora möjligheter att övervaka och diagnostisera, så att Cay kan felsöka program och kontrollera att studenterna använder verktyget för automatisk rättning på rätt sätt. Om en student till exempel försöker köra ett program som raderar andra program eller stänger av datorn är verktyget för automatisk rättning programmerat att blockera det programmet. Tidigare fick Cay ibland lägga många timmar på att felsöka program för att hitta orsaken till ett problem.
Det huvudsakliga målet för CodeCheck är att minska motståndet för alla studenter som vill öva sig i programmering. De behöver inte registrera sig eller logga in för att använda verktyget för automatisk rättning. Lärarna kan integrera CodeCheck i lärplattformen och studenterna kan arbeta direkt på plattformen och få resultatet via verktyget för automatisk rättning. Cloud SQL håller koll på hur länge en student arbetat med uppgiften och säkerhetskopierar arbetet automatiskt. Tack vare den här integreringen kan studenterna klicka på en knapp för att spara resultaten och skicka in uppgiften, vilket gör inlämningsproceduren enkel för både lärare och studenter.
”I takt med att programmering blir en viktig kunskap för framtiden, snarare än något som bara gäller programmerare, måste institutioner för datavetenskap anpassa sig så att studenterna kan lära sig i sin egen takt”, säger Horstmann. ”Med CodeCheck kan studenterna utmana sig själva och fortsätta lära sig även efter lektionstid.”