Un corso di programmazione un po’ speciale

Dopo un po’ di anni in cui mi sono occupato di formazione online, ora ho finalmente deciso di proporre un corso di programmazione che esemplifichi la mia idea in tal senso.

Fruibile dal proprio desktop, laptop, palmare, o telefono cellulare, questo corso si propone di presentare una introduzione alla programmazione orientata agli oggetti utilizzando il linguaggio di programmazione Java.

Non ci sono particolari prerequisiti, se non la voglia di imparare e l’impegno nell’investire circa 40 ore complessive nello studio dei materiali e nello svolgimento dei test e degli esercizi.

Il corso, organizzato in 9 capitoli, comprende:

– 33 lezioni teoriche di una pagina ciascuna contenenti le informazioni essenziali.

– 8 quiz di verifica e un quiz finale per testare le competenze teoriche.

– Un caso di studio per esercitare la capacità di programmare organizzato in 8 parti. Ogni parte comprende una descrizione del problema e la possibilità di  inserire codice in un semplice ambiente di sviluppo integrato nel browser. Le soluzioni del caso di studio sono inviate ad un elaboratore remoto che le controlla per segnalare eventuali errori sintattici, e ne verifica l’esecuzione eseguendo una serie di test predefiniti. Lo studente vedrà i risultati e potrà riprovare finché non passerà tutti i test.  

E’ proprio quest’ultima parte, gli esercizi che sono validati automaticamente su di un elaboratore remoto, la caratteristica che rende questo corso “un po’ speciale” e a mio avviso interessante soprattutto, ma non solo, per chi vuole imparare a programmare in autonomia. Per ottenere ciò ho utilizzato un ambiente che due miei ex-colleghi del Politecnico di Zurigo (ETH), Christian Estler e Martin Nordio, hanno sviluppato qualche anno fa e che e’ stato già validato con migliaia di studenti in tutto il mondo: Codeboard.

Infine, il corso è offerto gratuitamente, e’ accessibile da una sezione separata di questo sito. Per avere accesso, basta che facciate una richiesta tramite l’email disponibile nell’area contatti di questo sito indicando il vostro nome e cognome ed io vi creerò una utenza con la quale cominciare a lavorare.

In cambio vi chiedo la cortesia di farmi sapere se incontrate problemi, se non capite qualcosa, o semplicemente la vostra opinione sul corso.

Buon corso a tutti!

Un MOOC sulle metodologie agili di sviluppo software

E’ ora possibile registrarsi e partecipare alla seconda edizione del MOOC (Massive Open Online Course) “Agile Software Development”, proposto dal Politecnico di Zurigo (ETH) sulla piattaforma online edX.

La prima edizione ha avuto circa 15.000 studenti partecipanti ed ha ricevuto buone recensioni. La seconda edizione e’ stata interamente riveduta per quanto riguarda i quiz e l’esame finale.

Il docente, Bertrand Meyer, creatore del linguaggio di programmazione Eiffel e noto guru dell’informatica, non ha bisogno di presentazioni.

Io ho collaborato alla progettazione e all’implementazione del corso, ho creato i quiz e gli esami, e modererò il forum.

Il corso e’ in inglese ed e’ gratuito, previa registrazione sulla piattaforma edX. E’ possibile avere una certificazione dell’avvenuto superamento del corso ad un costo di 50 dollari.

Non ci sono prerequisiti particolari. Se la tematica e’ di interesse potrebbe essere una buona occasione per capire a che punto e’ oggi la formazione online.

Buon corso a tutti!

 

Venti caratteristiche osservabili di un insegnante efficace (Parte 2)

Continuo con gli elementi tipici che si possono osservare, secondo l’Università del Minnesota (USA) quando ci si trova di fronte ad un intervento didattico efficace. Mi sono preso la libertà di tradurre aggiungendo dei commenti miei (tutto quello che non è in neretto). In un post precedente ho presentato i primi dieci elementi, ecco ora gli altri dieci:

  1. Trae inferenze da esempi e modelli, ed usa analogie. Una volta presentati dei modelli e degli esempi applicativi, è utile dimostrare come inferire ulteriori fatti riguardo ai modelli o alle loro applicazioni utilizzando solamente la logica ed eventuali regole (di inferenza appunto) precedentemente fornite. Per aumentare la chiarezza di ciò che spieghiamo, l’occasionale utilizzo di analogie può essere certamente di aiuto, mentre con le metafore è meglio essere più prudenti, visto che per definizione la metafora è semanticamente più lontana dal termine originario.  Se questo sembra un po’ astratto, be’, lo è :), quindi proverò con un esempio: dovendo presentare il concetto di “classe” in un corso di programmazione orientato agli oggetti, si può parlare di classe come modello, codificato in un documento di testo. Si può poi parlare di una serie di oggetti creati applicando la definizione della classe così come appare nel documento di testo. Questi oggetti saranno di fatto aree di memoria di un elaboratore che i programmi potranno utilizzare per immagazzinare informazioni e fare (si spera) qualcosa di utile. Chiaro? Se non lo è, pensate a quando, da bambini, giocavamo al mare riempiendo di sabbia umida delle forme cave di plastica (stelle, animali, ecc.) e poi le utilizzavamo, ruotandole abilmente, per creare tante stelle e animali di sabbia. Ebbene, possiamo immaginare che le forme cave siano le classi e le copie di sabbia di una certa forma siano gli oggetti generati da quella classe.
  2. Mette gli studenti a proprio agio, e permette loro di parlare liberamente. Io aggiungerei che anche il docente deve essere a proprio agio, altrimenti diventa tutto più difficile. Mentre va da sè che l’atteggiamento e il linguaggio non verbale diventano importanti in questo contesto, anche cercare di non urtare la suscettibilità degli studenti costituisce un esercizio di sensibilità da parte del docente.
  3. Insegna in maniera appropriatamente veloce, fermandosi per verificare l’apprendimento. Nella mia esperienza è meglio, avendo un certo tempo a disposizione, essere sintetici e poi verificare l’apprendimento piuttosto che utilizzare lo stesso tempo per una spiegazione più prolissa.
  4. Comunica tenendo in considerazione il livello di tutti gli studenti nella classe. Difficile, ma possibile. Mi trovo spesso in questa situazione quando tengo corsi di programmazione senza prerequisiti particolari. C’e’ sempre chi ha precedenti esperienze che si potrebbe annoiare con un ritmo troppo lento, e chi parte da zero che si potrebbe perdere con un ritmo troppo rapido. Qui la soluzione più efficace che ho trovato è adottare un ritmo lento fornendo delle sfide ai più “esperti” (la cui esperienza rimane da verificare!) in modo da coinvolgerli, ad esempio, anche nella didattica e nell’aiutare i colleghi.
  5. Ha il senso dell’umorismo! Questo elemento dipende così tanto dalla persona e dalla sua sensibilità che risulta difficile esprimersi a riguardo. Un consiglio che mi sento di dare riguarda i corsi online, specie se fruiti da persone che appartengono a diverse culture. Rinunciateci: meglio mantenere uno stile neutro, sobrio, educato, ed efficiente.
  6.  Utilizza la comunicazione non-verbale, come la gestualità, il camminare, ed il  contatto visivo per sottolineare i suoi commenti. Questo è qualcosa che si può allenare, e costituisce una fonte inesauribile di informazioni. Uno spettacolo di un mimo può dare un’idea, anche se ognuno dovrebbe seguire il proprio istinto e la propria personalità.
  7. Si presenta in classe come se stesso. Caratterialmente questo aspetto è per me sempre stato facile, ma capisco che possa variare molto a seconda delle persone. Di certo non pensare troppo agli atteggiamenti da tenere in classe permette di concentrarsi meglio sulla didattica.
  8. Si focalizza sull’obiettivo didattico e non lascia che la classe sia fuorviata. Il docente dovrebbe sempre avere il controllo dell’intervento didattico, e quindi sapere ad esempio quando è opportuno limitare il tempo dedicato a interventi non pertinenti.
  9. Utilizza il feedback degli studenti e di altri soggetti per valutare e migliorare la didattica. E’ veramente importante chiedere del feedback, anche informale, per fare meglio la prossima volta. Nei corsi online, in particolare, grazie al grande numero di studenti che tipicamente partecipano, una attenta disamina di un forum e delle statistiche di fruizione di un corso (quanti studenti ci sono, quanti sono realmente attivi, quanti hanno risposto correttamente ad una certa domanda)  può indicare cosa funziona e cosa non funziona nella nostra didattica.
  10. Riflette sul proprio modo di insegnare per migliorarlo. Questo è un processo che non si può mai considerare concluso. Mi piace mettermi sempre in gioco, non considerarmi mai “arrivato”, osservare i tanti bravi docenti che ci sono in giro, e imparare da loro.

Venti caratteristiche osservabili di un insegnante efficace (Parte 1)

L’Università del Minnesota (USA) ha elencato venti elementi tipici che si possono osservare quando ci si trova di fronte ad un intervento didattico efficace. Mi sono preso la libertà di tradurre aggiungendo dei commenti miei (tutto quello che non è in neretto). Niente di nuovo, trascendentale o rivoluzionario, ma proprio per questo è bene ricordarsene quando si prepara una lezione o prima di entrare in aula:

    1. Inizia in orario ed in maniera organizzata. Sembra ovvio, ma nella mia esperienza potrebbero beneficiarne la maggior parte degli insegnanti che conosco! A volte è divertente prepararsi un piccolo siparietto di entrata per catturare l’attenzione, ad esempio con una battuta, una foto, o un breve filmato.
    2. Rispetta gli studenti e trasmette loro che tiene al fatto che imparino. Più difficile di quanto sembri a prima vista, ma da non sottovalutare. Nella mia esperienza gli studenti intuiranno la nostra passione e dedizione dal nostro atteggiamento, quindi non potremo nascondere facilmente questo aspetto.
    3. Comunica il significato e l’importanza delle informazioni trasmesse. Serve anche a noi docenti in sede di preparazione. Se non sappiamo spiegare perché una nozione è importante, non dovremmo parlarne affatto.
    4. Fornisce spiegazioni chiare, si guadagna l’attenzione ed il rispetto degli studenti, gestisce la classe in maniera efficace. A volte risulta veramente difficile fornire spiegazioni chiare per tutti, quindi bisogna cercare di trovare modi diversi di spiegare le stesse cose: non facile. Parte del guadagnarsi l’attenzione ed il rispetto viene dal punto 2, parte dalla serietà e quotidianità del nostro impegno, parte da aspetti imponderabili. Mi ricordo di quando insegnavo come supplente in un Liceo Classico. C’era un ragazzo che appena entravo in aula usciva. Dopo la lezione l’ho visto e ci ho chiacchierato un po’: ho scoperto che gli piaceva giocare a scacchi, allora abbiamo fatto una partita veloce, l’ho battuto e mi sono guadagnato, da allora in poi, la sua attenzione 🙂
    5. Adotta una metodologia che preveda la partecipazione attiva degli studenti. La lezione in cui il flusso di informazioni va solamente dall’insegnante ai discenti non funziona bene. Quindi interrompersi e fare domande di verifica, proporre esercizi, e osservare il livello di attenzione reagendo di conseguenza, sono tutte tecniche utili per mantenere il controllo sull’intervento didattico.
    6. Varia le proprie tecniche di insegnamento. Difficile, perché bisogna capire chi si ha davanti e trovare soluzioni concrete al volo. Un esempio potrebbe essere rispiegare un concetto (senza ripetere la stessa identica spiegazione) a qualcuno che non ha capito. Un esempio completamente differente si ha quando ci si deve adattare alla formazione a distanza, online o meno.
    7. Spiega in maniera chiara e precisa cosa si aspetta da un compito assegnato. Se potessi tornare indietro nel tempo controllerei ancora una volta tutti i compiti che ho assegnato: c’è sempre qualcosa che sfugge e che potrebbe generare fraintendimenti e interpretazioni errate!
    8. Fornisce feedback immediato e frequente agli studenti sulla loro prestazione. E’ incredibile quanto sia facile, per uno studente e anche per noi insegnanti, credere di aver capito, specie se si tende ad essere pigri! Mi sono fatto troppe volte ingannare da quel movimento sussultorio del capo dello studente che suggerisce un assenso e vedendo il quale mi sono sentito incoraggiato, come docente, a non verificare l’apprendimento. Soprattutto quando non si conosce bene lo studente, meglio verificare, ed eventualmente dare un feedback negativo e poi un incoraggiamento piuttosto che non dare feedback affatto.
    9. Loda le risposte degli studenti ed usa delle domande ulteriori per assicurarsi della comprensione degli argomenti trattati e per approfondirli. Come studente mi sono sentito molto incoraggiato dai docenti che prendevano in considerazione seriamente le mie risposte. In certi casi, con persone poco comunicative, una risposta qualsiasi ad una domanda  del docente potrebbe essere importante per stabilire un canale di comunicazione. Per quanto riguarda le domande degli studenti, mi è capitato spesso di sentire uno studente premettere alla sua domanda: “Forse è una domanda stupida…”. La risposta standard in questi casi dovrebbe essere sufficiente: “Le uniche domande stupide sono quelle non fatte!”
    10. Fornire esempi concreti, pratici, di vita vissuta. A seconda del grado di astrazione dell’argomento trattato, questo può essere più o meno semplice, ma l’efficacia del consiglio non si mette in discussione. Pensare a degli esempi potenzialmente efficaci o interessanti prima della lezione sarebbe l’ideale.

Nel prossimo post commenterò gli altri dieci elementi.