Esercitazione di Linguaggi Speciali di Programmazione AA 1996-97
Gli studenti devono suddividersi in gruppi di lavoro formati
da 3-5 componenti e sviluppare una esercitazione a scelta su uno dei seguenti
temi:
1) definizione e realizzazione di un sistema per la costruzione
semiautomatica dell'orario delle lezioni di un corso di laurea
2) definizione e realizzazione di un sistema per la generazione
e l'utilizzo di alberi di decisione
3) definizione e realizzazione di un sistema per l'interfacciamento
con un archivio locale o remoto in formato compresso (zip, arj, lzh, gz,
tar, etc.)
4) (in via di definizione) esercitazione congiunta con
il corso di Documentazione Automatica: progettazione di una banca dati
e definizione e realizzazione di interfaccia alla banca dati da browser
WWW
L'esercitazione consiste nello sviluppo del sistema seguendo
un modello del processo di sviluppo a cascata (waterfall model) e nella
produzione della relativa documentazione: documento dei requisiti di sistema,
documento di progetto, codice, documento dei test eseguiti. La fase di
progettazione deve essere sviluppata tenendo conto che l'implementazione
va fatta in un linguaggio object-oriented (Java o C++). In particolare,
il linguaggio JAVA deve essere usato per la realizzazione dei temi 3 e
4.
I temi corispondono a esercitazioni di diverso livello
di difficolta` che daranno luogo a valutazioni differenti: esercizi piu`
difficili permetteranno di ottenere una valutazione piu` alta all'esame.
I livelli di difficolta` delle esercitazioni in ordine
dalla piu` semplice alla piu` complessa sono i seguenti: 3, 2, 1, 4. Questi
livelli corrispondono a voti di partenza all'esame orale che potranno essere
aumentati fino a 6 punti a seconda dell'andamento dell'esame (NB: qualunque
sia il voto di partenza, e` sempre possibile non superare l'esame orale
e venire repsinti) : 3 --- 20:22, 2 --- 22:25, 1 --- 24:27, 4 --- 24:27.
L'esercitazione 1 puo` essere sviluppata in piu` livelli
di difficolta`: orario per un unico corso di laurea, orario per tutti i
corsi di una facolta`, orario completo per tutti i corsi dell'universita`.
Tema 1
Un sistema per la costruzione semiautomatica dell'orario
settimanale delle lezioni di un corso di laurea deve considerare i seguenti
fattori:
- il numero di ore settimanali di ciascun corso;
- l'anno in cui e` tenuto il corso (primo, secondo, etc.)
in modo da evitare sovrapposizioni tra corsi che si tengono nello stesso
semestre;
- la capienza delle aule;
- il numero di studenti previsto per ogni corso;
- nonche` preferenze/impedimenti dei docenti;
Non e` richiesto che l'algoritmo implementato per la costruzione
dell'orario sia efficiente e/o ottimale. Il sistema e` semiautomatico nel
senso che deve fornire un orario parziale con una lista di impedimenti,
corsi che non sono stati inseriti nell'orario a causa di conflitti nelle
esigenze del corso (mancanze di aule sufficientemente capienti, insoddisfacibilita`
di preferenze del docente, etc.)
Tema 2
Un albero di decisione e` una struttura dati che permette
di prendere delle decisioni analizzando in modo guidato i valori di un
insieme di caratteristiche. I problemi che si possono affrontare sono molteplici
e sono generalmente conosciuti come problemi di classificazione. Un problema
di classificazione puo` essere definito nel seguente modo:
dato un oggetto descritto per mezzo di un insieme di caratteristiche,
associarlo ad una categoria (classe) scelta in un insieme di categorie
predefinito.
Un albero di decisione e` il meccanismo che permette di
effettuare la scelta di una categoria sulla base dei valori delle caratteristiche
descrittive. Piu` formalmente, un albero di decisione e` una struttura
dati ad albero in cui i nodi foglia rappresentano una classe, mentre i
nodi interni rappresentano delle decisioni. Le decisioni sono dei test
sui valori di una caratteristica: questi possono essere binari (dando cosi`
luogo ad alberi di decisione binari, in cui ogni nodo interno ha esattamente
due figli) oppure a molti valori (generando alberi generici, in cui ogni
nodo interno puo` avere piu` figli). La costruzione di un albero di decisione
avviene analizzando un insieme di coppie oggetto/classe (detti esempi di
apprendimento) e identificando ad ogni passo un test che permetta di suddividere
nel miglior modo possibile l'insieme di apprendimento in sottoinsieme che
contengono solo oggetto di una unica classe.
Tema 3
L'idea e` quella di realizzare un sistema che presenti
in modo user-friendly il contenuto di un archivio (alla maniera di Winzip,
per esempio) e permetta l'estrazione e la visualizzazione di un elemento
dell'archivio. Il formato degli archivi e` compresso per mezzo di algoritmi
di larga diffusione, quali zip, tar, gzip, etc. Non e` richiesta l'implementazione
di questi algoritmi, in quanto e` sufficiente interfacciarsi con programmi
esistenti per tutte le operazioni necessarie. La possibilita` di accedere
e visualizzare il contenuto di archivi remoti, tramite browser WWW, per
intenderci, permetterebbe di verificare il contenuto di un archivio senza
doverlo scaricare localmente (cosa che richiede tempo per archivi di grosse
dimensioni), e di scaricare localmente solo gli elementi dell'archivio
di interesse. Si pensi, per esempio, al file di descrizione di un pacchetto
applicativo distribuito in un file compresso di grosse dimensioni: leggendo
la descrizione, generalmente ridotta, si puo` stabilire il reale interesse
per il pacchetto applicativo, e decidere quindi in un secondo tempo il
trasferimento dell'archivio.
Tema 4
La banca dati da progettare e` descritta in Testo
Esercitazione Documentazione Automatica.
L'interfaccia grafica verso la banca dati deve permettere l'esecuzione di interrogazioni
predefinite e di interrogazioni definibili dall'utente.
Inoltre, puo` essere prevista una interfaccia per la modifica delle informazioni memorizzate nella
banca dati.
|