Profilo
Lo sviluppo di software, iniziato per passione da ragazzo, è la mia attività principale.
Sono in particolare interessato a software per applicazioni tecnico/scientifiche, anche in ambito di ricerca e sviluppo.
Mi piace seguire la vita di un progetto in tutte le sue fasi, dall'analisi e la modellazione allo sviluppo e al test.
Sto sviluppando una rete neurale modulare basata su spiking neurons in C++.
Conoscenze Tecniche
- C/C++, Standard C++, STL (10 anni)
- Linguaggio di modellazione UML, Object-Oriented analysis and design (6 anni)
- Metodi Numerici, simulazione
- Reti Neurali, Spiking Neural Networks, Algoritmi Genetici, Wavelets (8 anni)
- SQL, PL/SQL, diagrammi E-R (Entity Relationship) (1 anno)
- UNIX (Linux, HP-UX, Solaris) (8 anni), Windows
- Real Time: VxWorks/Tornado (1 anno)
- IDEs: MS Visual C++, KDevelop, Source-Navigator, DDD
- Web: XHTML, XML, JavaScript, Quanta+, Nvu, Plone (3 anni)
- Conoscenze teoriche: Java, CORBA, Assembler, Forth, LISP, Prolog
- Altro: gnuplot scripts
Interessi
Simulazione di reti neuronali e di fluidodinamica su calcolatore, ed accoppiamento di questi programmi con sistemi per la gestione di basi di dati.
Sono in particolare interessato a reti neurali di tipo modulare (ho realizzato un programma in C++ a riguardo)
e al loro “sviluppo” tramite algoritmi genetici che ne modellino la struttura.
Per motivi di lavoro ho approfondito l’argomento “wavelets” per quanto riguarda l’interpretazione di immagini in modo analogo al cervello umano.
Attualmente sto sviluppando un programma che simula una rete di “spiking neurons”, organizzati in strati e colonne corticali.
Precedentemente (all'età di 17 anni) ho realizzato un programma in Pascal per la simulazione della dinamica dei fluidi,
utilizzando un metodo a metà strada tra le differenze finite e gli elementi finiti.
Nello stesso periodo mi sono interessato alla grafica vettoriale 3D e ho scritto un semplice programma CAD.
Sul mio
sito web
potete trovare i dettagli.
Seminari
- Siemens (Milano): “Overview of Spiking Neuron Models”, 2006
- Dipartimento di Informatica, Università degli Studi di Milano:
- "Introduzione agli Spiking Neurons", 2004, per il corso "Sistemi Intelligenti".
- “Spiking Neurons and Algoritmi di Apprendimento”, 2004, per i ricercatori.
- "Introduzione al Linguaggio di Modellazione UML", 2002.
- Consiglio Nazionale delle Ricerche (CNR): "Reti Neurali Modulari e loro sviluppo con Algoritmi Genetici", 1998.
Esperienze Professionali
| Marzo 2008 - |
ANSYS, Inc. (U.K.) |
Software developer |
Sviluppo software per prodotti CAD/CAE/CFD in ambito aeronautico (C++, OpenGL, multipiattaforma).
| Gennaio 2006 - Gennaio 2008 |
Siemens |
Software developer |
Sviluppo di software per un simulatore di BTS (
Base Transceiver Station) per la rete GSM (C++/UML/Unix).
Progettazione e sviluppo di un tool per la decodifica dei messaggi di errore prodotti da un insieme di moduli hardware,
con una interfaccia multipiattaforma (C++, Unix, Windows, XHTML, XForms).
Reverse engineering di un pacchetto software per la stesura della documentazione e lo sviluppo di diagrammi UML (C#, UML, Visual Paradigm).
| Maggio 2001 - Dicembre 2005 |
AISoftw@re S.p.A. |
Software developer |
Sviluppo software nell’ambito medico/ospedaliero per la manipolazione e l'archiviazione di immagini radiologiche (C++/Unix/Linux/Windows).
Storage e recupero di queste immagini da data base (SQL, Oracle, InterBase),
e loro analisi e interpretazione utilizzando le wavelets di Haar.
Realizzazione del portale web dell'azienda utilizzando il pacchetto Plone.
Software refactoring e modellazione UML del principale prodotto software (Objecteering).
| Gennaio 1997 - Aprile 2001 |
Consulente |
Software developer |
- ENEL: attività sul “Database Unico Clienti” per la riorganizzazione dei dati relativi ai circa 30 milioni di utenti
della compagnia (PL/SQL, Oracle/Unix).
- Laben S.p.A. (gruppo Alenia): progetto commissionato dall’ESA (Agenzia Spaziale Europea). Qui mi sono occupato della
realizzazione di software destinato alla Stazione Spaziale Internazionale. In particolare ho sviluppato un logger che deve
gestire i messaggi prodotti dai differenti moduli della ISS in ambiente real-time (C/VxWorks/Unix/Solaris).
- Sviluppato due programmi per la Gucci e per la Core Labs (società inglese che opera nel settore petrolifero), utilizzando
reti neurali e “wavelets”. Questo software doveva isolare parti dei fondali marini o parti di pellami sulla base della tessitura
osservata, utilizzando lo stesso algoritmo adattato ai differenti training sets (C++/Unix/Windows).
- Sviluppo di software per la rete GSM per le società Italtel e Siemens, per realizzare un test black-box automatico delle unità BSD.
- Sviluppo di software per un sistema antifrode telefonica in Compaq.
- Progetto di una base di dati per la gestione di una clinica privata.
Istruzione
Diploma di Laurea in Informatica presso l’Università degli Studi di Milano con votazione di 63/70 (2001).
Tesi: "Analisi e Sviluppo di una Rete Neurale Modulare basata su "Mixture of Experts", e confronto con Algoritmi di Boosting".
Maturità Scientifica con votazione di 54/60.
Lingue straniere
- Ottima conoscenza della lingua inglese parlata e scritta.
Altre informazioni
- In possesso di patente B.
- Disponibile a trasferimenti in Italia e all’estero.
- Luogo e data di nascita: Reggio Emilia, 16/10/1971
- Stato civile: coniugato.
- Servizio militare: esente.
- Gioco a tennis, faccio ginnastica, mi piace viaggiare e ascolto musica classica.
Dettagli sui miei progetti personali
CFD
All'età di 17 anni ebbi l'occasione di frequentare un corso di pilotaggio tenuto dall'Aeronautica Militare.
Era un corso sia teorico che pratico, e dopo aver superato un esame ebbi l'opportunità di pilotare un
aereo modello
SIAI-Marchetti S208M. Quella esperienza mi fece sorgere l'interesse per la dinamica
del volo e cominciai a studiare la dinamica dei fluidi e sviluppai un programma (
CFD) che simula
il comportamento di un fluido attorno ad un oggetto.
In un primo momento utilizzai le equazioni di Eulero, e notai che la simulazione era buona per le prime
iterazioni, ma poi divergeva indipendentemente da quanto piccolo fosse il passo temporale utilizzato.
Solo qualche anno più tardi, all'università, scoprii la ragione di quel comportamento: dovevo utilizzare un
metodo di risoluzione implicito.
In seguito sviluppai una nuova versione di questo programma, stavolta seguendo un approccio più
conservativo, risolvendo l'equazione del potenziale.
(Pascal, MS-DOS)
Neuro
Alla fine degli anni '90, mi interessai all'intelligenza artificiale, e considerando l'approccio connessionista
e quello simbolico, scelsi il primo.
Mentre studiavo all'università, cominciai a sviluppare il mio primo programma in questo campo:
una rete neurale basata sull'algoritmo di
Back-Propagation (Neuro1).
Di seguito scrissi un programma che simula una rete neurale modulare basata sull'algoritmo
“Mixture of Experts” (Neuro2),
che diventò argomento di tesi.
Come passo successivo, volevo approssimare meglio il funzionamento dei neuroni, tenendo in considerazione
i costi computazionali necessari; così decisi di adottare il modello chiamato
Spiking Neuron (Neuro3).
Questo progetto è ancora in fase di sviluppo. L'ho suddiviso in un insieme di blocchi, ognuno dei quali
rappresenta un diverso livello di dettaglio. Il livello più basso include i neuroni, le sinapsi, gli spikes, e
le equazioni che li controllano; questa fase è stata completata. Il livello superiore comprende gli strati di
neuroni e le colonne corticali, ed è ciò a cui sto lavorando attualmente. Di seguito, al livello più alto,
dividerò il sistema in tre componenti, uno per l'apprendimento supervisionato, uno per l'apprendimento con
rinforzo e uno per l'apprendimento non supervisonato, per simulare, rispettivamente, il comportamento del
cervelletto, dei gangli basali e della corteccia. Utilizzerò poi un algoritmo genetico per far evolvere alcuni
parametri della struttura.
(Standard C++, XHTML, JavaScript, XML, gnuplot, Tulip)
.