Home » Archivo » Archvio 2013 » LINGUAGGI DI PROGRAMMAZIONE - 2013/2014

Laurea Magistrale

Salta il menu di secondo livello

LINGUAGGI DI PROGRAMMAZIONE - 10 CFU - A.A. 2013/2014

Insegnante

Prof. Gilberto File'

Periodo

I Anno - 1 Trimestre | 01/10/2013 - 07/12/2013

Ore: 72 (18 esercitazione, 54 lezione)

Torna su ▲

Prerequisiti

Conoscenze approfondite dei linguaggi Java e C++.

Conoscenze e abilità da acquisire

Conoscere un linguaggio funzionale (ML, Haskell). Apprezzare le differenze tra linguaggi funzionali ed imperativi. Apprezzare l'importanza dei tipi. Capire la gestione dei dati durante l'esecuzione di un programma (funzionale ed imperativo) e le sue implicazioni rispetto alla compilazione del linguaggio. Conoscere i temi principali che hanno segnato l'evoluzione dei linguaggi di programmazione dal 1950 a Java. La capacità di costruire un compilatore ed un interprete.

Modalità di esame

L'esame consiste di una prova scritta ed una orale. Nella prova scritta ci sono domande pratiche e domande teoriche. L'orale è una discussione sul progetto.

Criteri di valutazione

La valutazione è una misura dell'assimilazione del materiale del corso da parte dello studente. Gli esercizi scritti pratici mostrano la capacità dello studente di applicare le nozioni apprese a problemi sempre diversi. Le domande teoriche mostrano la profondità e l'ampiezza dell'apprendimento dello studente. Per ultimo, l'esame orale mostra la comprensione da parte dello studente del progetto che mette in gioco diversi concetti rilevanti insegnati nel corso.

contenuti

I principali argomenti del corso sono i seguenti:
1) Un linguaggio funzionale (ML o Haskell): sintassi, esercizi, ricorsione, inferenza dei tipi, esecuzione eager e lazy;
2)Vari tipi di polimorfismo: parametrico, sovraccaricamento e di sottotipo;
3)Gestione run-time dei dati: blocchi, funzioni, ricorsione, scoping statico e dinamico, eccezioni;
4) Breve storia dei linguaggi orientati agli oggetti: Simula, Smalltalk, C++ e Java;
5) Pro e contro di C++;
6) Java a confronto con C++;
7)Il progetto consiste nella realizzazione di un compilatore per un semplice linguaggio funzionale: analisi lessicale, sintattica, generazione di codice intermedio, compilazione e interpretazione della traduzione finale.

Attività di apprendimento previste e metodologie di insegnamento

Il corso consiste fondamentalmente di lezioni tradizionali in aula. Per l'apprendimento è rilevante che ogni settimana una lezione di 2 ore sia organizzata come segue: nella prima ora gli studenti cercano di risolvere alcuni esercizi proposti dal docente sul materiale svolto nella settimana precedente. Nella seconda ora gli esercizi sono corretti alla lavagna con una forte interazione tra studenti e docente. Infine il progetto viene presentato agli studenti durante lo svolgimento del corso (in 5 parti) attraverso una documento ed alcune lezioni dedicate all'argomento. Inoltre il corso usa un sistema di elearning, basato sulla piattaforma Moodle, che consente un'interazione libera docente-studenti e anche studenti-studenti.

Eventuali indicazioni sui materiali di studio

Le slide usate a lezione sono tutte a disposizione degli studenti sul sito elearning del corso. Alcuni articoli, menzionati durante il corso, vengono resi disponibili sull'elearning. Lo stesso vale per gli esercizi svolti ogni settimana nella lezione speciale descritta in precedenza e per il documento del progetto. Anche esami passati vengono resi disponibili sul sito di elearning.
Oltre a questo il corso segue un testo di riferimento.

Testi di riferimento

Torna su ▲