Curriculum Vitae

 

Note legali

Alcune delle informazioni che seguono sono definite sensibili ai sensi della legge 31 dicembre 1996 n. 675 e successive modifiche. Il fatto che siano qui disponibili non implica alcuna autorizzazione al loro trattamento. Chiunque avesse interesse a rilevare, archiviare o comunque trattare le informazioni che seguono (per uso non personale, si veda Art.3) è tenuto a contattarmi e chiedere esplicita autorizzazione.

Dati anagrafici

Nome e cognome:
Gianni Ceccarelli
Luogo e data di nascita:
San Giovanni Valdarno (AR), 19770405 (5 aprile 1977)
Residenza:
via Trieste, 214
52020 Ambra (AR)
Posta elettronica:
dakkar@thenautilus.net
Telefono:
+393478229734

Istruzione

Licenza media conseguita presso la Scuola Media Statale A. Manzoni di Bucine (AR) nel 1991.

Diploma di maturità scientifica conseguito presso il Liceo Scientifico Francesco Redi di Arezzo nel 1996, sezione MFI (sperimentazione Matematica-Fisica-Informatica), con votazione di 60/60. All'interno della prova orale ho esposto una breve tesi sulla generazione di immagini fotorealistiche al calcolatore, con particolare riguardo a tecniche di ray-tracing.

Il 20011019 ho coneguito la Laurea in Informatica presso l'Università di Pisa con la votazione di 110/110 e lode; sono inoltre stato allievo ordinario presso la Scuola Normale Superiore di Pisa per tutta la durata del corso di laurea (5 anni).

Esami sostenuti, votazione, e breve descrizione delle conoscenze acquisite:

Denominazione esameVotazione conseguitaConoscenze acquisite
Programmazione I
Laboratorio I
30 e lode Elementi di programmazione imperativa (Pascal), algoritmi fondamentali
Matematica Discreta30 e lode Elementi di algebra e geometria (gruppi, anelli, spazi vettoriali, campi)
Algoritmi e Strutture Dati I
Laboratorio II
30 e lode Algoritmi di base, misure di complessità in tempo e spazio
Analisi Matematica I29 Successioni, serie, analisi di funzioni reali di variabile reale
Logica Matematica28 Metodi formali di dimostrazione
Analisi Matematica II28 Analisi di funzioni vettoriali
Architettura degli Elaboratori I
Laboratorio III
30 e lode Struttura fondamentale dei calcolatori, princìpî di funzionamento di un processore tradizionale, esempio di linguaggio assembler
Fisica Generale I27 Meccanica, metodi di misura
Sistemi Operativi I
Laboratorio IV
27 Elementi costituenti un sistema operativo, struttura e funzionamento di un semplice sistema a microkernel, chiamate di sistema POSIX
Fondamenti dell'Informatica: Calcolabilità e Complessità30 e lode Definizione di funzione calcolabile, formalismi per la calcolabilità, funzioni non calcolabili, misure di complessità
Analisi Numerica27 Limiti del calcolo numerico automatico, stabilità numerica degli algoritmi, algoritmi di base per l'algebra lineare
Basi di Dati e Sistemi Informativi I30 Struttura delle basi di dati a oggetti e relazionali, linguaggio SQL
Calcolo delle Probabilità28 Probabilità discreta
Linguaggi di Programmazione: Linguaggi Formali e Compilatori27 Definizione di linguaggio, grammatiche libere da contesto, grammatiche con attributi, idee di base per la costruzione di un compilatore
Fondamenti dell'Informatica: Semantica30 Domìnî di interpretazione dei programmi, formalismi per la descrizione della loro semantica, punti fissi
Fisica Generale II30 Elettro-magnetismo, termodinamica
Programmazione Matematica28 Problemi di ottimizzazione lineare, algoritmo del simplesso
Architettura degli Elaboratori II30 Sistemi multiprecessore simmetrici e asimmetrici, sistemi paralleli e distribuiti
Intelligenza Artificiale I28 Elementi di IA simbolica, sistemi di deduzione, sistemi esperti
Ingegneria del Software I30 Metodologie di analisi e progetto per sistemi software
Apprendimento Automatico30 e lode Metodi e modelli di apprendimento e classificazione automatica
Reti Neurali I26 Modelli storici di calcolo neurale, reti Cascade Correlation, reti Perceptron e Back-Propagation
Basi di Dati e Sistemi Informativi II30 e lode Struttura e funzionamento di un sistema di gestione per basi di dati concorrente
Teoria dell'Informazione28 Problemi di trasmissione dati, entropia, codici a correzione d'errore
Linguaggi di Programmazione: Linguaggi Logici30 e lode Teoria dei linguaggi logici, unificazione, linguaggi logici con vincoli
Linguaggi di Programmazione: Paradigmi e Macchine Astratte30 e lode Teoria e implementazione di interpreti e compilatori per linguaggi funzionali e imperativi
Reti Neurali II30 e lode Reti neurali ad apprendimento non superivisionato, reti ricorrenti, algoritmi evolutivi, logica fuzzy
Ingegneria del Software: Laboratorio di Programmazione30 e lode Analisi requisiti, specifica, progettazione, realizzazione di un sistema software
Basi di Dati: Recupero di Documenti30 e lode Teorie alla base dell'information retrieval
Algoritmi e Strutture Dati: Internet e Web30 e lode Tecniche di crittografia, algoritmi di routing, sistemi di ricerca per Web, algoritmi di compressione dati
Matematica computazionale: Geometria30 e lode Tecniche e algoritmi per il trattamento e la risoluzione di problemi geometrici in due e tre dimensioni
Algoritmi e strutture dati: Bioinformatica30 e lode Algoritmi per determinare distanza e similarità tra sequenze, applicazioni al sequenziamento di geni e alla filogenetica

Per mantenere il mio stato di allievo della Scuola Normale, ho sostenuto anche altri esami, tra i quali:

Denominazione esameConoscenze acquisite
Interazione Uomo-Macchina: Fondamenti di Computer Graphics Elementi di grafica sia bidimensionale che tridimensionale, uso della libraria OpenGL
Interazione Uomo-Macchina: Progettazione di Interfacce Grafiche Componenti fondamentali delle moderne interfacce utente grafiche, linee guida
Percezione Robotica Principali problemi e metodi di soluzione nella robotica moderna
Intelligenza Artificiale: il trattamento automatico del linguaggio naturale Problemi e approcci alla comprensione automatica del linguaggio naturale e possibili applicazioni

La mia tesi di laurea ha come argomento un'estensione degli algoritmi di apprendimento con rinforzo tramite funzioni per strutture, permettendo ad esempio di trattare insiemi di agenti cooperanti tramite reti di comunicazione. La tesi e la libreria ad essa correlata sono disponibili su SourceForge. La libreria è rilasciata sotto licenza GNU LGPL e la tesi sotto GNU FDL.

Dal 20020101 al 20021231 sono stato iscritto al dottorato in informatica presso il Dipartimento di Informatica dell'Università di Pisa. Ho abbandonato per cercare un lavoro.

Esperienze lavorative

Dal 20030203 al 20050631 ho lavorato presso la Hyperborea s.c..

Presso Hyperborea ho acquisito svariate tecniche di progettazione e sviluppo, e approfondito le mie conoscenze. In particolare:

  • Programmazione in Python.
  • Integrazione in un gruppo di sviluppo e coordinamento con altri sviluppatori/
  • Gestione delle segnalazioni di bug (usando GNATS).
  • Sviluppo distribuito e gestione delle versioni (con CVS).
  • Progettazione e sviluppo di applicazioni web/CGI.
  • Integrazione tra database relazionali e applicazioni web.
  • Uso di Oracle (8 e 9i), PostgreSQL, MySQL.
  • XML e tecnologie correlate: XPath, XSLT e XSL-FO, XML Schema.

Tra i progetti cui ho partecipato, i più significativi sono:

  • iboFlex, un framework per semplificare la scrittura di applicazioni web di data-entry su database, basato su ibo (un application server sviluppato in-house) e XSLT.
  • Un framework generale per la gestione di questionari via web, estremamente flessibile. Permette di definire questionari arbitrariamente complessi, di definire le regole di validazione delle risposte e di variare la presentazione dei questionari (domande e risposte riordinabili, diverse formulazioni per ciascuna). Usa XML come formato di rappresentazione e XSLT per definire la presentazione.
  • Arianna versione 3, programma per la inventariazione di archivi storici, basato su XML, per il quale ho definito i formati di rappresentazione interna e ho scritto il sistema di indicizzazione e ricerca full-text.
  • Un sistema di gestione distribuita per la programmazione e pianificazione didattica dell'università, sviluppato in collaborazione con l'Università di Milano Bicocca, per il quale ho collaborato alla progettazione d'insieme e alla definizione dei formati e protocolli di interscambio dati. Attualmente il progetto è portato avanti dalla spin-off TabulaeX.
  • Il progetto Ecumene, un progetto nazionale per la diffusione telematica di conoscenze sul patrimonio storico-artistico ed archivistico della Chiesa Cattolica in Italia, in cui ho collaborato alla definizione dell'architettura, alla progettazione di alcuni moduli, alla definizione dei linguaggi e protocolli di interscambio dati.

A metà 2005 ho contribuito ad avviare lo Studio Blackbit, con cui adesso collaboro.

Altre esperienze

Nel 1992 ho iniziato a sviluppare per la tellure Rôta di Formigine (MO) il programma Scegli la ruota giusta. L'azienda produce ruote per movimentazione industriale; il programma era progettato per essere messo a disposizione dei clienti delle ferramenta per aiutarli a scegliere, all'interno del catalogo, la ruota migliore (sia come prestazioni sia come prezzo) per la loro applicazione. La prima versione era scritta per MS Quick Basic 4.5, successivamente è stato interamente riscritto in Borland Pascal. L'interfaccia utente era completamente grafica, con disegni e animazioni esplicativi (il tutto girava su sistemi 386 con schede grafiche VGA standard, sotto DOS). Il sistema di ricerca all'interno del catalogo era basato su funzioni di archivio scritte appositamente. Le ultime versioni includono un sistema per la traduzione dei messaggi, e ho curato (assieme a specialisti della tellure Rôta) la traduzione in inglese, francese, tedesco, spagnolo.

Nel 1995 ho sviluppato per la PFB di Modena un programma per la gestione di un banco prova per regolatori. L'azienda produce componenti per ascensori; il regolatore è una puleggia in cui scorre un cavo collegato alla cabina dell'ascensore: se il cavo (e quindi la cabina) supera una certa velocità, la puleggia deve bloccarsi, tendendo il cavo e attivando di conseguenza il sistema frenante della cabina. Il programma, grazie a una interfaccia da me sviluppata con un rilevatore di velocità (encoder ottico collegato alla porta parallela), permette di rilevare con precisione la velocità di intervento del regolatore (ovvero la massima velocità raggiunta prima del blocco), di archiviare le prove effettuate e di stampare un certificato di conformità. Il sistema gira su sistemi PC, in modo testo sotto DOS, ed è stato scritto in Borland Pascal. Il sistema di archiviazione è anche in questo caso sviluppato ad hoc.

Dal 1996 ho partecipato alla costruzione di una rete locale basata su Ethernet tra macchine eterogenee (Macintosh e PC con Windows, DOS, Linux). Dal 1997 al 2001 sono stato ufficiosamente responsabile della sala computer del Collegio Carducci della Scuola Normale (dove abitavo): al momento che l'ho lascaita era composta da 8 PC, con sistemi operativi MS Windows NT 4 e Linux (ci siamo basati sulla distribuzione RedHat), e due iMac. Erano inoltre presenti due stampanti, accessibili da tutte le macchine via rete; l'intera sala era protetta dagli attachi esterni tramite un NAT (Network Address Translator) realizzato con un PC con Linux. Il merito dei risultati ottenuti non è solo mio: sono stato aiutato da quattro miei colleghi, senza la cui collaborazione non sarebbe stato possibile realizzare tutto ciò. Ho organizzato un ciclo di lezioni introduttive all'uso dei computer per gli utenti della sala, che sono state tenute dai miei collaboratori.

Nel 1997 ho tradotto dall'inglese alcuni articoli sulla programmazione del Presentation Manager di IBM OS/2 per la rivista in rete Just Warp!.

Nel periodo Luglio-Agosto 2000 sono stato invitato presso l'Università di Wollongong in Australia per lavorare col gruppo del prof. Ah Chung Tsoi su reti neurali per domìnî strutturati.

Nel 2000 ho tenuto alcune lezioni di Perl per altri studenti, esponendo i fondamenti del linguaggio (e qualche caratteristica oscura a seguito di domande cattive)

Ho tenuto anche una breve lezione sul funzionamento, l'uso e i problemi di Internet all'interno di un corso per insegnanti delle scuole medie tenuto dal mio insegnante di matematica alle medie.

Ho curato la traduzione italiana di SourceForge, e ho aiutato i traduttori italiani di KDE 2.

Capacità

Conosco vari linguaggi di programmazione:

LinguaggioLivello di conoscenza
PerlMolto buono
PythonBuono
C++Molto buono
CMolto buono
JavaBuono
PascalBuono

Preferisco i linguaggi imperativi o a oggetti; ho qualche problema (di progettazione) con i linguaggi funzionali (Scheme, ML, Haskell).

Sto facendo esperienza nel campo della generazione e gestione di siti Web tramite XML/XSL usando XWeb, Apache Cocoon 2 e AxKit. Questo sito è un esempio di quello che sono riuscito a fare fin'ora (cfr. il sorgente). Sto lavorando a un sistema di generazione di siti integrato con subversion.

Ho un forte interesse (e forti opinioni) per le interfacce utente. Le migliori (secondo me), modo testo: WordStar 4.0, Pine; gestione file e cartelle: IBM Work Place Shell per OS/2; per palmari: Apple Newton. Per questo ho progettato molte interfacce utente (più di quante sia riuscito a realizzare).

Ritengo di non avere grandi capacità didattiche, anche se chi ha assistito alle mie lezioni si è detto soddisfatto.

Come organizzatore/responsabile ho avuto qualche successo, riuscendo a coordinare il lavoro di cinque persone nell'amministrazione di una rete di computer, mettendo al primo posto la sicurezza e al secondo l'affidabilità per gli utenti (che include il non stravolgere le abitudini in nome dell'innovazione). Nel Luglio 2004 ho fatto parte del comitato organizzativo del primo Perl Workshop italiano, svoltosi a Pisa; nel 2005 ho replicato col secondo Perl Workshop italiano.

Amministro la mia macchina Linux, su cui girano Apache (con mod_perl), Sendmail, MySQL, Squid, Bind. La macchina gestisce la connessione ADSL, la risoluzione nomi e l'accesso (con proxy) al Web per una piccola rete di calcolatori.

Parlo e scrivo correntemente in inglese; leggo il francese e con un po' di difficoltà lo spagnolo. Ho seguito un corso di giapponese di primo livello, superando l'esame finale.

Dakkar

Valid HTML 4.0! Valid CSS!