Vai ai contenuti

La San José State University supporta gli studenti nell’autoapprendimento delle nozioni base di programmazione

Il Dipartimento di informatica della SJSU aveva bisogno di un modo per ampliare le risorse così da favorire esercizi di programmazione illimitati per gli studenti di informatica.

Quando gli studenti imparano a programmare nei corsi introduttivi di informatica, molti hanno difficoltà ad applicare i concetti base. Cay Horstmann, titolare della cattedra di informatica alla SJSU, voleva aiutarli a esercitarsi nella programmazione da soli in modo che le loro capacità migliorassero più rapidamente. Purtroppo, poiché i problemi di programmazione spesso venivano riutilizzati anno dopo anno, gli studenti potevano cercare facilmente le soluzioni online. Il professor Horstmann voleva un modo per fornire più opportunità di esercitazione senza che fosse facile cercare le risposte.

"La domenica sera, quando gli studenti svolgono i compiti, potrebbero esserci 20 macchine virtuali in esecuzione, quindi man mano che cambia il carico di lavoro, le macchine si avviano e si arrestano automaticamente."

Cay Horstmann, titolare della cattedra di informatica, San José State University

Permettere una formazione pratica ed effettiva a tutti gli studenti

La creazione di un sistema che permetta agli studenti di apprendere autonomamente ha assunto maggiore importanza poiché gli studenti di discipline estranee all'informatica, come biologia e giurisprudenza, si interessano di programmazione come mezzo per aiutare le proprie ricerche o aumentare la produttività. La programmazione non è più pensata semplicemente per aspiranti sviluppatori.

"I dipartimenti di informatica devono prepararsi a questo cambiamento nella richiesta di competenze di programmazione", dichiara Horstmann. "Chi intraprende corsi di studio generici segue i corsi di informatica per riuscire meglio nel proprio ambito. Dato che c'è carenza di insegnanti di informatica, gli studenti devono poter imparare attraverso esercitazioni da autodidatti".

Cay ha sentito parlare del programma di borse di studio Google Cloud tramite lo Special Special Interest Group on Computer Science Education (SIGCSE) e ha presentato domanda per una borsa di ricerca per ricevere crediti di Google Cloud. Gli sono stati assegnati i crediti da utilizzare su qualsiasi prodotto Google Cloud. Cay ha utilizzato gli strumenti per sviluppare un sistema di autovalutazione, CodeCheck, contenente centinaia di esercizi con cui gli studenti possono esercitarsi nella programmazione.

CodeCheck è un programma basato sul Web progettato per aiutare a insegnare agli studenti come programmare in uno qualsiasi dei numerosi linguaggi. I professori possono personalizzare i problemi di programmazione, di modo che gli studenti debbano creare le proprie soluzioni e non possano semplicemente scovare le risposte online. Poiché i server del dipartimento di informatica erano già al completo, Cay ha sviluppato CodeCheck utilizzando Google Compute Engine, macchine virtuali con potenza illimitata di elaborazione. Ha scelto Stackdriver per il monitoraggio, il logging e diagnostica, e Cloud SQL per la scalabilità e la praticità.

"La domenica sera, quando gli studenti svolgono i compiti, potrebbero esserci 20 macchine virtuali in esecuzione, quindi man mano che cambia il carico di lavoro, le macchine si avviano e si arrestano automaticamente", afferma Horstmann.

Adesso, i professori di informatica della SJSU possono utilizzare gli strumenti del cloud computing per insegnare programmazione senza doversi preoccupare della capacità dei server dell'istituto. In questo modo è più facile coprire un numero maggiore di studenti, compresi quelli iscritti a facoltà che non siano di informatica. Gli studenti imparano a gestire un sistema remoto, a scalare i carichi di lavoro, a eseguire il logging e il deployment automatizzato.

Stimolare gli studenti a essere insegnanti di se stessi

CodeCheck fornisce agli studenti un feedback in tempo reale sulla loro programmazione, così possono sapere immediatamente se la loro soluzione è valida o no. CodeCheck non comunica agli studenti che cosa hanno sbagliato, lo devono scoprire da soli. In passato, gli studenti ricevevano una valutazione sul lavoro svolto non prima di settimane dopo la consegna. A quel punto, spesso avevano dimenticato il processo seguito per giungere alla risposta.

Dai risultati di sondaggi emerge che gli studenti trovano preziosa una risorsa online pratica da consultare. Non si vergognano di commettere un errore né sentono la pressione di terminare in un determinato lasso di tempo.

Secondo Horstmann, CodeCheck migliora anche la capacità di apprendimento degli studenti e il rendimento nelle verifiche. In un corso su Java non specialistico composto da due gruppi, il gruppo che ha utilizzato CodeCheck ha ottenuto risultati superiori del 50% rispetto al gruppo di controllo. In un corso sui linguaggi di programmazione, il gruppo che ha utilizzato CodeCheck ha ottenuto risultati superiori del 20% sulla programmazione in Scheme rispetto al gruppo di controllo. I due gruppi hanno ottenuto gli stessi risultati su una sola domanda su cui gli esercizi non vertevano. In un corso su C++ per studenti trasferiti, in cui tutti dovevano risolvere problemi pratici, il numero medio di tentativi per problema è diminuito di un terzo tra l'inizio e la fine del corso, mentre il tempo medio di completamento si è dimezzato.

Insegnare la programmazione a tutti

Gli studenti stanno diventando utenti nativi della cloud e gli strumenti didattici devono evolvere per soddisfare gli studenti di informatica, ma anche di altre discipline. Ad esempio, quando gli studenti fanno progressi passando dalla risoluzione di problemi basici basati su immagini alla creazione di loop, avviene un salto concettuale immenso poiché il loop deve funzionare con tutti gli input. Molti studenti comprendono il concetto, ma applicarlo è una questione molto più difficile. Appena imparano un pattern iniziano a capire come applicare il concetto per programmare.

Con lo strumento di autovalutazione, gli studenti possono iniziare gradualmente con cinque righe di codice. Quando devono scriverne 200 per un compito, cinque righe potrebbero sembrare un nonnulla, ma l'obiettivo è che gli studenti imparino a poco a poco e applichino ciò che hanno imparato di volta in volta in compiti più complessi.

"La programmazione è una competenza del XXI secolo per imprenditori, scienziati, avvocati, giornalisti e chiunque lavori con i dati", spiega Horstmann. "Se registriamo alti tassi di insuccesso insegnando l'informatica con il modello tradizionale "lezione-laboratorio-compiti a casa" a chi la sceglie come corso di studi, allora questo approccio non funzionerà con gli studenti che non la studiano come indirizzo principale. Per questo motivo io adotto il metodo collaudato dell'insegnare ripetendo i concetti".

"La programmazione è una competenza del XXI secolo per imprenditori, scienziati, avvocati, giornalisti e chiunque lavori con i dati."

Cay Horstmann, titolare della cattedra di informatica, San José State University

Eseguire un sistema di autovalutazione con operazioni di backend fluide

Stackdriver fornisce monitoraggio e capacità diagnostiche potenti che permettono a Cay di risolvere i problemi e assicurarsi che gli studenti stiano utilizzando lo strumento di autovalutazione correttamente. Ad esempio, se uno studente prova a eseguire un programma che ne elimina altri o che spegne la macchina, lo strumento di autovalutazione è programmato per impedire questo comando. A volte, in passato, Cay ha trascorso ore a eseguire il debug di programmi per scoprire la causa di un problema.

L'obiettivo principale di CodeCheck è ridurre le situazioni di conflitto per tutti gli studenti che vogliono esercitarsi nella programmazione. Per utilizzare lo strumento di autovalutazione, gli studenti non devono registrarsi o eseguire l'accesso. I docenti possono integrare CodeCheck nel sistema di gestione dell'apprendimento: gli studenti lavorano direttamente in questo ambiente e lo strumento di autovalutazione assegna loro dei voti. Cloud SQL tiene traccia del tempo impiegato da uno studente per lavorare su un compito e ne effettua il backup in modo automatico. Grazie a questa integrazione, l'invio dei programmi è pratico per insegnanti e studenti, poiché gli studenti possono inviare un compito facendo clic su "Record my score" (Registra il mio voto).

"Poiché la programmazione sta diventando una competenza per il futuro, invece che una competenza per sviluppatori, i dipartimenti di informatica devono adeguarsi di modo che gli studenti possano imparare secondo i propri ritmi", afferma Horstmann. "Grazie a CodeCheck, gli studenti possono mettersi alla prova per proseguire l'apprendimento fuori dall'aula".

Registrati qui per ricevere aggiornamenti, approfondimenti, risorse e molto altro.