SPERIMENTAZIONI SULLA BLOCKCHAIN TECHNOLOGY
Nel 2009, uno sviluppatore (o un gruppo di sviluppatori) noto con lo pseudonimo di Satoshi Nakamoto ha rilasciato un software open source che implementa un protocollo peer-to-peer per la circolazione di un token digitale, chiamato Bitcoin. La crescente popolarità di Bitcoin e di sistemi decentralizzati analoghi ha richiamato l’attenzione sulla novità tecnologica che ne costituisce il fondamento, e che è comunemente nota con il nome di “blockchain”.
Il Dipartimento Informatica della Banca d’Italia è da anni impegnato nello studio della tecnologia blockchain e porta avanti alcune sperimentazioni su questo tema. Il tirocinante avrà la possibilità di partecipare alle sperimentazioni e apportare un contributo in uno a scelta tra i seguenti ambiti, sulla base del proprio background formativo, delle proprie aspirazioni e inclinazioni:
Data insight & visualization della blockchain di Bitcoin. Il registro della blockchain è immutabile, pubblico e non cifrato. Esso costituisce pertanto un patrimonio informativo da cui è possibile estrarre grandezze di natura economica (ad es., volume delle transazioni, commissione media, ecc.), o relative alla rete sociale che emerge dagli scambi di valuta virtuale. Il tirocinante avrà la possibilità di effettuare analisi e acquisire competenze su tecnologie per l’analisi dei big data e/o contribuire allo sviluppo di una dashboard ad-hoc per il monitoraggio delle principali grandezze legate al fenomeno.
Data ingestion & processing della blockchain di Bitcoin. Il numero sempre crescente di transazioni storicizzate rende l’analisi della blockchain e dei messaggi scambiati all’interno della rete P2P di Bitcoin un problema sfidante anche da un punto di vista tecnologico, in considerazione dell’elevata mole di dati generata. Il tirocinante avrà la possibilità di approfondire tecnologie e paradigmi in ambito Big Data mediante l’adozione di tecniche di calcolo parallelo distribuito batch e real-time operanti su una infrastruttura di Cloud Computing pubblico, acquisendo la conoscenza dei principali framework di riferimento in questo contesto (Spark, Spark Streaming, GraphX, HDFS, Kafka), facendo uso di database NoSQL e dei linguaggi di programmazione Java e Scala.
Micro/instant payments in blockchain. Da circa due anni sono in fase di sviluppo dei protocolli per l’implementazione in tecnologia blockchain di micro-pagamenti istantanei, cioè pagamenti di importo molto piccolo (ordine dei centesimi di euro) che vengono regolati (cioè confermati) nel giro di pochi secondi. Durante lo stage, il tirocinante condurrà uno studio di protocolli esistenti e procederà a utilizzare, in via sperimentale, le principali implementazioni open source disponibili su Internet.
Competenze acquisite al termine del tirocinio:
- padronanza dei principi di funzionamento della blockchain;
- conoscenza delle principali problematiche legate alla tecnologia blockchain e alle principali tecniche proposte per affrontarle.
Requisiti richiesti (oltre a quelli già specificati):
- laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica, Matematica pura e applicata, Fisica.
Competenze richieste:
una o più delle seguenti:
- predisposizione allo sviluppo e fluidità con almeno un linguaggio di programmazione fra Java, Scala, C#, Python;
- conoscenza delle principali primitive crittografiche e relativi protocolli.
È preferibile che il candidato abbia familiarità con il sistema operativo Linux.
SISTEMA DI ROLE-MINING CON INTERFACCIA WEB
Le politiche di controllo degli accessi alle risorse aziendali digitali (sistemi, software, dati, documenti, reti, …) costituiscono un elemento centrale per la garanzia del corretto utilizzo delle stesse. Tali politiche permettono la gestione dei permessi di accesso alle risorse per gli utenti presupponendo che l’identità digitale di questi ultimi sia stata precedentemente verificata. Dati i limiti mostrati dall’approccio diretto di assegnazione/rimozione di (singoli) permessi a (singoli) utenti, è in genere adottato un approccio alternativo basato su ruoli (Role-Based Access Control, RBAC) attraverso cui i permessi sono assegnati agli utenti per mezzo dei ruoli che essi ricoprono nell’azienda. Questo approccio offre vantaggi in termini di scalabilità, facilità di revisione delle assegnazioni e contenimento degli utilizzi impropri delle risorse.
Nel contesto di una sperimentazione di recente avviata (che ha sviluppato algoritmi di Role-Mining a partire da quelli proposti in letteratura per creare ruoli da zero, per incorporare revisioni in ruoli già in essere e per permettere agli addetti di amministrare tramite una semplice interfaccia web l’evoluzione dei ruoli stessi), il tirocinante avrà la possibilità di analizzare i principali algoritmi di Role-Mining, quelli presentati in letteratura e quelli attualmente in fase di sperimentazione. Inoltre, il tirocinante contribuirà in team alla progettazione e implementazione dei servizi applicativi che espongono le funzionalità di Role-Mining e dell’interfaccia grafica web attraverso cui i suddetti servizi saranno resi fruibili.
Competenze acquisite al termine del tirocinio:
una o più delle seguenti:
- progettazione e sviluppo di applicazioni multi-layer e web;
- modellazione architetturale di soluzioni software/infrastrutturali;
- capacità di utilizzo della tecnologia REST/Web Service;
- capacità di analisi dei processi autorizzativi e delle politiche di controllo degli accessi alle risorse.
Requisiti richiesti (oltre a quelli già specificati):
- laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica, Matematica pura e applicata, Fisica.
Competenze richieste:
- predisposizione allo sviluppo e fluidità con almeno un linguaggio di programmazione.
SVILUPPO DI SISTEMI DI REASONING AUTOMATICO PER BIG DATA E KNOWLEDGE GRAPHS
Sempre più aziende moderne e “Internet giants” (ad es., Facebook, Amazon, Google) desiderano modellare e mantenere la conoscenza sotto forma di corporate knowledge graphs e gestirla attraverso knowledge graph management systems (KGMS), sistemi in grado di rispondere a interrogazioni e svolgere ragionamenti complessi in modo automatico. Allo stesso tempo, un KGMS deve garantire alte prestazioni e scalabilità in ambito Big Data, con una complessità computazionale accettabile, ed essere in grado di interfacciarsi con una molteplicità di sistemi: RDBMS e NoSQL stores aziendali, package di machine learning e analytics, sorgenti web.
La Divisione Ricerca sulle Tecnologie Avanzate del Dipartimento Informatica della Banca d’Italia è attiva in questo ambito e contribuisce allo sviluppo di un importante KGMS, in stretto contatto con prestigiose università internazionali e aziende di riferimento nel settore.
Il tirocinio proposto ha come obiettivo lo sviluppo di un modulo di reasoning probabilistico per un KGMS. In particolare, lo stage avrà come oggetto lo studio e l’applicazione di tecnologie e metodologie di machine learning e inferenza logica su knowledge graphs in ambito Big Data.
Il tirocinio sarà collocato nell’ambito di un progetto aziendale strutturato; il lavoro sarà svolto in team secondo pratiche agili e sotto la costante guida di ricercatori-tutor della Banca d’Italia.
Il tirocinante svilupperà soluzioni in Java e utilizzerà i più comuni DBMS relazionali e NoSQL stores, Spark MLib, GraphX, Spark Streaming.
Competenze acquisite al termine del tirocinio:
- utilizzo e sviluppo di tecnologie di reasoning automatico per Big Data;
- utilizzo e sviluppo di modelli grafici probabilistici;
- progettazione e sviluppo di sistemi di data management
Requisiti richiesti (oltre a quelli già specificati):
- laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica.
Competenze richieste:
- conoscenza delle basi di dati relazionali;
- analisi e progettazione orientate agli oggetti;
programmazione in linguaggio Java.
SPERIMENTAZIONE DI METODOLOGIE E STRUMENTI “EXPLAINABLE AI”
Il crescente e pervasivo utilizzo di tecniche di “Intelligenza Artificiale” per il supporto all’operatività e alle decisioni aziendali solleva a volte problemi di interpretazione e fiducia nei risultati forniti da tali sistemi. In effetti, le tecniche di machine learning e ragionamento automatico via via più sofisticate, da una parte consentono di prendere decisioni accurate e veloci, ma dall’altra rendono opache le motivazioni alla base di tali decisioni.
Ciò rappresenta un chiaro limite a livello aziendale: le decisioni automatiche risultano meno fidate e, al tempo stesso, si perdono degli insight che potrebbero derivare dall’esplorazione dei criteri di scelta. In casi estremi, tecniche di tipo interamente black box non sono applicabili per ragioni normative (ad esempio di auditing o accountability).
Il recente filone della “Explainable Artificial Intelligence” (XAI) punta a costruire tecniche di intelligenza artificiale le cui scelte possano essere analizzate, interpretate e spiegate a posteriori dall’analista. Ciò si può ottenere tramite specifiche combinazioni di metodologie (modelli con un grado di reversibilità) e tool (ad esempio per il debugging di data pipelines).
Il tirocinio proposto avrà ad oggetto lo studio di metodologie e lo sviluppo di strumenti XAI. Le attività saranno condotte con riferimento a casi di business reali in ambito finanziario in cui le esigenze citate sono particolarmente stringenti.
Il tirocinio sarà collocato nell’ambito di un progetto aziendale strutturato; il lavoro sarà svolto in team secondo pratiche agili e sotto la costante guida di ricercatori-tutor della Banca d’Italia.
Il contesto tecnologico di riferimento è: Java, Python, Keras, MXNet, scikit-learn, Spark MLib, sistemi per la gestione di Knowledge Graphs.
Competenze acquisite al termine del tirocinio:
- conoscenza di metodologie XAI;
- conoscenza dei principali framework di machine learning e ragionamento automatico.
Requisiti richiesti (oltre a quelli già specificati):
- laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica, Matematica pura e applicata.
Competenze richieste:
- predisposizione allo sviluppo e fluidità con i linguaggi Python o Java;
fondamenti di machine learning o data mining.
SPERIMENTAZIONE DI TECNICHE DI MACHINE LEARNING PER ANALYTICS SU DATI FINANZIARI STRUTTURATI E NON STRUTTURATI
La Banca d’Italia tratta in modo automatico una grande quantità di dati finanziari con molteplici finalità. Le sfide e le opportunità poste dal moderno contesto Big Data, rendono opportuno il ricorso a tecniche innovative che supportino i processi caratterizzati da human in the loop.
In particolare, è di rilievo fornire supporto agli analisti finanziari nell’identificazione di casi critici, concentrando la loro attività sull’analisi degli aspetti di core business.
In quest’ambito, il tirocinante contribuirà alla realizzazione di un sistema per il supporto all’operatività degli analisti finanziari della Banca; in particolare, svilupperà modelli di machine learning e deep learning per il calcolo di analytics con il fine di classificare i casi che meritano l’intervento umano.
Sarà centrale la realizzazione di modelli in grado di acquisire congiuntamente la conoscenza da sorgenti di dati strutturate e non strutturate (testuali). Il contesto, caratterizzato da fenomeni con distribuzioni particolarmente sbilanciate, richiederà tecniche di oversampling e undersampling.
Il tirocinio sarà collocato nell’ambito di un progetto aziendale strutturato; il lavoro sarà svolto in team secondo pratiche agili e sotto la costante guida di ricercatori-tutor della Banca d’Italia.
Il contesto tecnologico di riferimento è: Python, Keras, MXNet, scikit-learn, Spark MLib, gensim, MongoDB, Oracle DB.
Competenze acquisite al termine del tirocinio:
- conoscenza delle principali tecniche di text mining;
- conoscenza di modelli e strumenti di machine learning e deep learning.
Requisiti richiesti (oltre a quelli già specificati):
- laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica, Matematica pura e applicata, Fisica.
Competenze richieste:
- predisposizione allo sviluppo e fluidità con i linguaggi Python o Scala;
- fondamenti di machine learning o data mining.
UTILIZZO DI CONTAINER IN AMBIENTE DI PRIVATE CLOUD
Tra le metodologie di virtualizzazione disponibili nel mondo di calcolo distribuito, i container, grazie alle funzionalità di isolamento e astrazione garantite dai cgroups del kernel Linux, offrono notevoli vantaggi in termini di efficienza grazie anche alla rapidità di attivazione e al limitato overhead.
La creazione e terminazione rapida e on demand di container a fronte di situazioni di carico variabile li rendono particolarmente adatti per offrire servizi sul web o per creare velocemente ambienti di tipo IaaS e PaaS. È necessario tuttavia introdurre strumenti automatici per contenere la complessità delle infrastrutture, mantenere il controllo e semplificare la gestione dei container e garantire il servizio in ambienti di tipo mission critical.
L’iniziativa ha come obiettivo lo studio e la realizzazione di un prototipo per il deployment e l’orchestrazione di container in un ambiente di tipo cloud, utilizzando soluzioni open source quali, ad esempio, Kubernates.
Il tirocinante, in collaborazione con il team della Banca d’Italia nell’ambito di un gruppo di lavoro incaricato della realizzazione di una piattaforma di private cloud in Banca d’Italia, dovrà analizzare, studiare, selezionare e quindi sperimentare e realizzare, in ambiente di collaudo, un prototipo per la creazione, il deploy e l’esecuzione controllata di applicazioni attraverso l’uso di container come risorse integrate in un ambiente private cloud basato su Openstack.
Competenze acquisite al termine del tirocinio:
- conoscenza dei principi di funzionamento del cloud computing;
- competenza approfondita sull’utilizzo, lo sviluppo e la gestione di OpenStack (il più diffuso software open source per la realizzazione di private cloud), dei container applicativi e dei processi di continuous integration and delivery.
Requisiti richiesti (oltre a quelli già specificati):
- laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica, Matematica pura e applicata, Fisica.
Competenze richieste:
- conoscenza degli strumenti concettuali e tecnici necessari per un proficuo svolgimento dell’attività, in particolare:
- nozioni teorico-pratiche di amministrazione di sistemi Linux e di sistemi di virtualizzazione;
nozioni di programmazione in shell-scripting (almeno Bash) e almeno un linguaggio di più alto livello (quale, ad esempio, Go, Python, PHP).
CAPACITY PLANNING IN AMBIENTE DI PRIVATE CLOUD
L’iniziativa ha l’obiettivo di sviluppare un modello per il supporto alle attività di capacity planning e gestione dei carichi elaborativi in ambienti di private cloud basato su OpenStack.
Il tirocinante collaborerà con il team di progetto incaricato di realizzare un pilota (produzione) di un Software defined data center (SDDC) e private cloud al fine di definire i criteri e gli strumenti per il governo e la gestione ottimale della capacità elaborative disponibili all’interno dell’SDDC.
Il modello offrirà supporto per il dimensionamento dei sistemi in funzione dei carichi elaborativi e sarà di ausilio sia per le decisioni operative nel day-by-day, sia per determinare la redistribuzione dei costi nei singoli tenant (progetti) secondo la logica del pay-per-use; terrà anche conto, in un’ottica di gestione green dei data center, del contenimento dei consumi energetici dei sistemi.
Competenze acquisite al termine del tirocinio:
- conoscenza dei principi di funzionamento del cloud computing;
- competenza approfondita sull’utilizzo, lo sviluppo e la gestione di OpenStack (il più diffuso software open source per la realizzazione di private cloud), con particolare riferimento al controllo di gestione delle risorse, all’allocazione dei costi e alle previsioni di consumo.
Requisiti richiesti (oltre a quelli già specificati):
laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica, Matematica pura e applicata, Fisica.
Competenze richieste:
- conoscenza degli strumenti concettuali e tecnici necessari per un proficuo svolgimento dell’attività, in particolare:
- nozioni teorico-pratiche di amministrazione di sistemi Linux e di sistemi di virtualizzazione;
- nozioni di programmazione in shell-scripting (almeno Bash) e almeno un linguaggio di più alto livello (quale, ad esempio, Go, Python, PHP).
SPERIMENTAZIONE DI TECNICHE DI DEEP LEARNING PER LA REALIZZAZIONE DI UN VIRTUAL PERSONAL ASSISTANT DI SUPPORTO ALLE DECISIONI
L’Arbitro Bancario Finanziario (ABF), per il quale Banca d’Italia funge da Segreteria tecnica e da gestore dei sistemi informativi, si occupa di comporre in modo stragiudiziale le controversie tra cittadini, banche e intermediari finanziari. In questo contesto, si dispone di una ampia base di dati (in parte pubblica) che mantiene lo storico delle precedenti controversie e le relative delibere.
In questo ambito, il tirocinante contribuirà alla realizzazione di un sistema per la semplificazione del processo decisionale di risoluzione delle controversie, nell’ottica di fornire all’analista umano una selezione automatica dello storico delle controversie e decisioni che evidenzi casi simili già trattati o comunque pertinenti per la decisione di quello corrente. Il tirocinante applicherà tecniche di text mining e machine learning, in particolare di deep learning, per la codifica e il clustering della base dati testuale costituita dallo storico delle controversie.
Il tirocinio sarà collocato nell’ambito di un progetto aziendale strutturato; il lavoro sarà svolto in team secondo pratiche agili e sotto la costante guida di ricercatori-tutor della Banca d’Italia.
Il contesto tecnologico di riferimento è: Python, Scala, Keras, MXNet, scikit-learn, Spark MLib, gensim, MongoDB, Oracle DB.
Competenze acquisite al termine del tirocinio:
- conoscenza delle principali tecniche di text mining;
- conoscenza di modelli e strumenti di machine learning e deep learning.
Requisiti richiesti (oltre a quelli già specificati):
- laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica, Matematica pura e applicata.
Competenze richieste:
- predisposizione allo sviluppo e fluidità con i linguaggi Python o Scala;
- fondamenti di machine learning o data mining.
SVILUPPO DI UN BOT CON LINGUAGGI DICHIARATIVI
Authority come l’ABF (Arbitro Bancario Finanziario) o l’IVASS (Istituto per la Vigilanza sulle ASSicurazioni) ricevono ogni giorno numerosi ricorsi di varia natura dai cittadini, sottomessi mediante appositi moduli strutturati, richiedenti dati personali e una dettagliata descrizione della circostanza oggetto del ricorso. Talvolta, può apparire complesso per il cittadino fornire tutte le informazioni rilevanti, soprattutto nella fase di descrizione in forma libera del caso.
Al tempo stesso, in ambito aziendale e in particolare per il customer care, sta diventando sempre più diffuso l’utilizzo di chatbot, veri e propri “robot” programmati per rispondere e interagire come esseri umani. I bot sono in grado di sostenere conversazioni semplici, estrapolare informazione utile ed inviare messaggi, allo scopo di automatizzare un processo di business o guidare l’utente nella risoluzione di un problema. Paradigmi dichiarativi consentono di esprimere, in un linguaggio specifico del dominio, la logica delle interazioni comunicative da far esprimere al bot, senza sviluppare esplicitamente complessi alberi di decisione.
In quest’ambito, l’obiettivo del tirocinio sarà lo sviluppo di un chatbot per l’assistenza al cittadino nella compilazione dei ricorsi.
Il contesto tecnologico di riferimento è: Python, Git, API architecture, piattaforme chatbot open source e commerciali (e.g. Facebook chatbot, Telegram chatbot).
Il tirocinio sarà collocato nell’ambito di un progetto aziendale strutturato; il lavoro sarà svolto in team secondo pratiche agili e sotto la costante guida di ricercatori-tutor della Banca d’Italia.
Competenze acquisite al termine del tirocinio:
- conoscenza delle principali piattaforme per lo sviluppo di chatbot;
- conoscenza delle tecniche di natural language processing;
- conoscenza di tecniche di machine learning e deep learning.
Requisiti richiesti:
- laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica, Ingegneria elettronica, Mechatronics Engineering, Matematica pura e applicata, Fisica.
Competenze richieste:
- conoscenza dei principali paradigmi di programmazione;
- fluidità con uno o più linguaggi di programmazione (Java, Python);
- fondamenti di machine learning e artificial intelligence.
ANALISI DI SISTEMI DINAMICI COMPLESSI
L’approccio tradizionale allo studio dei fenomeni economici come sistemi complessi è stato a lungo quello riduzionista (equation-based modeling): modellazione di una versione semplificata del sistema al fine di renderlo analiticamente trattabile. Questa strategia ha permesso di conseguire risultati teorici rilevanti. Un approccio alternativo all’analisi dei sistemi complessi è la simulation-based modeling. Questo approccio costituisce un’area attiva di ricerca e consente di modellare sistemi con un più elevato grado di realismo e, in prospettiva, di produrre previsioni ed analisi di policy più affidabili.
Nell’ambito delle attività della Divisione Ricerca sulle Tecnologie Avanzate della Banca d’Italia, è stato individuato un insieme di modelli di mercati reali e finanziari presenti in letteratura, che sono poi stati studiati approfonditamente ed implementati. Sono inoltre in fase di sviluppo versioni evolutive di questi modelli.
Sotto la guida di un ricercatore-tutor della Banca d’Italia e nell’ambito di un team di progetto, il tirocinante avrà la possibilità di studiare modelli realistici di mercati reali e finanziari. Il tirocinante avrà la possibilità di contribuire all’implementazione dei modelli, utilizzando i più importanti framework di riferimento (ad es. NetLogo, Java Agent Development Framework). Si potrà far ricorso a simulazione su larga scala con l’adozione di paradigmi e strumenti scalabili di programmazione concorrente (ad es. actor-based programming e Akka).
Il tirocinante parteciperà inoltre allo studio, alla sintesi e alla presentazione dei risultati delle simulazioni mediante l’utilizzo dei principali pacchetti statistici.
Competenze acquisite al termine del tirocinio:
una o più delle seguenti:
- progettazione e implementazione di modelli multiagente;
- conoscenza di framework per l’implementazione di simulazioni di sistemi ad agenti;
- conoscenza di paradigmi e strumenti di programmazione concorrente;
- capacità di analisi e sintesi di dati multivariati con pacchetti statistici (R, Stata, Matlab, etc.);
- conoscenza del funzionamento di mercati reali e finanziari;
- modellazione realistica di sistemi economici.
Requisiti richiesti (oltre a quelli già specificati):
- laurea magistrale/specialistica in Ingegneria informatica, Informatica, Matematica pura e applicata, Fisica, Economics.
Competenze richieste:
- predisposizione allo sviluppo e fluidità con almeno un linguaggio di programmazione tra: Java, C#, Scala, Python;
- conoscenze di base di statistica descrittiva ed inferenziale;
- esperienza nell’utilizzo di un pacchetto statistico;
- interesse nel funzionamento dei sistemi economici, conoscenze di base di teoria economica.
TECNICHE DI WEB SCRAPING PER L’ACQUISIZIONE DI DATI SOCIETARI
La Banca d’Italia gestisce numerose basi di dati contenenti informazioni relative alle società italiane. Tali informazioni sono utilizzate con varie finalità, dallo svolgimento dei compiti istituzionali alla conduzione di analisi a carattere economico.
Una modalità per acquisire ulteriori informazioni su tali società e, in alcuni casi, correggere o rivedere quelle esistenti, è l’estrazione di dati dal web e dai social.
In quest’ambito, il tirocinante collaborerà alla progettazione e alla realizzazione di un sistema che, a partire da alcuni dati strutturati relativi ad una certa società, reperisca automaticamente dal web, tramite tecniche di web-scraping, alcune feature di interesse aggiuntive, integrando ed eventualmente correggendo i dati già a disposizione. Il sistema dovrà essere in grado di estrarre dati strutturati da milioni di siti web in maniera automatica.
Il tirocinio sarà collocato nell’ambito di un progetto aziendale strutturato; il lavoro sarà svolto in team secondo pratiche agili e sotto la costante guida di ricercatori-tutor della Banca d’Italia.
Competenze acquisite al termine del tirocinio:
- conoscenza delle principali tecniche di web scraping e web data extraction.
Requisiti richiesti (oltre a quelli già specificati):
- laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica, Matematica pura e applicata.
Competenze richieste:
- predisposizione allo sviluppo e fluidità con i linguaggi Java o Python.
TECNOLOGIE OPEN SOURCE PER L’ELABORAZIONE DI DATI STATISTICI
L’iniziativa ha l’obiettivo di sviluppare un modello per l’evoluzione del processo di realizzazione della “Rilevazione economica e tecnologica sull’IT nel sistema bancario” condotta annualmente dalla CIPA – Convenzione Interbancaria per l’Automazione (www.cipa.it). Le attività riguarderanno in particolare l’innovazione degli strumenti tecnologici – sostanzialmente SAS ed Excel – attualmente utilizzati a supporto del processo di elaborazione/analisi dei dati e di produzione della reportistica e potranno includere anche lo studio di ulteriori metodi di rilevazione e/o scenari di analisi.
Considerato che in molti ambiti di studio statistico si stanno affermando prodotti open source, il confronto tra tecnologie più tradizionali (SAS) e tecnologie open (quali, ad esempio, R) consentirà di evidenziare i possibili vantaggi offerti dalla migrazione dell’attuale assetto tecnologico per le rilevazioni CIPA verso il mondo open.
Il tirocinante collaborerà con il team della Banca d’Italia che produce le indagini statistiche, con l’obiettivo di: a) analizzare l’attuale processo di raccolta e di analisi dei dati, nonché i metodi adottati per la produzione dei grafici e della reportistica; b) proporre miglioramenti al processo in essere attraverso l’introduzione di strumenti e tecnologie innovative, di tipo open source, per l’elaborazione dei dati, l’analisi dei risultati e la produzione della reportistica; c) realizzare un prototipo di migrazione riguardante alcune procedure più significative ed eventualmente collaborare all’avvio della fase realizzativa.
Competenze acquisite al termine del tirocinio:
- conoscenza di un processo tipico di raccolta e analisi di dati di tipo statistico sull’ambito IT nel sistema bancario;
- competenza sulla realizzazione di un progetto di migrazione tecnologica, in ambito statistico, da soluzioni proprietarie a soluzioni open source.
Requisiti richiesti (oltre a quelli già specificati):
- laurea magistrale/specialistica in ICT and Internet Engineering, Ingegneria informatica, Informatica, Matematica pura e applicata.
Il candidato deve aver sostenuto almeno un esame di tipo statistico.
Competenze richieste:
- conoscenza degli strumenti concettuali e tecnici necessari per un proficuo svolgimento dell’attività, in particolare:
- conoscenza dei database relazionali (es. Oracle) e degli strumenti di office automation per la reportistica (es. Excel);
- nozioni di programmazione in un linguaggio di alto livello (quale, ad esempio, Python, PHP, Java);
- conoscenza di ambienti e librerie per l’analisi dei dati e la produzione di reportistica quali, preferibilmente, SAS e R, nonché conoscenza di librerie (quali d3, plotly, etc.) per la produzione di grafici.