Når eleverne skal lære at programmere på introduktionskurser for informationsteknologi, kæmper mange med at anvende de grundlæggende koncepter i praksis. Cay Horstmann, it-underviser på SJSU, ønskede at give eleverne mulighed for at øve sig i programmering på egen hånd, så de hurtigere kunne forbedre deres færdigheder. Men eftersom kodningsopgaverne ofte blev genbrugt år efter år, kunne eleverne let finde frem til løsningerne på nettet. Professor Horstmann havde brug for at give adgang til masser af øvelser, hvor det ikke var så let at finde svarene.
San José State University hjælper eleverne til selv at lære grundlæggende programmering
San José State Universitys it-afdeling havde begrænset virtuel computerkapacitet og søgte en måde at udvide deres ressourcer på, så eleverne kunne få ubegrænsede programmeringsøvelser i it-undervisningen.
"Søndag aften, når eleverne sidder og arbejder på deres hjemmeopgaver, kan der køre 20 virtuelle maskiner, og i takt med at belastningen ændrer sig, kører maskinerne automatisk op og ned i gear."
Cay Horstmann, Professor i datalogi, San José State University
Praktisk uddannelse i den virkelige verden til alle elever
Det blev endnu vigtigere at udvikle et system til eleverne, hvor de kunne lære på egen hånd, da elever med andre hovedfag end it som f.eks. biologi og jura har fået større interesse for programmering som en metode til at understøtte deres forskning eller blive mere produktive. Programmering er ikke længere kun relevant for kommende udviklere.
"It-afdelingerne er nødt til at forberede sig på denne nye efterspørgsel på programmeringsfærdigheder," siger Horstmann. "Elever med andre hovedfag vælger it-hold, så de kan blive mere effektive inden for deres eget felt. Eftersom der er en mangel på it-undervisere, har eleverne brug for at kunne få adgang til selvstudier."
Cay hørte om Google Cloud Education Grants-programmet gennem SIGCSE (Special Interest Group on Computer Science Education) og ansøgte om et forskningsstipendium for at modtage Google Cloud-kreditter. Han blev tildelt kreditterne, som han kunne bruge til et hvilket som helst Google Cloud-produkt. Han blev tildelt til at udvikle det automatiske bedømmelsesværktøj CodeCheck, med hundredvis af øvelser, som eleverne kan bruge til at øve sig i at programmere.
CodeCheck er et webbaseret program, der er designet som en hjælp til at lære eleverne, hvordan de programmerer på flere forskellige sprog. Underviserne kan tilpasse programmeringsøvelserne, så eleverne skal lave deres egne løsninger og ikke bare kan finde svarene på nettet. Eftersom it-afdelingens servere allerede kørte på fuld kapacitet, udviklede Cay CodeCheck ved hjælp af Google Compute Engine, virtuelle maskiner med ubegrænset computerkraft. Han valgte Stackdriver til overvågning, logning og diagnosticering og Cloud SQL på grund af dets skalerbarhed og anvendelighed.
"Søndag aften, når eleverne sidder og arbejder på deres hjemmeopgaver, kan der køre 20 virtuelle maskiner, og i takt med at belastningen ændrer sig, kører maskinerne automatisk op og ned i gear," siger Horstmann.
It-underviserne på San José State University kan nu bruge cloud computing-værktøjer uden at skulle bekymre sig om kapaciteten af skolens servere. Det gør det lettere at servicere et større antal elever, inklusive dem, der studerer andre linjer end informationsteknologi. Eleverne kan lære, hvordan man administrerer et fjernsystem, skalerer arbejdsbelastninger, logfører og automatiserer implementering.
Opmuntrer eleverne til egen læring
CodeCheck giver eleverne feedback i realtid på deres kodning, så de med det samme ved, om deres løsning er bestået eller ikke bestået. CodeCheck fortæller ikke eleverne, hvad de har gjort forkert – det skal de selv finde frem til. Tidligere fik eleverne ikke feedback på deres arbejde før flere uger efter, de havde indsendt det. På det tidspunkt havde de tit glemt den proces, de havde fulgt for at komme frem til svaret.
Undersøgelsesresultater viser, at eleverne finder det af stor værdi at have en ressource til øvelser på nettet. De føler sig ikke flove, hvis de laver fejl, og de føler sig ikke presset til at blive færdige inden for et bestemt tidsrum.
Ifølge Horstmann forbedrer CodeCheck også elevernes præstation i forhold til indlæring og tests. På et Java-kursus for elever, der ikke havde dette som hovedfag, havde man delt kurset op i to sektioner. Den sektion, der brugte CodeCheck, præsterede 50 procent bedre end kontrolgruppen. På et programmeringshold klarede den sektion, der brugte CodeCheck, sig 20 procent bedre i spørgsmål om Scheme-programmering end kontrolgruppen. Ved ét spørgsmål, der ikke var med i øvelsesspørgsmålene, fik de to grupper samme resultat. På et C++ hold for udvekslingsstuderende, hvor alle skulle løse opgaveøvelser, faldt det gennemsnitlige antal forsøg pr. øvelse med en tredjedel fra begyndelsen af og slutningen af kurset, og den gennemsnitlige tid til løsning af opgaven blev halveret.
Undervisning i programmering til alle
Eleverne er blevet vante brugere af skyen, og der er behov for at udvikle undervisningsværktøjer, der kan bruges både af de elever, som studerer informationsteknologi, samt elever på andre linjer. Når eleverne f.eks. avancerer fra grundlæggende billedbaserede problemer til at skabe loops, er der et meget stort konceptmæssigt spring, da loopet skal fungere for alle inputs. Mange elever forstår konceptet, men det er langt vanskeligere rent faktisk at anvende det i praksis. Når de lærer et mønster, begynder de at forstå, hvordan de anvender konceptet til kodning.
I CodeCheck kan eleverne starte i det små med fem linjers kode. Når eleverne skal skrive 200 linjers kode i forbindelse med en holdopgave, kan fem linjer virke som meget lidt, men målet er, at eleverne skal lære i små trin og gradvist bruge det, de har lært, i mere komplekse opgaver.
"Programmering er en standardkompetence i det 21. århundrede for forretningsfolk, forskere, advokater, journalister… alle, der arbejder med data," siger Horstmann. "Hvis vi oplever en høj dumpeprocent, når vi underviser elever med informationsteknologi som hovedfag ved hjælp af vores traditionelle model – holdundervisning, datalokale, hjemmearbejde – så vil det slet ikke fungere for elever, der ikke har det som hovedfag. Det er grunden til, at jeg bruger den gennemprøvede tilgang "lær gennem repetition".
"Programmering er en standardkompetence i det 21. århundrede for forretningsfolk, forskere, advokater, journalister… alle, der arbejder med data."
Cay Horstmann, Professor i datalogi, San José State University
Kørsel af automatisk bedømmelsesværktøj med backendopgaver
Stackdriver har effektive overvågnings- og diagnosticeringsfunktioner, der gør det muligt for Cay at lave fejlfinding og sikre, at eleverne bruger det automatiske bedømmelsesværktøj korrekt. Hvis en elev f.eks. prøver at køre et program, der sletter andre programmer eller lukker maskinen ned, er bedømmelsesværktøjet indstillet til at blokere en sådan kommando. Tidligere brugte Cay nogle gange timer på at fejlrette programmer for at finde frem til årsagen til et problem.
Hovedformålet med CodeCheck er at gøre programmering lettere for alle elever, der ønsker at øve sig i det. Eleverne behøver ikke at registrere sig eller logge ind for at bruge bedømmelsesværktøjet. Underviserne kan integrere CodeCheck i LMS (Learning Management System). Eleverne kan arbejde direkte i LMS, og CodeCheck viser elevernes resultater. Cloud SQL holder styr på, hvor længe en elev har arbejdet på opgaven og laver automatisk en sikkerhedskopi. Denne integration betyder, at eleverne kan klikke på "Registrer mit resultat" for at indsende en opgave, og det gør det lettere for både undervisere og elever.
"I takt med at programmering i stadig højere grad bliver en standardkompetence end en kompetence for udviklere, er it-afdelingerne nødt til at tilpasse sig, så eleverne kan lære i deres eget tempo," siger Horstmann. "Med CodeCheck kan eleverne udfordre sig selv til at lære mere, også uden for klasseværelset."