martedì 17 aprile 2018

IBM Cloud Platform come laboratorio per scuole ed università di informatica

Oggi voglio mettere a punto delle riflessioni sul tema della formazione scolastica ed universitaria ed indicare una possibile soluzione al problema delle esercitazioni di laboratorio e a quello della amplificazione degli skill del futuro informatico.

Le università (e le scuole) che insegnano le discipline dell'informatica, hanno sempre l'esigenza di utilizzare strumenti e laboratori affinché gli studenti possano esercitarsi e apprendere al meglio le varie materie.
Una volta si ottemperava a questa esigenza recandosi (e spesso facendo la fila) nei laboratori appositamente approntati, ora sempre di più le esercitazioni si effettuano su notebook personali o comunque su sistemi di informatica individuale opportunamente connessi all'IT dell'università oppure in autonomia.

Stando così le cose sembrerebbe che la situazione sia sufficientemente stabilizzata e adeguata alle esigenze degli studenti.

Questo approccio però implica l'installazione di strumenti sulle singole macchine con vari problemi occasionali e perdita di tempo, non sempre incoraggia o supporta il lavoro di team e sicuramente offre un'esperienza di apprendimento distante dalla realtà tecnologica che sarà quella da utilizzare nel mondo industriale e lavorativo.

La mia idea è quella di supportare i vari esami e la varie materie che si vanno studiando tramite l'utilizzo della piattaforma IBM Cloud.

Vediamo quali materie ed esami possono trarre supporto e facilitazione dall'utilizzo della nostra piattaforma.

1) Materie di Programmazione

tutti gli esami che trattano il tema della programmazione a qualsiasi livello trovano in IBM Cloud un mezzo fantastico di lavoro.
Sono supportati i vari linguaggi presenti nel catalogo (Java, Go, NodeJS, Python, Ruby, Asp.net ecc ecc)
Troviamo qui la maggior parte dei runtimes:
https://console.bluemix.net/catalog/?category=cf-apps

Questa lista è espandibile con qualsiasi linguaggio si voglia, mediante la costruzione di un BuildPack.
(per esempio Clojure per gli amanti del LISP e della programmazione funzionale) 

Inoltre sono disponibili NodeRED, Spark, R, SQL ecc in altri servizi del catalogo.
In questo modo si possono realizzare sistemi di front-end e back-end di qualsiasi tipo.

2) Materie inerenti Sistemi operativi ed architetture software

Come sappiamo IBM Cloud offre alcune modalità di esecuzione del software:
  • Macchine virtuali
  • Containers
  • Runtimes CloudFoundry
  • Function serverless
con queste modalità si possono insegnare nel migliore dei modi le architetture software che sono richieste dalle aziende per la realizzazione di applicazioni in cloud oppure on premise, seguendo la tecnica dei microservizi. Questa è un'altra buona cosa da imparare per trovare subito lavoro!! :)

Allo stesso modo, la possibilità di apprendere tutti i segreti dei container Docker e delle inevitabili esigenze di orchestrazione con Kubernetes fanno di IBM Cloud lo strumento ideale di esercitazione e di reperimento di informazioni e tutorial.
Inoltre strumenti come il Secure Gateway sono molto utili per spiegare problemi e soluzioni di integrazione tra sistemi Cloud ed onPremise con tecniche di tunneling e VPN.
Anche il tema della API economy è affrontabile serenamente tramite l'utilizzo di API Connect per comprendere come creare e gestire le API per un utilizzo reale.

3) Materie di ingegneria del software
La possibilità di utilizzare con un click di mouse un'intera Toolchain (includente per esempio un Source Control Management, un defect tracking e delle procedure di build e deploy personalizzabili) per ciascuna applicazione che si stia costruendo, offre agli studenti ed al docente una potenzialità ed una amplificazione delle conoscenze trattate durante ai corsi davvero eccellente.
Essendo il codice sorgente depositato nel repository in cloud, sarà possibile impostare qualsiasi lavoro di team il docente o gli studenti riterranno utile, con studenti dello steso corso ma anche di università remote a tutto vantaggio della formazione della mentalità di team, che è l'unica possibile per chi fa software in un ambito industriale.

A questo riguardo chi fosse interessato potrà richiedermi delle informazioni relative ad un esperimento di didattica distribuita che abbiamo realizzato intorno al 2010 con l'università di Napoli Federico II con il  progetto ETC (Enforcing Team Collaboration with IBM Rational). Producemmo alcuni articoli per conferenze italiane ed internazionali, per esempio ISBN-978889043881.
Otto anni fa non esisteva Bluemix o IBM Cloud ma già il problema di dotare gli studenti di strumenti di cooperazione per il migliore apprendimento dell'informatica era molto sentito. Ora con IBM Cloud il gioco è alla portata di tutti, per tutte le università del mondo!

4) Materie inerenti l'Intelligenza artificiale applicata e Cognitive

Non so se esistano ovunque queste tipologie di esami (... sono assolutamente necessari!!)... però con IBM Cloud è possibile aggiungere alle proprie applicazioni tutta una serie di funzionalità intelligenti:
  • una chat robotica istruita su un dominio di conoscenza, 
  • funzioni di comprensione e discernimento di immagini
  • trattamento di traduzioni in linguaggio naturale
  • trascrizione vocale da varie lingue ed il suo complementare
  • comprensione di testi scritti in linguaggio naturale,
  • sentiment analysis
  • rilevamento dell'umore o dei valori emozionali presenti in un testo
  • Machine learning & Deep learning
 e molti altri.

La maggior parte di questi approcci è programmato con una tecnologia molto differente dalla programmazione usuale, quindi sono necessari skill differenti, come l'istruttore di chat, l'ideatore di reti neurali o l'annotatore di documenti, per esempio

Molte di queste funzionalità sono raggiungibili tramite questa pagina:

https://console.bluemix.net/catalog/?category=watson

La conoscenza anche non troppo approfondita di queste tecnologie, dà all'informatico una incredibile marcia in più per competere nel mercato del lavoro e per ideare nuove applicazioni

5) Materie sull'Internet of Things
IBM Cloud offre una dotazione completa di strumenti per la gestione di dati provenienti da sensori tramite la IoT Platform e la possibilità di realizzare in modo estremamente facilitato anche sistemi di controllo complessi con l'utilizzo di NodeRED.


 6) Statistica e Ricerca Operativa applicate
I vari strumenti di Analytics ed intelligenza artificiale applicata ai dati (tramite Watson Studio) offrono un ambiente ideale per sperimentare algoritmi statistici e di Ricerca Operativa per la soluzione di problemi complessi. Finalmente il metodo del Simplesso potrà essere utilizzato in pochi secondi per risolvere problemi di ottimizzazione reali con centinaia di migliaia di vincoli senza dover installare particolari software.
Sono supportati i notebook Jupiter e quindi i linguaggi R, Spark, Python ed altri.

7) Materie inerenti le BASI DATI e la Data Science
Il catalogo relativo al trattamento della persistenza del dato è un vera apoteosi, con DB relazionali SQL e non SQL, sono presenti vari approcci e possibilità di utilizzo. Il Cloud Object Storage inoltre rappresenta una sorta di File system in cloud con modalità di memorizzazione sicura al top delle prestazioni.
https://console.bluemix.net/catalog/?category=data



Watson Studio è lo strumento dove formare ed approfondire tutti gli skill del Data Scientist,  Con esso la scrittura ed esecuzione di Notebook è estremamente facilitata, con la possibilità di utilizzare  vari linguaggi tra cui SQL.
Con esso è anche possibile afferire ad una serie infinita di data-set pubblici, eccezionali per qualsiasi tipo di esercitazione.

8) Materie relative alla SICUREZZA
Servizi di Single Sign On, Secure Gateway, AppID, IoT Platform ecc, offrono molti spunti operativi per gli esami che trattano la sicurezza di applicazioni in cloud o di architetture ibride.

Potrei continuare citando la disponibilità della BlockChain, di servizi per Mobile e altre materie, tra cui tra poco il Quantistic computing.

Ovviamente IBM Cloud è costruito per la realizzazione in produzione di sistemi software industriali di qualsivoglia complessità e proprio per la sua natura è ideale per l'utilizzo nelle università per amplificare e facilitare l'apprendimento delle varie materie, con una impronta rivolta verso il business e verso l'industria.

Ricordo che IBM Cloud Platform è disponibile per la didattica universitaria (a docenti e studenti) in modo completamente gratuito, tramite l'Academic Initiative di IBM.