Presentazione

Organizzazione della Didattica

DM270
INFORMATICA ORD. 2014

Linguaggi di programmazione

10

Corsi comuni

 

Frontali Esercizi Laboratorio Studio Individuale
ORE: 54 24 0 170

Periodo

AnnoPeriodo
I anno1 semestre

Frequenza

Facoltativa

Erogazione

Convenzionale

Lingua

Italiano

Calendario Attività Didattiche

InizioFine
01/10/201424/01/2015

Tipologia

TipologiaAmbitoSSDCFU
caratterizzanteDiscipline informaticheINF/0110


Responsabile Insegnamento

ResponsabileSSDStruttura
Prof. FILE' GILBERTOINF/01Dipartimento di Matematica

Altri Docenti

DocenteCoperturaSSDStruttura
Prof. FILE' GILBERTOAffidamentoINF/01Dipartimento di Matematica
Prof. FILE' GILBERTOAffidamentoINF/01Dipartimento di Matematica

Attività di Supporto alla Didattica

Non previste

Bollettino

Conoscenze approfondite dei linguaggi Java e C++.

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.

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.

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.

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.

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.

John Mitchell, Concepts in Programming Languages. : Cambridge University Press, 2003

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.