Linguaggi di programmazione (2007/2008)

Corso a esaurimento

Codice insegnamento
4S00042
Docente
Maria Paola Bonacina
crediti
5
Altri corsi di studio in cui è offerto
Settore disciplinare
INF/01 - INFORMATICA
Lingua di erogazione
Italiano
Periodo
1° Q dal 3-ott-2007 al 4-dic-2007.
Pagina Web
http://profs.sci.univr.it/~bonacina/teachingUniVR/LingProg2007-08.html

Orario lezioni

1° Q
Giorno Ora Tipo Luogo Note
lunedì 11.30 - 13.30 lezione Aula B  
martedì 13.30 - 14.30 lezione Aula B  
venerdì 11.30 - 13.30 lezione Aula B  

Obiettivi formativi

Il corso insegna i concetti fondamentali dei linguaggi di programmazione, quali funzioni, tipi, gestione della memoria e controllo. L'obbiettivo è dare agli studenti una comprensione approfondita dei problemi che si incontrano e dei compromessi che si adottano nella progettazione di linguaggi di programmazione. Questa comprensione permette agli studenti di cogliere vantaggi e svantaggi dei linguaggi che usano, in modo da saper valutare la scelta del linguaggio di programmazione rispetto all'applicazione che si vuole realizzare. Prerequisiti: qualche conoscenza di almeno un linguaggio di programmazione a oggetti (e.g., Java), qualche conoscenza di almeno un linguaggio di programmazione procedurale (e.g., C), qualche esperienza con semplici analisi di algoritmi e strutture di dati.

Programma

Funzioni computabili. Il capostipite dei linguaggi funzionali: cenni al linguaggio Lisp. Macchine astratte: interpreti e compilatori. Descrizione di un linguaggio di programmazione: sintassi e semantica. Semantica operazionale strutturata o semantica "naturale": sistemi di transizione. Un linguaggio misto, funzionale e procedurale: il linguaggio ML. Nozione di ambiente: nomi, tipi, inferenza di tipo e polimorfismo in ML. Gestione della memoria: regole di visibilità, funzioni e procedure, regole per il passaggio di parametri. Controllo: strutturazione ed astrazione, eccezioni in ML. Dati: astrazione e modularità, moduli in ML. Approfondimenti del paradigma orientato a oggetti (opzionale). Cenni di programmazione concorrente e distribuita in ML o Java (opzionale).

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
John C. Mitchell Concepts in Programming Languages (Edizione 1) Cambridge University Press 2003 0-521-7809 Libro di testo adottato.
Jeffrey D. Ullman Elements of ML Programming (Edizione 2) Prentice Hall 1998 0-13-79038 Libro di riferimento principale per il linguaggio ML.
Maurizio Gabbrielli, Simone Martini Linguaggi di programmazione: principi e paradigmi (Edizione 2) McGraw Hill 2011 88-386-626 Altro libro di riferimento generale.
Lawrence C. Paulson ML for the Working Programmer (Edizione 2) Cambridge University Press 1996 0-521-5654 Altro libro di riferimento per il linguaggio ML.
Guy Cousineau, Michel Mauny The functional approach to programming (Edizione 1) Cambridge University Press 1998 0-521-5768 Altro libro di riferimento per il linguaggio ML.

Modalità d'esame

Esame mediante prove parziali: questa modalità vale solo per il primo appello dopo la fine delle lezioni, ovvero per la sessione di dicembre, essendo il corso nel I quadrimestre. In questa modalità, l'esame consta di due compiti in classe di due ore ciascuno (C1 e C2). Il voto d'esame è dato da: 50% C1 + 50% C2. Passato il primo appello dopo la fine delle lezioni, le prove parziali non valgono più nulla. Chi sostiene l'esame mediante prove parziali deve iscriversi all'esame della sessione di dicembre.

Esame senza prove parziali: in questa modalità, l'esame consta di un unico compito scritto (E), di difficoltà tale da uguagliare la combinazione delle prove parziali, il cui voto determina il voto d'esame. Questa modalità vale per tutti gli appelli, incluso il primo dopo la fine delle lezioni. Tuttavia, se uno studente sostenesse le prove parziali e poi anche E, perderebbe il voto maturato con le prove parziali. In altre parole, non è permesso sostenere sia le prove parziali che E e poi scegliere il voto migliore.

Nota: il primo compito in classe (C1) si terrà lunedì 5 novembre 2007; il secondo compito in classe (C2) si terrà nella stessa data, ora e luogo dell'esame E della sessione di dicembre (naturalmente contenuto e durata di C2 ed E saranno diversi).

Registrazione: a ogni sessione la data dell'esame è la data dello scritto (E); per registrare il voto basta iscriversi allo scritto. Non è previsto il "rifiuto" del voto e tutti i voti vengono registrati. Lo studente insoddisfatto dell'andamento dell'esame può invece ritirarsi: per questo è sufficiente non consegnare C2 o E.

Regolamento: tutti gli elaborati sono individuali; è severamente vietato copiare e scambiare, passare o condividere codice. Tutti gli elaborati che mostrano di essere stati copiati ricevono voto 0, senza distinzione tra chi copia e chi fa copiare.

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

Statistiche esiti
Esiti Esami Esiti Percentuali Media voti Deviazione Standard
Positivi 80.72% 25 3
Respinti --
Assenti 18.07%
Ritirati --
Annullati 1.20%
Distribuzione degli esiti positivi
18 19 20 21 22 23 24 25 26 27 28 29 30 30 e Lode
5.9% 1.4% 2.9% 2.9% 5.9% 5.9% 8.9% 1.4% 23.8% 13.4% 11.9% 4.4% 8.9% 1.4%

Valori relativi all'AA 2007/2008 calcolati su un totale di 83 iscritti. I valori in percentuale sono arrotondati al numero intero più vicino.