Prof. Stefano Guerrini
Dott. Ivano Salvo
Sono disponibili le Sono anche disponibli alcuni Notare le date di consegna. |
Il progetto consiste nello sviluppo di un interprete per un semplice
linguaggio funzionale - una versione molto semplificata del linguaggio LISP.
Il progetto è suddiviso in moduli che, se sviluppati nell'ordine proposto,
porteranno gradualmente all'implementazione dell'intero interprete.
Le specifiche del progetto sono disponibili in formato pdf (un programma per la
lettura di pdf è Acrobat Reader).
NB: I file sono aggiornati con le correzioni degli errori
individuati al 20/06/03.
Chiunque dovesse trovare errori nei testi è pregato di segnalarlo al docente.
I file con i testi potranno essere aggiornati con le correzioni. Le modifiche di rilievo
- ovvero, le modifiche/correzioni che hanno impatto sulla implementazione dei moduli -
saranno opportunamene evidenziate anche sul sito.
I file con le definizioni principali ed i main per la verifica dei moduli:
Chiunque dovesse trovare errori nei testi è pregato di segnalarlo al docente.
I file con i sorgenti potranno essere aggiornati. Le modifiche di rilievo
- ovvero, le modifiche/correzioni che hanno impatto sulla implementazione dei moduli -
saranno opportunamene evidenziate anche sul sito.
Le modalità di consegna saranno comuunicate sul sito ai primi di maggio.
Le scadenze (inderogabili) per la consegna dei moduli sono:
modulo | entro il |
I (TS): Le tavole dei simboli | 23/05/03 |
II (AL): L'analizzatore lessicale | 23/05/03 |
III (AS): L'analizzatore sintattico | 27/07/03 |
IV (PR): Le funzioni di stampa | 27/07/03 |
V (ST): Lo stack | 21/09/03 |
VI (ST): La valutazione delle espressioni | 21/09/03 |
VII (GC): Il garbage collector | 21/09/03 |
Come riportato in dettagio nella descrizione del progetto, tutti i moduli saranno valutati indipendentemente. (Per la verifica di alcuni moduli serviranno anche i moduli precedentemente sviluppati. Se tali moduli non sono stati consegnati o non sono funzionanti, verranno usati usati dei moduli sviluppati dal docente.)
I moduli non sono tutti della stessa difficoltà. Per questo motivo il punteggio che si può ottenere dall'implementazione corretta di un modulo dipende dal modulo.
modulo | voto |
I (TS): Le tavole dei simboli | 3 |
II (AL): L'analizzatore lessicale | 5 |
III (AS): L'analizzatore sintattico | 8 |
IV (PR): Le funzioni di stampa | 3 |
V (ST): Lo stack | 5 |
VI (EV): La valutazione delle espressioni | 8 |
VII (GC): Il garbage collector | 4 |
Totale | 36 |
Come si può notare, il punteggio totale ottenibile implementando correttamente tutti i moduli è di 36 punti.
Un voto complessivo tra 30 e 32 equivale comunque a 30/30esimi. Per ottenere la lode occorre arrivare almeno a 33. Se il totale supera 33, i voti in più (rispetto a 33) potranno essere utilizzati per ottenere la lode a Programmazione II.
Si osservi che per raggiungere la sufficienza (18/30esimi) occorre sviluppare almeno uno dei modui più difficili - III(AS) o VI(EV) - o sviluppare tutti gli altri 5 moduli.
Requisito minimo per poter valutare un programma è che sia compilabile insieme con il programma di verifica fornito e che esegua correttamente alcuni dei test proposti.
Altri fattori che influiranno sulla valutazione sono la documentazione del codice (il codice deve essere oppla documentazione del codice (i moduli devono essere esaurientemente commentati) e lo stile di scrittura (il codice deve essere opportunamente indentato).
Si ricorda che il progetto di laboratorio è un lavoro individuale. Per verificare la similitudine dei moduli inviati si userà un apposito tool automatico: moduli chiaramente copiati saranno annullati.