MP3. Il catalogo degli MP3 gode delle seguenti proprietà:



Documenti analoghi
Carte Laurea triennale in Comunicazione Digitale Laboratorio di Informatica Generale

Gioco dell Oca. 1 Descrizione. 2 Gioco dell Oca. Discussione di Febbraio e Aprile 2009

Prova di Laboratorio di Programmazione

Soluzione dell esercizio del 2 Febbraio 2004

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Gestione Risorse Umane Web

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

Laboratorio di Informatica di Base Archivi e Basi di Dati

Progettazione di un Database

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Istituto Centrale per il Catalogo Unico delle Biblioteche Italiane. e per le Informazioni bibliografiche. Manuali utente per SBN WEB. Versione 1.

Introduzione alla teoria dei database relazionali. Come progettare un database

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

FtpZone Guida all uso

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Manuale Utente Albo Pretorio GA

Esercitazione n 4. Obiettivi

Guida all utilizzo della Piattaforma per la staffetta di Scrittura Creativa Manuale pratico per docenti e tutor

Note per generazione file.txt per invio trimestrale V.P. all AGENZIA DELLE ENTRATE

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2015

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

Come modificare la propria Home Page e gli elementi correlati

ISTRUZIONI PER L UTILIZZO DELLA SCHEDA INFORMATIZZATA E MODALITA DI INVIO DEI DATI - L. R. 162/98 PROGRAMMA

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Gestione dei servizi all utenza. 3. Autorizzazioni

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

1) GESTIONE DELLE POSTAZIONI REMOTE

MANUALE PER LA GESTIONE DEL SERVIZIO DI NEWSLETTER

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Traccia di soluzione dell esercizio del 25/1/2005

FIRESHOP.NET. Gestione Lotti & Matricole.

CERTIFICATI DIGITALI. Manuale Utente

Organizzazione degli archivi

SOMMARIO... 3 INTRODUZIONE...

C A T A L O G O. Catalogo del Sistema Bibliotecario Padovano. Gruppo Lavoro per il Coordinamento dei Corsi all Utenza

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Esercitazione di Basi di Dati

Spazio Commerciale. Le tue vendite, il nostro successo. Manuale Operativo. Guida inserimento articoli tramite Area di amministrazione.

Manuale Gestore. STWS Web Energy Control - Servizio di telelettura sul WEB

Introduzione Accesso alla procedura online Creazione e comunicazione delle Edizioni dei percorsi formativi... 4

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

Gestione degli appelli e verbalizzazione degli esami online GUIDA DOCENTI. (versione 1.0 del )

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Scheda operativa Versione rif c00. Libro Inventari

Compilatore risorse display grafico LCD serie IEC-line

Studente: SANTORO MC. Matricola : 528

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

Archivio CD. Fondamenti di Programmazione

MANUALE D USO DELLA PIATTAFORMA ITCMS

Relazioni tra tabelle

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

MANUALE D USO DELL E-COMMERCE. Versione avanzata

Università degli Studi di Messina

Al giorno d oggi, i sistemi per la gestione di database

MODULO 5 ACCESS Basi di dati. Lezione 4

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

2. LOGIN E RECUPERO DATI DI ACCESSO

Manuale d uso per la raccolta: Sicurezza degli impianti di utenza a gas - Postcontatore

Guida Compilazione Piani di Studio on-line

MANUALE ESSE3 Gestione Registro delle lezioni

I Sistemi Informativi

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Appunti sulla Macchina di Turing. Macchina di Turing

Funzioni di Trasferimento Movimenti

MODULO 5 Appunti ACCESS - Basi di dati

La rubrica degli indirizzi di posta elettronica associati al dominio scuole.piemonte.it

Database 1 biblioteca universitaria. Testo del quesito

1. Le macro in Access 2000/2003

Corso di Informatica

Progettazione e realizzazione di un applicativo Web Annunci Immobiliari

Gestione delle Cartelle dei Messaggi di Posta Elettronica

Manuale Terminal Manager 2.0

Tipi di utente Pagina di Accesso BUW prevede due tipi di utente

DENUNCE EDILCONNECT GUIDA COMPILAZIONE

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

TV Serial Cataloger. Il catalogo degli episodi deve godere delle seguenti proprietà:

Manuale di realizzazione dei modelli di documento

Gestione del file system

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Guida alla. Gestione del Catalogo. per le Imprese

Product Shipping Cost Guida d'installazione ed Utilizzo

DIPARTIMENTO DI SCIENZE DEL FARMACO. Prenotazione degli Appelli d esame Online. Guida Studenti VOL. Verbalizzazione OnLine.

SCRUTINIO WEB MANUALE D USO. Scrutinio Web. Manuale d uso - Docente. Versione del Pagina 1 di 12

Servizio Tirocini. Facoltà di Psicologia. A cura dell Ufficio Tirocini

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Funzioni in C. Violetta Lonati

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

Prova Finale di Livello Base Compito n.21

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

Raggruppamenti Conti Movimenti

per interventi strutturali di rafforzamento locale o di miglioramento sismico, - art. 2, comma 1, lettere b) e c) -

Introduzione a Dev-C++

Amministrazione gruppi (Comunità)

Transcript:

Appelli di Giugno, Luglio e Settembre 2004 MP3 Laurea Triennale in Comunicazione Digitale Laboratorio di Informatica Generale 1 Descrizione Il progetto consiste nel realizzare un programma per gestire la catalogazione di una serie di file MP3 e conseguentemente la ricerca all interno del catagolo costruito. Per chi non lo sapesse, l MP3 è un formato di file audio. Oltre che dall alta qualità di riproduzione dei brani memorizzati in questo formato e dall elevato indice di compressione, il formato MP3 è anche caratterizzato dalla possibilità di inserire all interno del brano informazioni relative al brano stesso. Proprio queste informazioni aggiuntive saranno l oggetto del progetto. Nel nostro caso le informazioni che considereremo caratterizzanti per un brano sono esclusivamente: titolo, artista, titolo dell album da cui è tratto il brano, numero di tracce all interno dell album, anno di uscita dell album e genere del brano. Pertanto a partire da un insieme di file MP3 il programma dovrà essere in grado di costruire un catalogo contenente le informazioni caratterizzanti i brani a disposizione. 2 Struttura del Catalogo Il catalogo degli MP3 gode delle seguenti proprietà: deve essere permanente, cioè quando si esce dal programma il catalogo non viene perso, deve essere ordinabile, su richiesta, per artisti, album, numero di traccia e titolo del brano; Su disco ogni singola riga del catalogo si riferisce ad un brano mp3 e conterrà i seguenti dati (rigorosamente in quest ordine e tutti in formato testuale): una stringa, rappresentante il nome dell artista o del gruppo che interpreta il brano;

una stringa, rappresentante il titolo del brano; una stringa, rappresentante il titolo dell album da cui è tratto il brano; un intero compreso tra 1900 e 2100, rappresentante l anno in cui è stato prodotto l album; un intero compreso tra 1 e 30, rappresentante la traccia del CD a cui corrisponde il brano; e una stringa, rappresentante il genere musicale di appartenenza del brano. Le singole informazioni contenute in una generica riga del file sono separate tra loro dal carattere di barra verticale ( ). La seguente riga è un esempio di riga che può essere contenuta nel file: Eurythmics Sex Crime 1984 for the Love of Big Brother 1984 2 Rock Notate che, potenzialmente, le stringhe presenti sul file non hanno limite in lunghezza e non viene usata nessuna convenzione per i titoli. 3 Classi da Realizzare È obbligatorio realizzare in Java il programma descritto nelle sezioni precedenti utilizzando le seguenti classi: Song Descrive un file MP3 in termini delle informazioni che lo caratterizzano: titolo, artista, album, traccia, anno e genere. La classe implementa l interfaccia Comparable per semplificare l ordinamento del catalogo. Attributi private String title: variabile di istanza contenente il titolo del brano; private String artist: variabile di istanza contenente il nome dell artista che ha interpretato il brano; private String album: variabile di istanza contenente il titolo dell album da cui è tratto il brano; private int track: variabile di istanza contenente la posizione del brano all interno del CD da cui è tratto; private int year: variabile di istanza contenente l anno di pubblicazione dell album da cui è tratto il brano; private String genre: variabile di istanza contenente il riferimento al genere di musica del brano, ad esempio: jazz, pop, raggae, metal e così via.

Notare che per poter accedere agli attributi di Song, definiti (giustamente) come privati, occorrerà definire i classici metodi accessori di set e get anche se non specificati, ad es. dovrete definire "public void settrack(int t)" e "public int get- Track()" per manipolare la traccia di una canzone. Metodi e Costruttori Pubblici DB Song(String t, String a, String l, int n, int y, String g): costruttore che interpreta i parametri come le informazioni caratterizzanti un brano; public String tostring(): metodo che crea e ritorna una stringa rapresentante la canzone; public int compareto(song a): metodo che confronta il brano corrente (this) con il brano passato come parametro (a). Il confronto è basato su: nome artista, titolo album, numero di traccia e titolo del brano; perciò i due brani sono uguali ed il metodo ritorna zero se e solo se sono interpretati dallo stesso artista, sono tratti dallo stesso album, hanno stesso numero di traccia e hanno lo stesso titolo. Per il resto il confronto è lessicografico (similarmente al dizionario), se i due brani sono interpretati dallo stesso artista si passa a confrontare il titolo dell album, se anche questo è uguale si confronta il numero di traccia ed infine il titolo del brano, nel momento in cui uno degli attributi risulta diverso il metodo ritornerà -1 se l attributo di this è minore del corrispondente attributo di a, 1 altrimenti. Ad esempio, considerando il due brani: U2 With or Without You The Joshua Tree 1987 3 Rock U2 Exit The JOSHUA Tree 1987 10 Rock il primo è rappresentato dall oggetto this mentre il secondo è rappresentato dall oggetto a, allora la chiamata: ritornerà -1. this.compareto(a); Notare che "The Joshua Tree" e "The JOSHUA Tree" sono considerati uguali, il confronto deve essere fatto trascurando il numero di spazi che separano le parole che compongono i vari titoli e indipendentemente dall uso di minuscole e maiscole nelle parole stesse. La classe DB rappresenta il cuore del catalogo e dovrà permettere sia la costruzione del catalogo, che la sua manutenzione ed interrogazione. Gli mp3 vengono aggiunti in testa al catalogo, senza mantenere un ordine, gli elementi già presenti nel catalogo vengono spostati in avanti di una posizione. Attributi

private int nsongs: variabile di istanza contenente il numero di canzoni presenti in catalogo; private Song[] songs: variabile di istanza contenente le canzoni presenti in catalogo, songs è realizzato tramite un array ed avrà dimensione fissata pari a 1000 elementi; private String filename: variabile di istanza contenente il nome del file su cui viene salvato e da cui viene ripristinato il catalogo. Metodi e Costruttori Pubblici DB(String fn): costruttore che inizializza il catalogo, fn è il nome del file su disco contenente il catalogo, se fn non è vuoto il contenuto del file corrispondente viene usato per inizializzare lo stato del catalogo (le variabili di istanza nsongs e songs); public String tostring(): metodo che crea e ritorna una stringa contenente l intero catalogo; public void write(): metodo che scrive il contenuto del catalogo nel file corrispondente, cancellando il contenuto precedente; public void reload(): metodo che ricarica dal file i contenuti del catalogo nell oggetto; public Object clone(): metodo che crea una copia dell oggetto e la ritorna; public void backup(string): metodo che effettua una copia di backup del catalogo, salvandola in un file il cui nome è specificato nella stringa passata come argomento; public Song[] query(query q): metodo pubblico che estrae dal catalogo tutte le canzoni che verificano la ricerca q; il metodo sfrutta il late binding per realizzare il confronto (vedi metodo match(song) della classe Query introdotta successivamente). Il risultato è un array contente i brani selezionati; public void squeeze(): metodo pubblico che comprime il catalogo eliminando i brani potenzialmente doppi cioè quei brani che hanno stesso autore, titolo ed appartengono allo stesso album, al solito trascurando spazi e differenze maiuscolo/minuscolo; ad esempio, i brani: U2 With or Without You The Joshua Tree 1987 3 Rock U2 With or Without You The JOSHUA Tree 1987 5 Rock sono da considerarsi lo stesso brano (notare che il numero di traccia e l anno di pubblicazione sono ininfluenti), il primo brano incontrato deve essere mantenuto in catalogo;

public void sort(): metodo pubblico che ordina il catalogo per artisti, album e titolo brano. Notare che per definizione Song implementa l interfaccia Comparable è pertanto possibile sfruttare i metodi della classe Arrays per ordinare in modo agevole il catalogo. public void squeezespaces(): metodo pubblico che permette di eliminare gli spazi e tabulazioni multipli (cioè adiacenti), rimpiazzare i caratteri di tabulazione con uno spazio, e rimuovere gli spazi inutili all inizio o alla fine dei titoli degli album e dei brani presenti in catalogo. public void capitalizetitles(): metodo pubblico che formatta i titoli dei brani e degli album in catalogo in modo che ogni parola abbia l iniziale (e solo l iniziale) maiuscola. public void addsong(song s): metodo pubblico che aggiunge al catalogo presente in memoria il brano mp3 specificato come parametro, SENZA aggiornare la versione salvata su disco. Il nuovo brano va inserito all inizio del catalogo senza rispettare un eventuale ordinamento del catalogo stesso; l inserimento comporterà lo spostamento dei dati contenuti nel catalogo; public void removesong(song s): metodo pubblico che cerca e rimuove dal catalogo tutte le occorrenze del brano passato come parametro; l uguaglianza tra il brano passato come parametro e i brani contenuti nel catalogo è verificata con gli stessi criteri usati per il metodo squeeze(). Query La classe astratta Query rappresenta una generica ricerca all interno del catalogo. Fornisce la struttura di base per richieste polimorfe sul catalogo. abstract boolean match(song s): metodo astratto che verifica che la canzone s rispetti i criteri di ricerca selezionati. ArtistQuery La classe ArtistQuery estende la classe Query. Rappresenta la ricerca per i brani in catalogo attribuiti ad un certo artista. private String artist: variabile di istanza contenente il nome dell artista di cui si vuole estrarre i brani dal catalogo. ArtistQuery(String a): costruttore della query, si limita ad inizializzare i campi privati della classe. boolean match(song s): controlla se la canzone s è interpretata dall artista specificato dalla variabile di istanza artist; ritornerà true se è effettivamente interpretata da tale artista, false altrimenti.

TrackAndAlbumQuery La classe TrackAndAlbumQuery estende la classe Query. Rappresenta la ricerca di un brano in catalogo che sia presente in un certo album ed abbia una specifica posizione in quell album. private String album: variabile di istanza contenente il nome dell album di cui si sta cercando una traccia. private int track: variabile di istanza contenente il numero di traccia a cui corrisponde il brano cercato. TrackAndAlbumQuery(String l, int n): costruttore della query, si limita ad inizializzare, di conseguenza, i campi privati della classe. boolean match(song s): controlla se la canzone s appartiene all album specificato dalla variabile di istanza album ed è la traccia di posizione specificata dalla variabile di istanza track; ritornerà true se è effettivamente il brano cercato, false altrimenti. TitleSubstringQuery La classe TitleSubstringQuery estende la classe Query. Rappresenta la ricerca, in catalogo, dei brani i cui titoli contengono la stringa specificata. Ad esempio, dato il catalogo: U2 With or Without You The Joshua Tree 1987 3 Rock Oldfield, Mike Moonlight Shadow Crises 1982 2 Ambient Springsteen, Bruce I m on Fire Born in the U.S.A. 1984 6 Rock Police, The Walking on the Moon Every Breath You Take 2003 4 Pop Scorpions, The Crossfire Love at First Sting 1984 8 Heavy Metal se definiamo una query per ricercare i brani contenenti la parola "Fire" otterremo: Springsteen, Bruce I m on Fire Born in the U.S.A. 1984 6 Rock Scorpions, The Crossfire Love at First Sting 1984 8 Heavy Metal Fate attenzione che la stringa deve essere trovata indipendentemente dagli spazi nel titolo, dalle differenze maiuscolo/minuscolo ed ovviamente dal fatto che sia parte di una stringa più grande. private String substring: variabile di istanza contenente la stringa che si vuole cercare nei titoli dei brani presenti nel catalogo. TitleSubstringQuery(String s): costruttore della query, si limita ad inizializzare, di conseguenza, i campi privati della classe. boolean match(song s): controlla se la stringa contenuta nella variabile di istanza substring è presente nel titolo della canzone s; ritornerà true se è effettivamente il brano cercato, false altrimenti.

BeforeYearQuery La classe BeforeYearQuery estende la classe Query. Rappresenta la ricerca, in catalogo, dei brani prodotti prima dell anno specificato indipendentemente dal loro autore. private int year: variabile di istanza contenente l anno interessato dalla ricerca. BeforeYearQuery(int y): costruttore della query, si limita ad inizializzare, di conseguenza, i campi privati della classe. boolean match(song s): controlla se la canzone s è stata prodotta prima dell anno specificato dalla variabile di istanza year; ritornerà true se è effettivamente il brano cercato, false altrimenti. DJ La classe DJ, tramite un menù testuale permette di effettuare le seguenti operazioni, tramite una o più chiamate ai metodi delle classi sopra descritte: creazione di un nuovo catalogo o ripristino di un catalogo salvato su disco; aggiunta di un brano al catalogo; rimozione di un brano dal catalogo; salvataggio del contenuto corrente del catalogo su disco; ricarica del contenuto del catalogo da disco, con conseguente eliminazione del contenuto corrente; visualizzazione dei contenuti del catalogo; creazione di una copia del catalogo in un altro file di testo il cui nome viene specificato dall utente; ricerca brani all interno del catalogo in base al nome dell artista, a parte di testo nel titolo, all accoppiata album e traccia, e in base all anno di produzione; ordinamento del catalogo; pulizia del catalogo; la pulizia consiste nell eliminare i doppioni dal catalogo, nel capitalizzare correttamente i titoli degli album e dei brani ed infine nell eliminare gli spazi superflui dai titoli stessi (il catalogo non viene ordinato). A parte quanto espressamente richiesto, è lasciata piena libertà sull implementazione delle singole classi e sull eventuale introduzione di altre classi, a patto di seguire le regole del paradigma ad oggetti ed i principi di buona programmazione.

Non è richiesto e non verrà valutato l utilizzo di particolari modalità grafiche di visualizzazione: è sufficiente una qualunque modalità di visualizzazione basata sull uso dei caratteri. Non è richiesta l introduzione di nuove eccezioni definite dall utente, mentre ci si aspetta il trattamento, nel modo migliore, delle eccezioni sollevate durante l esecuzione ed introdotte dai package utilizzati. È invece espressamente richiesto di non utilizzare package non standard di Java (si possono quindi utilizzare java.util, java.io e così via), con l unica eccezione del package prog.io incluso nel libro di testo per gestire l input da tastiera e l output a video e di rispettare l interfaccia fornita. 4 Modalità di Consegna Il progetto deve essere svolto a gruppi di al massimo tre persone che intendono sostenere l intero esame di Informatica Generale e Laboratorio negli appelli di Giugno, Luglio o Settembre 2004, e deve essere consegnato entro mezzanotte di lunedì 14 giugno 2004, utilizzando il sito di sottoposizione delle esercitazioni (all indirizzo http://infogen.dsi.unimi.it). Per poter effettuare la sottoposizione è necessario autenticarsi utilizzando un nome di login e una password. Nella pagina principale del sito stesso è spiegato come ottenere questi dati. Nel caso il progetto venga svolto da più di una persona, dovrà essere fatta in ogni caso una sola sottoposizione, indicando chiaramente in un commento all inizio dei sorgenti consegnati nome, cognome e matricola dei vari componenti del gruppo. Dovranno essere consegnati tutti i sorgenti Java che permettano al programma di essere eseguito correttamente, compressi in un archivio di tipo ZIP che estragga i file nella directory in cui si trova l archivio stesso (altri tipi di sottoposizioni verranno automaticamente rifiutate dal sito). Nell archivio dovrà anche essere accluso un breve documento in formato txt o rtf in cui: verrà descritto il modo in cui interfacciarsi con il programma; saranno illustrate le principali scelte implementative e le strategie utilizzate per svolgere il progetto Il sistema rifiuterà automaticamente le sottoposizioni i cui sorgenti contengano errori rilevati in fase di compilazione. È inoltre richiesto di consegnare una copia cartacea della stampa del codice sorgente prodotto in portineria del DSI indicando chiaramente nome, cognome e numero di matricola di tutti i componenti del gruppo, nonchè il turno e il docente di riferimento. 5 Valutazione Durante la prova orale con i singoli studenti saranno discusse le modalità implementative adottate e la padronanza di alcuni dei concetti necessari per preparare il progetto e/o spiegati a lezione. La valutazione del progetto sarà fatta in base alla:

conformità dell implementazione scelta per risolvere il problema con il paradigma di programmazione a oggetti; conformità del codice presentato alle regole di buona programmazione; adeguatezza del manuale utente presentato a descrivere il modo in cui un utente può utilizzare il programma; assenza di errori nel programma; usabilità del programma; Durante l appello di febbraio si sono verificati numerosi fenomeni di copiatura, che ci hanno costretto ad ammettere all esame un numero molto ridotto di studenti. Anche senza fare appello al buon senso e al codice d onore, è evidente a tutti che situazioni di questo tipo sono sgradevoli sia per i docenti che per gli studenti. Ovviamente non mancheremo di verificare di nuovo, in modo minuzioso, l eventuale ripetersi delle suddette, e di trarne le ovvie conseguenze. Walter Cazzola Dipartimento di Informatica e Comunicazione Via Comelico 39/41 20135 Milano Stanza S233 Tel. +39.010.353.6637 e-mail: cazzola@dico.unimi.it Dario Malchiodi Dipartimento di Scienze dell Informazione Via Comelico 39/41 20135 Milano Stanza T304 Tel. +39.02.503.16338 e-mail: malchiodi@dsi.unimi.it