Linguaggi (2017/2018)

Codice insegnamento
4S02727
Docente
Isabella Mastroeni
Coordinatore
Isabella Mastroeni
crediti
6
Settore disciplinare
INF/01 - INFORMATICA
Lingua di erogazione
Italiano
Periodo
I sem. dal 2-ott-2017 al 31-gen-2018.

Orario lezioni

Vai all'orario delle lezioni

Obiettivi formativi

Il corso si propone di fornire competenze specifiche nell'ambito dei linguaggi di programmazione. In particolare, il corso fornisce competenze necessarie per operare negli ambiti di progettazione, sviluppo e manutenzione di sistemi software a partire dalla scelta del giusto linguaggio di programmazione in funzione delle finalità e delle caratteristiche di ciò che si vuole sviluppare. Al termine dell'insegnamento quindi, lo studente dovrà dimostrare di: avere conoscenze e capacità di studio e comprensione di nuovi linguaggi di programmazione; saper applicare le sue conoscenze e capacità di comprensione in maniera da saper scegliere il linguaggio di programmazione in funzione di ciò che deve sviluppare; di aver sviluppato le competenze necessarie per intraprendere studi successivi con un alto grado di autonomia.

Programma

Macchine virtuali: interpreti e compilatori.
Descrizione di un linguaggio di programmazione: sintassi: grammatiche non contestuali. Semantica operazionale strutturata.
Gestione della memoria: regole di visibilità, funzioni e procedure, passaggio di parametri, stack record di attivazione, heap.
Controllo: strutturazione ed astrazione, eccezioni.
Dati e tipi: tipi di dato, tipi di base e composti, sistema dei tipi, inferenza di tipo e polimorfismo, garbage collection.
Esempi di paradigmi di programmazione.

Il corso include anche un laboratorio in cui si imparerà ad usare il K-framework come strumento per l'implementazione di semantiche operazionali di linguaggi di programmazione.

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
Robert W. Sebesta Concepts of Programming Languages (10th Edition) (Edizione 10) Pearson 2013 0131395319
Maurizio Gabbrielli, Simone Martini Linguaggi di programmazione: principi e paradigmi (Edizione 2) McGraw Hill 2011 88-386-626
I. Mastroeni e C. Priami Semantica Operazionale: Strumenti e Applicazioni CEDAM 1999 881322138X

Modalità d'esame

Esame scritto con orale facoltativo (che diventa obbligatorio per ottenere/confermare un voto allo scritto maggiore di 26/30). La valutazione finale è la media delle valutazioni prese nelle due prove.
Obiettivo della prova scritta è quello di accertare una adeguata comprensione dei contenuti e la capacità di rielaborare tali contenuti. Viene inoltre accertata una sufficiente capacità di ragionamento formale sulla semantica dei linguaggi di programmazione attraverso la risoluzione di esercizi.
Obiettivo della prova orale è quello di accertare una avanzata comprensione dei contenuti che permette una analisi critica e una rielaborazione dei concetti e dei risultati studiati, anche mediante l’accertamento della conoscenza di teoremi e dimostrazioni.

Il solo esame orale può essere sostituito da un progetto da concordare con il docente e che può essere fatto in gruppo di massimo due studenti. Tale progetto va poi presentato (con slide) e corredato da una relazione scritta che descrive il lavoro svolto.

Statistiche per i requisiti di trasparenza (Attuazione Art. 2 del D.M. 31/10/2007, n. 544)

I dati relativi all'AA 2017/2018 non sono ancora disponibili