Når studenter lærer å programmere på innføringskurs i datavitenskap, er det mange som sliter med å anvende de grunnleggende begrepene. Professor i datavitenskap Cay Horstmann ved SJSU ville hjelpe studentene å øve seg i programmering på egen hånd, så de kunne forbedre ferdighetene sine raskere. Uheldigvis kunne studentene lett slå opp løsningene på nett, siden kodeoppgavene ofte ble gjenbrukt fra år til år. Professor Horstmann trengte en metode for å tilby mer trening uten å gjøre det enkelt å se svarene.
Ved San José State University får studentene hjelp til å lære grunnleggende programmering gjennom selvstudier
Avdelingen for datavitenskap ved SJSU hadde begrenset virtuell maskinkapasitet, så de trengte å utvide ressursene sine for å kunne gi datastudentene ubegrenset med programmeringsoppgaver.
«På søndagskvelden, når studentene jobber med hjemmeleksene sine, kan det være 20 virtuelle maskiner som kjører, så etter som arbeidsmengden endrer seg, starter maskinene automatisk opp og stenger seg ned.»
Cay Horstmann, professor i informatikk, San José State University
Praktisk og realistisk læring for alle studenter
Det er blitt viktigere å lage systemer der studentene kan lære selv, ettersom studenter fra andre fagfelt enn data, som biologi og jus, begynner å interessere seg for programmering som et hjelpemiddel til å gjennomføre undersøkelser eller bli mer produktive. Programmering er ikke lenger bare for folk som vil bli utviklere.
«Datafagene trenger å forberede seg på denne endringen i interesse for programmeringskunnskap», sier Horstmann. «Studenter på forskjellige fag tar datakurs for å få hjelp til å bli mer effektive på sitt eget felt. Siden det er mangel på datalærere, trenger studentene mulighet til å lære på egen hånd gjennom øvelser.»
Cay ble oppmerksom på tilskuddsprogrammet for Google Cloud Education takket være SIGCSE (Special Interest Group on Computer Science Education) (SIGCSE) og søkte om et forskningstilskudd for å motta Google Cloud-tilskudd. Han ble tildelt tilskuddet for å bruke det på et hvilket som helst Google Cloud-produkt. Han brukte verktøyene til å utvikle det automatiske retteverktøyet target="_blank">CodeCheck
, med hundrevis av øvelser elever kan bruke til å øve seg på programmering.
CodeCheck er et nettbasert program som er utviklet for å hjelpe til med å lære studenter å programmere i mange forskjellige språk. Professorene kan lage egendefinerte programmeringsoppgaver, så studentene må finne sine egne løsninger – de kan ikke bare finne svarene på nett. Cay bygget CodeCheck med Google Compute Engine, virtuelle maskiner med ubegrenset datakraft, fordi hele tjenerkapasiteten på avdelingen for datavitenskap allerede var opptatt. Han valgte Stackdriver til systemstatistikk, loggføring og diagnostikk, og Cloud SQL av hensyn til skalerbarhet og brukervennlighet.
«På søndagskvelden, når studentene jobber med hjemmeleksene sine, kan det være 20 virtuelle maskiner som kjører, så ettersom arbeidsmengden endrer seg, starter maskinene automatisk opp og stenger seg ned», sier Horstmann.
Nå kan professorer i datavitenskap ved SJSU bruke verktøy for databehandling i nettskyen til å undervise i programmering – uten at de trenger å tenke på tjenerkapasiteten på skolen. Det gjør det lettere å gi plass til flere studenter, også slike som skal ta graden i andre fag enn datavitenskap. Studentene lærer om administrasjon av eksterne systemer, skalering av arbeidsmengder, loggføring og automatisert implementering.
Studentene blir oppmuntret til å lære på egen hånd
Med CodeCheck får studenter tilbakemelding på kodingen sin i sanntid, slik at de umiddelbart får vite om løsningen deres får bestått eller ikke. CodeCheck forteller ikke studentene hva de har gjort galt – det må de finne ut på egen hånd. Tidligere fikk studentene tilbakemelding på arbeidet sitt først flere uker etter innleveringen. Innen den tid hadde de ofte glemt hvilken fremgangsmåte de hadde fulgt for å komme frem til svaret.
Undersøkelser viser at studenter synes det er verdifullt med hjelpemidler til øving på nett. Da blir det ikke flaut å gjøre feil, og de føler seg ikke presset til å bli ferdig på en bestemt tid.
Ifølge Horstmann medfører CodeCheck også at studentene lærer bedre og gjør det bedre på prøver. På et grunnkurs i Java som var delt inn i to grupper, fikk gruppen som brukte CodeCheck, 50 prosent bedre resultat enn kontrollgruppen. På et kurs i programmeringsspråk oppnådde gruppen som brukte CodeCheck, 20 prosent høyere poengsummer på spørsmål om Scheme-programmering enn kontrollgruppen. De to gruppene hadde samme poengsum på ett spørsmål som ikke var blitt dekket i øvingsoppgavene. På et kurs i C++ for studenter fra andre læresteder, der alle studentene måtte gjøre øvingsoppgaver, gikk det gjennomsnittlige antallet forsøk per oppgave ned med en tredjedel i løpet av kurset, og gjennomsnittstiden det tok å bli ferdig, ble halvert.
Programmering for alle
Studentene er i ferd med å bli drevne nettskybrukere, og læremidlene må utvikles slik at de er til nytte både for datastudenter og studenter som tar andre fag. Studentene gjør for eksempel et stort sprang i tenkningen når de går videre fra enkle bildebaserte oppgaver til å lage sløyfer, siden sløyfen må fungere for alle inndata. Mange studenter forstår begrepet, men å anvende det er mye vanskeligere. Når de først har lært et mønster, begynner de å forstå hvordan begrepet kan anvendes på kode.
Med rettesystemet kan studentene begynne i det små med fem linjer kode. Når studentene trenger å skrive 200 linjer kode til en oppgave, kan fem linjer virke veldig lite, men målet er at studentene skal lære små trinn om gangen og gradvis anvende det de lærer, på mer komplekse oppgaver.
«I det 21. århundre er programmering nyttig å kunne for forretningsfolk, forskere, jurister, journalister og i det hele tatt alle som jobber med data», sier Horstmann. «Hvis vi har høy strykprosent på fordypningsfag i datavitenskap når vi underviser etter den tradisjonelle modellen – forelesning, laboratorieøvelse, hjemmelekse – kommer det ikke til å fungere for de studentene som ikke tar fordypning. Derfor bruker jeg den velprøvde tilnærmingen at øvelse gjør mester.»
«I det 21. århundre er programmering nyttig å kunne for forretningsfolk, forskere, jurister, journalister og i det hele tatt alle som jobber med data.»
Cay Horstmann, professor i informatikk, San José State University
Kjøring av rettesystem med sømløse operasjoner på tjenerdelen
Med Stackdriver får Cay kraftige redskap til systemstatistikk og diagnostikk, slik at han kan feilsøke problemer og sikre at studentene bruker rettesystemet riktig. Hvis en student for eksempel prøver å kjøre et program som sletter andre programmer eller slår av maskinen, er rettesystemet laget for å blokkere slike kommandoer. Før i tiden kunne Cay noen ganger bruke timer på å feilsøke programmer for å avdekke årsaken til problemet.
Hovedformålet med CodeCheck er å gjøre det lettere for alle studenter som vil øve seg på programmering. Studentene trenger ikke å registrere seg eller logge på for å bruke rettesystemet. Professorene kan integrere CodeCheck i læringsplattformen. Studentene jobber direkte i læringsplattformen, og rettesystemet innhenter poengsummene deres. Cloud SQL holder rede på hvor lenge studenten har jobbet med oppgaven, og tar automatisk sikkerhetskopi. Integrasjonen gjør det mulig for studentene å klikke på «Notér poengsummen min» for å levere inn oppgaver, noe som gjør innlevering av programmer lettvint både for professorer og studenter.
«Ettersom programmering blir nyttig kunnskap for fremtiden, snarere enn kunnskap for utviklere, må datafagene tilpasse seg slik at studentene kan lære i sitt eget tempo», sier Horstmann. «Med CodeCheck kan studentene utfordre seg selv til å fortsette læringen utenfor klasserommet.»