Wanneer studenten leren programmeren in basiscursussen over informatica, hebben veel studenten moeite met het toepassen van de fundamentele concepten. Cay Horstmann, informaticadocent aan San José State University, wilde studenten helpen het programmeren zelf te oefenen, zodat ze hun vaardigheden sneller kunnen verbeteren. Aangezien codeeropgaven vaak elk jaar opnieuw werden gebruikt, konden studenten helaas heel eenvoudig de oplossingen online opzoeken. Horstmann had een manier nodig om studenten meer te laten oefenen, zonder dat ze makkelijk de antwoorden konden opzoeken.
San José State University geeft studenten de mogelijkheid om zichzelf te leren programmeren
De informatica-afdeling van San José State University had beperkte virtuele-machinecapaciteit en was op zoek naar een manier om meer middelen beschikbaar te stellen en informaticastudenten onbeperkte mogelijkheden te geven om te leren programmeren.
"Op een zondagavond, als de leerlingen hun huiswerk doen, kunnen er wel twintig virtuele machines aan het werk zijn, dus aangezien de werklast wisselt, gaat ook de activiteit van die machines op en neer."
Cay Horstmann, Professor Informatica, San José State University
Praktische training beschikbaar maken voor alle studenten
Het maken van een systeem voor studenten om zichzelf te onderwijzen is belangrijker geworden, aangezien studenten van buiten het informaticaonderwijs, zoals biologie en rechten, geïnteresseerd raken in programmeren als manier om te helpen met onderzoek of om productiever te worden. Programmeren is niet langer uitsluitend voor ontwikkelaars in de dop.
"Informaticafaculteiten moeten zich voorbereiden op deze verandering in de behoefte aan programmeervaardigheden", vindt Horstmann. "Ook studenten uit andere richtingen volgen informaticaonderwijs om hen te helpen doeltreffender te worden op hun eigen vakgebied. Aangezien er een tekort is aan informaticadocenten, moeten studenten zichzelf kunnen leren programmeren."
Cay hoorde via Special Interest Group on Computer Science Education (SIGCSE) over het studietoelageprogramma van Google Clouen heeft zich aangemeld voor een onderzoekstoelage om Google Cloud-tegoed te krijgen.Hij heeft de tools gebruikt om de automatische beoordelaar CodeCheck te ontwikkelen. Deze bevat honderden oefeningen waarmee leerlingen hun programmeervaardigheden kunnen oefenen.
CodeCheck is een op internet gebaseerd programma dat is ontworpen om studenten te leren hoe ze moeten programmeren in een van de verschillende talen. Docenten kunnen de programmeeropgaven aanpassen, zodat studenten hun eigen oplossingen moeten verzinnen en de antwoorden niet gewoon online kunnen vinden. Aangezien de servers van de informaticafaculteit al volledig werden benut, bouwde Cay CodeCheck met behulp van Google Compute Engine, virtuele machines met onbeperkte rekenkracht. Hij koos voor Stackdriver voor de controle, de logboekregistratie en diagnostische tests, en Cloud SQL vanwege de schaalbaarheid en het gebruiksgemak.
"Op een zondagavond, als de leerlingen hun huiswerk doen, kunnen er wel twintig virtuele machines aan het werk zijn, dus aangezien de werklast wisselt, gaat ook de activiteit van die machines op en neer", aldus Horstmann.
Tegenwoordig kunnen informaticadocenten van San José State University cloudcomputing-tools gebruiken om les te geven in programmeren, zonder dat ze zich zorgen hoeven te maken over de capaciteit van de universiteitsservers. Zo kunnen ze eenvoudiger meer studenten les geven, waaronder studenten die een andere studierichting volgen dan informatica. Studenten leren over het beheer van een systeem op afstand, schaling van werklast, logboekregistratie en geautomatiseerde implementatie.
Studenten stimuleren om het zichzelf te leren
CodeCheck geeft studenten in realtime feedback over hun codering, zodat ze meteen weten of hun oplossing juist is of niet. CodeCheck vertelt studenten niet wat er verkeerd is, daar moeten ze zelf achter komen. In het verleden kregen studenten pas weken nadat ze het hadden ingeleverd feedback op hun werk. Op dat moment waren ze het proces dat ze hadden gevolgd om tot het antwoord te komen alweer vergeten.
Uit enquêteresultaten blijkt dat studenten het waardevol vinden om een online oefenhulpmiddel te hebben. Ze zijn niet bang om fouten te maken en voelen niet de druk om binnen een bepaalde tijd klaar te moeten zijn.
Volgens Horstmann verbetert CodeCheck tevens de prestaties van leerlingen op het gebied van leren en toetsen. In een Java-cursus met twee groepen scoorde de groep die CodeCheck gebruikte vijftig procent beter dan de controlegroep. Bij een cursus programmeertalen scoorde de groep die CodeCheck gebruikte twintig procent hoger op vragen over programmeren met Scheme dan de controlegroep. Voor één vraag die niet voorkwam in de oefenvragen, scoorde de twee groepen hetzelfde. In een cursus C++ voor overstapstudenten waarvoor alle studenten oefenopgaven moesten oplossen, daalde het aantal pogingen per opgave met een derde tussen het begin en het eind van de cursus, en halveerde de gemiddelde tijd voor het voltooien van de vragen.
Programmeren onderwijzen aan iedereen
Studenten maken steeds meer gebruik van de cloud en onderwijstools moeten zich zodanig ontwikkelen dat ze niet alleen informaticastudenten ondersteunen, maar ook studenten in andere studierichtingen. Wanneer studenten bijvoorbeeld van elementaire op afbeeldingen gebaseerde opgaven overstappen naar het maken van loops, vindt er een enorme conceptuele sprong plaats, aangezien de loop alle input moet kunnen verwerken. Veel studenten begrijpen het concept wel, maar de toepassing ervan is veel moeilijker. Zodra ze een patroon leren, beginnen ze te begrijpen hoe het concept op code moet worden toegepast.
Met behulp van de zelftesttool kunnen studenten klein beginnen met vijf regels code. Als studenten 200 regels code moeten schrijven voor een opdracht, lijken vijf regels misschien heel weinig, maar het doel is dat studenten in kleine stappen leren en datgene wat ze leren geleidelijk toepassen op complexere opdrachten.
"Programmeren is een 21e-eeuwse vaardigheid voor zakenmensen, wetenschappers, advocaten, journalisten, iedereen die met gegevens werkt", vertelt Horstmann. "Als blijkt dat met de traditionele manier van onderwijzen in (praktijk)lessen maar weinig informaticastudenten slagen, dan gaat deze manier niet werken voor studenten in andere richtingen. Daarom gebruiken we de reeds lang beproefde manier van leren door te herhalen."
"Programmeren is een 21e-eeuwse vaardigheid voor zakenmensen, wetenschappers, advocaten, journalisten, iedereen die met gegevens werkt."
Cay Horstmann, Professor Informatica, San José State University
Zelftesttool uitvoeren met naadloze integratie met de backend-activiteiten
Stackdriver biedt grote capaciteit op het gebied van controle en diagnostiek waarmee Cay problemen kon oplossen en kon waarborgen dat studenten de zelftesttool op de juiste wijze gebruikten. Als een student bijvoorbeeld probeert een programma uit te voeren waarmee andere programma's worden gewist of waardoor de machine wordt uitgeschakeld, dan is de zelftesttool zo geprogrammeerd dat een dergelijke opdracht wordt geblokkeerd. Vroeger was Cay uren bezig met het opsporen van fouten om de oorzaak van een probleem te ontdekken.
Het voornaamste doel van CodeCheck is het eenvoudiger maken voor studenten die programmeren willen oefenen. Studenten hoeven zich niet te registreren of in te loggen om de zelftesttool te gebruiken. Docenten kunnen CodeCheck integreren in het Learning Management System (LMS). Studenten werken rechtstreeks in het LMS en de zelftesttool geeft de studenten hun score. Cloud SQL houdt bij hoelang een student bezig is met een opdracht en maakt daar automatisch een back-up van. Dankzij deze integratie kunnen studenten klikken op 'Mijn score vastleggen' om een opdracht in te leveren, waardoor het indienen van opdrachten eenvoudig is voor studenten en docenten.
"Aangezien programmeren een vaardigheid voor de toekomst wordt en niet alleen een vaardigheid voor ontwikkelaars, moeten informaticafaculteiten zich aanpassen, zodat studenten in hun eigen tempo kunnen leren", aldus Horstmann. "Met CodeCheck kunnen studenten zichzelf uitdagen om ook buiten de les te blijven leren."