Tutti gli articoli di Federico

Perché dobbiamo insegnare a programmare ai bambini

[…] Nella nuova era dei microchip «questi ragazzi avranno l’opportunità di fare soldi». […] La prossima volta che vi capita di vedere un ragazzino di dieci anni indemoniato che impreca contro Mad Alien Targ, ricordate che non si sta solo divertendo, non sta solo ammazzando il tempo e buttando via soldi: sta imparando il linguaggio informatico. […]

L’invasione degli Space Invaders

Potrebbe suonare strano ma il mio avvicinamento al mondo della programmazione è avvenuto durante il Liceo Classico. L’indirizzo P. N. I (Piano Nazionale di Informatica) prevedeva, oltre alle materie di un classico “tradizionale”, le stesse ore di matematica e fisica di un liceo scientifico e, in quarta e quinta ginnasio, informatica. Il programma si concentrava fondamentalmente sull’apprendimento di Turbo Pascal.

Nonostante non sia mai stato una cima in matematica e abbia sempre odiato i test di logica, i Giochi di Archimede e cose simili (ricordo ancora con orgoglio i miei 18 punti quando, lasciando tutte le risposte in bianco, il punteggio minimo era 20), programmare era una cosa abbastanza naturale: con un paio di miei compagni c’era sempre la sfida a chi riusciva a completare i problemi più velocemente o con meno righe di codice.

All’inizio della prima liceo la maggior parte della classe era sollevata dal non dover più dover scrivere una riga di Turbo Pascal; dal mio punto di vista, invece, sentivo la necessità di approfondire l’argomento perché era divertente riuscire a insegnare a un computer a risolvere un problema. Se dal punto di vista dell’IT sperimentavo tutte le distribuzioni di Linux di quegli anni, con la programmazione mi orientavo più sullo sviluppo web avendo capito i limiti di Turbo Pascal ed essendo spaventato dal fatto che mia sorella, al primo anno di ingegneria informatica all’università, non riuscisse a venire a capo di Java.

Lo sviluppo web può sembrare semplice ma io l’ho ritenuto sempre affascinante, complesso e, al tempo stesso, completo: unire contenuti testuali, video, immagini, acquisire o richiedere dati in modo dinamico a un database, sviluppare un’interfaccia grafica intuitiva, la gestione degli errori causati dagli utenti con spiegazioni che fossero umano-comprensibili e, infine, nonostante il rispetto di tutti gli standard, doversi barcamenare per fare in modo che il sito funzionasse correttamente con tutti i browser presenti sul mercato (cosa che, negli ultimi anni, si è complicata ulteriormente dovendosi adattare a tutti i nuovi dispositivi con schermi di dimensioni differenti e interfacce di controllo touch screen).

La programmazione per il web è, come dicevo prima, una disciplina completa perché permette allo sviluppatore di scontrarsi con varie difficoltà appartenenti a categorie differenti: back-end, front-end, database, user interface, compatibilità multipiattaforma, ecc… che non possono fare altro che renderti un programmatore migliore, attento tanto alla funzionalità del programma quanto al fatto che sia a prova di idiota.

Se Martin Amis, autore del libro sopracitato, aveva capito le potenzialità in termini economici e occupazionali legate al mondo dell’informatica già nel 1982, è chiaro che, a più di vent’anni di distanza, nel nostro paese stiamo rimanendo indietro ancora una volta rispetto al resto del mondo; così come è avvenuto per l’insegnamento delle lingue straniere, sarebbe importante introdurre lo studio delle basi di programmazione fin dalla scuola primaria. Ovviamente questa cosa avrebbe senso se indirizzata subito a risvolti pratici: creiamo un gioco insieme, scriviamo un programma per risolvere problemi quotidiani; e non fermandosi solo alla teoria delle condizioni if, then, else o ai loop.

Da quanto mi risulta, l’unica realtà in Italia che si sta muovendo in questo senso è, ovviamente, privata: Digital Accademia, una società legata all’incubatore H-Farm, che sviluppa progetti di formazione e promuove la cultura digitale. In particolare il loro corso denominato «K-12» (sigla che, negli Stati Uniti, identifica la scuola primaria e secondaria), il cui scopo è quello di sviluppare una conoscenza degli strumenti digitali e una consapevolezza nel loro utilizzo, è rivolto a bambini e ragazzi dai 3 anni in su.

Nel resto del mondo ci sono diversi progetti in ballo ma, attualmente, il paese che sta investendo maggiormente in questa direzione è l’Inghilterra che, in seguito alla riforma della scuola, ha inserito nel National Curriculum, l’insegnamento della programmazione ai bambini dai 5 ai 16 anni. A partire dal prossimo settembre, i bambini e i teenager di sua maestà avranno un vantaggio rispetto ai loro coetanei in giro per il mondo. Quanto ci impiegheremo per metterci alla pari?

Da dove cominciare?

Ecco qualche spunto (purtroppo tutti in inglese) per chi avesse voglia di lanciarsi in questo mondo:

http://www.code.org/ – Se avete un’ora libera, cominciate da qui.
http://www.codecademy.com – Una vera e propria scuola on-line e gratuita.
http://www.programmr.com – Become a programming guru.
http://learncodethehardway.org – Learn Code the Hard Way.
https://www.codeschool.com – Learn by doing.

Il falso senso di sicurezza che ci danno gli asterischi

Quanto pensate sia sicura la vostra password? Secondo quanto riportato da Mark Burnett, esperto di sicurezza informatica e autore di alcuni libri sul tema come Perfect Password, il 99,8% delle persone utilizza una parola chiave contenuta nella sua lista delle 10’000 password più comuni.

In base ai dati da lui raccolti, il 4,7% della popolazione utilizza come parola chiave «password», l’8,5% utilizza «password» o «123456», il 9,8% opta per «password», «123456» o «12345678».

Pur non occupandomi direttamente di sicurezza informatica, mi imbatto quotidianamente in persone che mi guardano incuriosite quando comincio a digitare la password per accedere al mio computer e benché questa sia una questione molto importante da considerare e su cui sarebbe necessario fare informazione, non se ne parla tanto quanto si dovrebbe come accade, ad esempio, per la tutela della privacy.

Il problema: password, sicurezza e social network

Partiamo dal presupposto che una password efficace sia costituita da lettere maiuscole e minuscole, numeri e simboli, sia di una lunghezza superiore agli 8 caratteri e non sia una parola comune o una semplice sequenza come qwertyuiop abcdefgh. Ho escluso per principio che la parola che avete scelto per proteggere il vostro computer o i vostri dati sensibili contenga il vostro nome, cognome, soprannome o la vostra data di nascita; in caso contrario cambiatela subito e poi tornate per continuare a leggere. Se siete in dubbio, provate su How secure is my password?

Se queste semplici precauzioni vi fanno dormire sonni tranquilli, forse sarebbe il caso di riflettere ancora un istante sulla reale sicurezza dei vostri dati.

Esempio 1: il recupero della password

Ogni sito offre la possibilità di recuperare la nostra password quando non riusciamo più ad accedere al nostro account: una delle modalità più comuni per procedere al recupero è quella di rispondere a tre domande “personali” che avevamo selezionato al momento dell’iscrizione. Se la persona che vuole rubare i vostri dati è tra gli amici di Facebook, vi segue su Twitter e Instagram (o altre piattaforme), quanto tempo pensate ci metta per recuperare il nome del vostro cane, quello di vostra madre da nubile o della scuola elementare che avete frequentato? Questa tecnica di hacking, chiamata Social Engineering, è una delle più efficaci per ottenere informazioni utili per accedere ai vostri dati. Se volete approfondire l’argomento, consiglio la lettura dei libri di Kevin Mitnick.

Esempio 2: l’effetto domino dei social login

Avete presente quei siti internet che vi permettono di registrarvi utilizzando il vostro account di Facebook, Twitter o Google Plus? Sono indubbiamente una soluzione comoda che ci evita di inserire gli stessi dati centinaia di volte o di restare in attesa di un’e-mail di conferma ma potrebbero renderci la vita molto difficile nel momento in cui dovessero essere compromessi. La stessa cosa si applica, ovviamente, anche all’indirizzo e-mail che utilizziamo per iscriverci ovunque: se quello dovesse essere compromesso tutti gli account ad esso collegati sarebbero automaticamente a rischio.

Esempio 3: a chi affidiamo i nostri dati?

A differenza dei primi due esempi, dove la colpa è da attribuirsi esclusivamente all’utente finale, quest’ultimo si basa su una semplice domanda: chi ci assicura che le persone o i servizi a cui stiamo affidando i nostri dati seguano effettivamente delle procedure di sicurezza ad hoc? Nell’ultimo anno sui quotidiani sono comprarsi diversi articoli il cui titolo recitava qualcosa tipo “Rubate migliaia di password dal sito X“, “Rubati centinaia di numeri di carte di credito“.

Soluzioni

Come anticipato, una password lunga e complessa potrebbe essere una possibile soluzione ma dovete essere sicuri di avere una buona memoria e di possedere una certa calma quando, dopo aver perso un numero indefinito di secondi per digitare la password sulla tastiera minuscola del vostro smartphone, non vi sarà garantito l’accesso per un banale errore di digitazione.

Le soluzioni alternative ed efficaci ci sono: Apple, ad esempio, sta muovendo i primi passi in questo senso attraverso l’implementazione di chiavi di accesso non più legate a password alfanumeriche ma al riconoscimento di caratteristiche biometriche come, ad esempio, impronte digitali (quello che loro chiamano Touch ID).

Un’altra soluzione più semplice e alla portata di tutti è l’attivazione della cosiddetta 2-Step Verification: imitando il sistema di login adottato dalle banche, per accedere al nostro account saranno necessari la password e un numero identificativo associato a un dispositivo (normalmente uno smartphone) generato automaticamente a intervalli di tempo programmati. Se avete un account Google, potete leggere come attivarlo e utilizzarlo a questo indirizzo.

Password Assistant OSX Mavericks

L’ultima possibilità è quella di installare sul nostro computer e sui nostri dispositivi mobili applicazioni come 1Password (o, per utenti Mac, utilizzare l’applicazione preinstallata Accesso Portachiavi) dove salvare tutti i dati di accesso dei vostri account che saranno protetti da un’unica password.

Approfondimenti

Se sono riuscito a stuzzicare la vostra curiosità, vi consiglio di leggere How i Lost my $50.000 Twitter Username di Naoki Hiroshima (sviluppatore di app tra cui Echofon) e How Apple and Amazon Security Flaws Led to My Epic Hacking di Mat Honan (giornalista di Wired USA)

Will online courses take over universities?

I signed up on Coursera exactly one year ago. Even though I never enjoyed watching video tutorials on YouTube and following on-line courses on platforms like iTunes U, I was curious about attending an on-line class. I was eager to start: during the first week I signed up to a lot of different courses. At that time I was quite busy with my job so I knew that I couldn’t watch all the video lectures and do all the assignments but my main goal was to understand how the whole system worked and find out if I could use it to improve my teaching skills.

The only course that I actually completed at the beginning was “Introduction to Digital Sound Design” by professor Steve Emerett from Emory University. My background helped me a lot so it hasn’t been difficult to get a distinction on my statement of accomplishment at the end of the course (on Coursera you can get a Verified Certificate if you join the Signature Track which is available for some courses starting at $49.00).

After that first experiment I didn’t attend other courses but I kept myself in the loop and I enjoyed following the growing discussion about on-line education.

Four on the floor

At the end of the summer I felt that I needed to learn something new so I started browsing Coursera again and decided to commit myself to complete four different courses.

The first was Berklee College of Music’s “Introduction to Music Production“: as you probably guessed, this subject isn’t new for me but I was excited to attend a course from one of the world’s most renowned music school.

California Institute of Arts’ “Introduction to Programming for Musicians and Digital Artists” has been my second choice. Although I’ve been following Ge Wang’s work for a long time now, I never had the chance to learn ChucK (the programming language that he developed). When I saw this course I thought that this was the chance to fill this gap.

The third course that I attended has been: “Digital Signal Processing” from the École Polytechnique Fédérale de Lausanne. To be honest I quit after the first week. I was really looking forward to learn something but when I started I already knew that I couldn’t cope with all the math’s problems (math has always been my weak point).

The fourth and last course: “An Introduction to Marketing” from University of Pennsylvania. I know that this course is completely unrelated with the others but I also worked as marketing manager so I thought that this could be very helpful.

The pros and the cons

Attending an on-line course has a lot of pros: you can study what you want whenever you want (actually this is also one of the cons: do you know the term «procrastination»?). You can always access the video lectures and even play them at double speed if you haven’t enough time (I did this a lot!). One thing that I never used were the discussion boards, even though many students found them extremely helpful. I definitely learned A LOT of new things and I think I’ve improved my teaching skills by watching those lectures.

Obviously there are some cons too… from a teacher perspective, you can’t be a hundred percent sure that all the assignment are made by the students. I actually caught a lot of my peers copy and paste content from wikipedia and other websites. From a learner point of view it has been great to be part of these classes with thousands of students from around the globe but I really missed the “human factor”: discussing an assignment or a lecture behind a monitor is not the same as doing it in front of a cup of coffee/tea. I also got angry  once because I thought that my assignment weren’t reviewed following the course’s guidelines (and I’m convinced that I’ve been downgraded for that reason).

If you want to join one an online course, you have to be really commit to complete it because even if no one is looking at what you do, watching the video lectures and doing the assignments take the same amount of time that doing those things in a class (and, probably, you are doing an on-line course because you don’t have time to do it).

Conclusions

I don’t think that online courses will take over (and kill) universities. The institutions that will embrace these platforms and develop new content for their curricula will take a lot of advantages from it. My guess is that, in the future, students will prefer an enhanced learning experience instead of “traditional” lectures. Many new platforms were born in the last months and the number of courses is growing constantly. This is the right time to sign up on Coursera, EdX, FutureLearn, etc. and try to learn something new.