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!

Dieta e cervello: cinque cose che la ricerca ha stabilito negli ultimi cinque anni


Negli ultimi cinque anni (2013-2018) la scienza dell’alimentazione e la genetica sono giunte a cinque conclusioni importanti che ritengo valga la pena condividere.

Le notizie che seguono sono prese dal blog del Dr. David Perlmutter [1], un neurologo americano molto noto per il suo lavoro di divulgazione su tematiche riguardanti l’alimentazione e le sue implicazioni per il sistema nervoso centrale.

a. Gli zuccheri sono nocivi alla salute. Questo lo sapevamo già, direte voi, ma a livello ufficiale solo ora le linee guida 2015-2010 per la dieta degli americani [2] invocano una drastica riduzione degli zuccheri (e del sale), a vantaggio dei grassi “buoni”, cioè che non siano saturi e non siano insaturi trans.

b. Finora una dieta priva di glutine era ufficialmente consigliata solamente a persone che presentassero una celiachia conclamata. E’ stata ora riconosciuta ufficialmente l’intolleranza al glutine nei non-celiaci [3], che mostra come alcune persone non celiache possono presentare una varietà di sintomi, anche non legati all’apparato digerente, come artrite, stordimento, depressione, mal di testa, irritabilità, dolori muscolari, neuropatie, ansietà, anemia, e difficoltà nella coordinazione. Gli scenari in cui alcuni fra i sintomi sopra elencati si risolvono con una dieta priva di glutine sembra siano piuttosto comuni.
A rendere le cose ancora più interessanti, è stato dimostrato che la permeabilità della mucosa intestinale, uno dei principali meccanismi che provoca infiammazione in tutto il corpo, è rilevabile in tutte le persone che consumano glutine.

c. I neuroni del cervello possono essere rigenerati, a differenza di quanto si pensasse. Ciò può avvenire non solo con l’esercizio fisico, ma anche con una dieta chetogenica appropriata, che prevede una drastica riduzione dei carboidrati a vantaggio dei grassi “buoni”, che vengono usati come combustibile alternativo e maggiormente efficiente. Bisogna dire che la dieta chetogenica è molto dibattuta al momento, e se stanno ancora valutando pro e contro sia per quanto riguarda la perdita di peso che l’utilizzo nella terapia di patologie importanti come il cancro e le malattie neurodegenerative.

d. Il nostro microbioma, cioè l’insieme dei batteri con cui viviamo in simbiosi e che si trovano nel nostro apparato digerente, influenza significativamente il nostro stato di salute. Quindi il nostro stile di vita, che a sua volta influenza il microbiota, influenza anch’esso significativamente il nostro stato di salute. Per stile di vita intendiamo le scelte alimentari, l’esercizio fisico (o l’assenza dello stesso), i ritmi sonno-veglia, i livelli di stress, i farmaci assunti, per fare alcuni esempi.

e. L’idea che noi siamo ciò che è scritto nel nostro DNA sta definitivamente tramontando. Ora si sa che attimo dopo attimo il nostro stile di vita influenza l’espressione dei nostri geni. Questa scoperta, che ha dato vita ad una intera branca della medicina, l’epigenetica, ha delle ripercussioni enormi anche a livello psicologico, perché seppur entro certi limiti ci rende maggiormente padroni del nostro destino.

Se dopo aver letto questo articolo avrete solo la metà dell’entusiasmo e dell’ottimismo che ho io, dovrebbe essere già abbastanza per influenzare positivamente l’espressione dei vostri geni!

[1] https://www.drperlmutter.com/five-things-since-grain-brain/
[2] https://health.gov/dietaryguidelines/2015/guidelines/
[3] https://www.drperlmutter.com/yes-gluten-sensitivity-is-very-real/

Il gioco del Go e l’inizio di una nuova era per l’Intelligenza Artificiale

Il Go è un gioco millenario, molto diffuso in Cina, dove veniva considerato una forma d’arte insieme alla pittura, alla musica e alla calligrafia. E’ molto popolare anche in Giappone e Corea, e ad oggi viene praticato da più di 40 milioni di persone in tutto il mondo.

Si gioca con una tavola su cui è tracciata una scacchiera con 19×19 caselle tutte uguali. Le regole sono poche e molto semplici, ma lo sviluppo del gioco è così complesso che le possibili configurazioni di pietre nel corso di una partita sono circa 10170, superando di molto il numero stimato di atomi nell’universo, 1080. Questo lo rende notevolmente più complesso degli scacchi, di cui parleremo in un altro articolo.

Per chi non conoscesse il gioco, il Go prevede due giocatori che si alternano nel collocare pietre (nere per un giocatore, bianche per l’altro) una alla volta sulle intersezioni della scacchiera, cercando di formare territori che racchiudono pietre avversarie al fine di eliminarle dal gioco. Alla fine, quando i giocatori non desiderano collocare ulteriori pietre, la partita finisce e avviene il conteggio delle pietre rimaste sulla scacchiera per stabilire il vincitore.

Vista la complessità del gioco, il suo fascino, dal punto di vista dell’intelligenza artificiale, è costituito dal fatto che un approccio che utilizzi la “forza bruta”, cioè che tenti di calcolare tutte le varianti possibili a partire da una certa mossa, è destinato a fallire, e questo è quanto puntualmente accaduto con i primi programmi che giocavano come dei principianti. I giocatori umani di Go che abbiano un po’ di esperienza utilizzano invece l’intuito nella scelta di una determinata mossa e non sono pienamente coscienti dei processi mentali che li hanno portati a tale scelta. E’ stato in realtà dimostrato che in questo caso “l’intuito” ha a che vedere con il riconoscimento di schemi visivi che si ripetono e dopo un po’ risultano familiari.

Quello che gli scienziati che lavorano alla DeepMind, una azienda britannica di ricerca sulle neuroscienze fondata nel 2010 e successivamente rilevata da Google nel 2014, hanno pensato, è di affrontare il problema di creare un programma in grado di giocare a Go utilizzando due reti neurali artificiali che collaborano tra di loro.

Possiamo semplicisticamente definire una rete neurale artificiale come una rappresentazione software estremamente semplificata di un insieme di neuroni del nostro cervello. In pratica una rete neurale è in grado di modificare la sua configurazione a seconda degli stimoli ricevuti dall’esterno, innescando in questo modo un processo di apprendimento.

Delle due reti neurali summenzionate, la prima è stata utilizzata per studiare centomila partite giocate da forti giocatori umani, cercando di individuare degli schemi, o pattern, di risposta a determinate configurazioni di pietre, o più precisamente le distribuzioni di probabilità delle varie mosse in una determinata posizione. La seconda rete neurale è stata utilizzata per assegnare dei numeri alle diverse mosse possibili in una certa posizione, permettendone una valutazione.

Utilizzando queste due reti neurali la DeepMind ha realizzato il programma AlphaGo, facendogli giocare trenta milioni di partite contro versioni precedenti di se stesso e sfruttando così un processo di autoapprendimento che lo ha portato a battere 4-1 il pluricampione del mondo, il coreano Lee Sedol, nel marzo 2016.

E non è finita qui: ad ottobre 2017 è stata presentata la più recente versione del programma, chiamata AlphaGo Zero, che senza neanche studiare le partite dei giocatori umani e iniziando a giocare in maniera completamente casuale ha sconfitto AlphaGo 100-0 solo giocando contro precedenti versioni di se stesso…

Perché nel titolo ho parlato di nuova era per l’intelligenza artificiale?

Il primo aspetto importante del lavoro degli scienziati alla DeepMind è l’implementazione di un efficace meccanismo di autoapprendimento, cioè il programma riesce a migliorarsi in maniera misurabile imparando dai propri errori, non dipendendo più da regole fisse codificate dai suoi programmatori.

Il secondo aspetto è la generalità dell’approccio, cioè lo stesso programma, se fornito di regole diverse come input, può risolvere problemi completamente differenti usando lo stesso meccanismo di autoapprendimento. Questo e’ fondamentalmente differente da quanto visto fino ad ora in questo ambito, dove ogni soluzione era fortemente dipendente dal problema che doveva tentare di risolvere.

I due aspetti descritti sono fondamentali per sviluppare applicazioni in ambiti completamente diversi, come il risparmio energetico, la sintesi vocale, e la medicina. Applicando di fatto  lo stesso approccio, ma con regole diverse, i centri di elaborazione dati di Google hanno risparmiato il 15% dell’energia elettrica che avrebbero consumato altrimenti, e WaveNet ha fatto compiere un balzo di qualità all’assistente vocale di Google.

Per quanto riguarda la medicina, la DeepMind sta partecipando a vari progetti, alcuni dei quali si focalizzano sull’interpretazione di immagini per aiutare la diagnosi di tumori al collo, al cervello, e al seno, e aiutano a prevedere la degenerazione maculare della retina.

Altri progetti aiuteranno a capire come le proteine si ripiegano su se stesse, requisito fondamentale per poter creare dei farmaci che contrastino l’accumulo di proteine “mal ripiegate”, come avviene in malattie neurodegenerative quali l’Alzheimer (proteina tau) e il Parkinson (alfa-sinucleina).

Infine, e questo avremmo dovuto prevederlo, la DeepMind  sta cercando di ricreare una versione software dell’ippocampo, quella parte del nostro cervello che ha a che fare con la memoria a breve termine e l’orientazione nello spazio.

Ce n’è abbastanza per giustificare il titolo dell’articolo, direi!

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!

 

Qui si inizia

Fino ad oggi avevo pensato che non avrei mai avuto un blog, perché non avevo molto da dire.

Mi potrei essere sbagliato, anzi mi sono sicuramente sbagliato, quanto meno sul fatto che non avrei mai avuto un blog.

Nei prossimi mesi vedremo se mi sbagliavo anche sul fatto che non avrei avuto niente da dire.