Informazioni Generali
L'insegnamento Programmazione 2 e' un insegnamento del Corso di Laurea in Informatica (Classe L31, DM 270/04). Il corso e' strutturato in un unico modulo didattico e si svolge nel primo semestre nelle aule del Polo Didattico Fibonacci, con il seguente orario:- Lunedi: 16:00 -- 18:00 aula A.
- Martedi: 16:00 -- 18:00 aula B.
- Mercoledi: 11:00 -- 13:00 aula B ;
Il corso di programmazione si propone di illustrare le caratteristiche principali dei linguaggi di programmazione e le loro stritture di implementazione. La strategia adottata nel corso prevede l'utilizzo di tecniche basate sulla semantica operazionale strutturata come meccanismo per descrivere sia i paradigmi di programmazione che le strutture di implementazione. Infine, il corso si propone presentare e discutere le tecniche per la programmazzione a oggetti (programmazione per contratti,programmazzione concorrente) esemplificate e sperimentate utilizzando il linguaggio Java. Il corso si articola attorno a due argomenti principali.
- Programmazione orientata ad oggetti. Il nucleo del linguaggio Java: classi, oggetti, ereditarieta', astrazioni sui dati (specifica e implementazione, tecniche di verifica induttiva), astrazione mediante gerarchie, polimorfismo a' la Java. Tecniche di programmazione concorrente
- Paradigni dei linguaggi di programmazione. Strutture a run time: ambiente, memoria, heap; blocchi, sottoprogrammi, records di attivazione, pila dei records di attivazione; oggetti; interpretazione, compilazione.
La frequenza non e' obbligatoria ma e' fortemente consigliata. Il corso e' pensato ed organizzato per una frequenza attiva e continua.
Materiale Didattico
Note didattiche per la prima parte del corso: Programming Languages and Techniques, Zdancewic, Pierce, Weirich (2013) download
Numerosi libri sull'argomento sono utili da consultare per gli argomenti trattati nel corso. Non viene indicato un unico libro di testo ma diversi testi di copnsultazione per i differenti argomenti trattati nel corso. Per la parte relativa ai paradimi di programmazione e' consigliata la consultazione di- M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hill, 2006
- Michael L. Scott, Programming Language Pragmatics, Third Edition, Morgan-Kaufmann, 2009
- Peter Sestoft Programming Language Concepts, Springer, 2012
- Object-Oriented: B. Liskov (with J. Guttag), Program Development in Java: Abstraction, +Specification and Object-Oriented design, Addison-Wesley, 2000
- The art of multiprocessor programming (Cap 1-2-9), Maurice Herlihy, Nir Shavit, 2012 Elsevier
Testi di consultazione.
-
Bob Harper, Practical Foundations for Programming Languages, Draft Book, CMU, 2011. download (pdf file)
OCAML.
- Il sito web ufficiale di OCAML OCAML Site. In questo sito si trova tutta la documentazione di OCAML, i manuale e la descrizione delle librerie standard.
- Il sito uffiale per scaricare le versioni piu' recenti della ditribuzione di OCaml OCaml Download
- Il sito web del libro Introduction to Objective CAML di Emmanuel Chailloux, Pascal Manoury and Bruno Pagano.
- Developing Applications with OCAML di Jason Hickey (versione preliminare)
Java.
- Il sito web ufficiale di Java Java Site.
- Il sito uffiale per scaricare le versioni piu' recenti della ditribuzione di Java Dowload di Java per tutti i sistemi operativi,
- Java 8 API.
- Java Standard Edition
- Java Tutorial.
- Java Code Conventions.
- Java Language Specification.
- The Java Virtual Machine Specification.
- Il sito ufficiale di Java Modeling Language JML. Java Modelling Language (JML) e' un linguaggio di specifica che permette di definire astrazioni procedurali sul modello di programmazione descritto nel corso. Attualmente JML e' disponibile solamente per Java 1.4.2. Le specifiche vengono aggiunte all'interno del codice sorgente Java, tramite commenti dotati di una speciale sintassi che precedono il metodo interessato. Questo significa che il codice JML non viene letto dal compilatore Java, ma solo dagli strumenti di JML.
Eclipse.
Programming Languages.
-
DMOZ Programming Languages Project.
- Una visione di prospettiva sui linguaggi di scripting di John K. Ousterhout download.
Esame
L'esame consiste di un progetto, una prova scritta e di una prova orale. Per accedere alla prova orale è necessario aver superato la prova scritta e avere una valutazione postiva del progetto. La prova orale consiste di norma nella discussione della prova scritta e, opzionalmente, anche di altri argomenti del programma del corso. Durante le prove non è consentito l'uso di libri o appunti. Per partecipare alle prove scritte è necessario iscriversi mediante il portale di ateneo per l'scrizione alle prove di esame (Portale Iscrizioni).
Traccie di testi di esame degli anni precedenti: Download (zip file)
Argomenti Trattati a Lezione
In questa pagina troverete il diario delle lezioni e delle esercitazioni. Per ogni argomento svolto potrete trovare una breve descrizione e il materiale didattico relativo.
- Introduzione al corso. I linguaggi di programmazione:
paradigmi e metodologie di programmazione
- Materiale presentato a lezione: [download pdf].
- Astrazioni e linguaggi di programmazione
- Materiale presentato a lezione: [download pdf].
- La transizione da C a Java: classi e oggetti
- Materiale presentato a lezione: [download pdf].
- Materiale presentato a lezione: [download pdf].
- Materiale presentato a lezione: [download pdf].
- Cosa leggere per studiare e approfondire l'argomento: David Eck Java Notes
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 19, Capitolo 20, Capitolo 21 delle note didattiche download
- Un modello operazionale per Java.
Introduzione all'ereditarieta'
- Materiale presentato a lezione: [download pdf].
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 15, Capitolo 23 e Capitolo 24 delle note didattiche download
- Tipi e Dynamic Dispatch in Java
- Materiale presentato a lezione: [download pdf].
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 25 delle note didattiche download
- Esercitazione Programmazione a Oggetti in Java: Testo esercitazione
- Eccezioni in Java
- Materiale presentato a lezione: [download pdf (parte 1)]. [download pdf (parte 2)].
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 28 delle note didattiche download
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 7 David Eck Java Notes Exception
- Astrazioni sui dati: specifica
- Materiale presentato a lezione: [download pdf ]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 5 B. Liskov (with J. Guttag), Program Development in Java: Abstraction, +Specification and Object-Oriented design
- Astrazioni sui dati: implementazione
- Materiale presentato a lezione: [download ]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 5 B. Liskov (with J. Guttag), Program Development in Java: Abstraction, +Specification and Object-Oriented design
- Astrazioni sui dati: Verifica
- Materiale presentato a lezione: [download pdf]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 5 B. Liskov (with J. Guttag), Program Development in Java: Abstraction, +Specification and Object-Oriented design
- Debugging di astrazioni procedurali
- Materiale presentato a lezione: [download pdf ]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 5 B. Liskov (with J. Guttag), Program Development in Java: Abstraction, +Specification and Object-Oriented design
- Esercitazione: Specifica e Implementazione di Astrazioni in Java Testo esercitazione
- Astrazioni e gerarchie di tipi
- Materiale presentato a lezione: [download pdf ]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 7 B. Liskov (with J. Guttag), Program Development in Java: Abstraction, +Specification and Object-Oriented design
- Il Principio di sostituzione
- Materiale presentato a lezione: [download pdf ]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 7 B. Liskov (with J. Guttag), Program Development in Java: Abstraction, +Specification and Object-Oriented design
- Generici in Java
- Materiale presentato a lezione: [download pdf1up ]
- Cosa leggere per studiare e approfondire l'argomento: Articolo orginale di Bracha download
- Cosa leggere per studiare e approfondire l'argomento: < Capitolo 10 David Eck Java Notes Java Notes
- Java Collections e Iteratori
- Materiale presentato a lezione: [download pdf]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 6 B. Liskov (with J. Guttag), Program Development in Java: Abstraction, +Specification and Object-Oriented design
- Cosa leggere per studiare e approfondire l'argomento: JCF
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 10 David Eck Java Notes Java Notes
- Esercitazione: Specifica e Implementazione di Astrazioni in Java Testo esercitazione
- Linguaggi e macchine astratte. Interpretrazione e compilazione.
- Materiale presentato a lezione: [download pdf]
- Cosa leggere per studiare e approfondire l'argomento: Cosa leggere per studiare e approfondire l'argomento: Capitolo 1: M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hill
- Tecniche di programmazion e in OCAML.
- Materiale presentato a lezione: [download pdf]
- Cosa leggere per studiare e approfondire l'argomento: Real world Ocaml: online book
- Esercitazione: Programmazione in OCAML Testo esercitazione
- Programmare un interprete in OCAML.
- Materiale presentato a lezione: [download pdf]
- Codice dell'interprete: Ocaml Code
- Elementi di semantica operazionale.
- Materiale presentato a lezione: [download pdf]
- Cosa leggere per studiare e approfondire l'argomento: Introduzione alla semantica operazionale
- Dati e loro rappresentazione.
<AP.html
- Materiale presentato a lezione: [download pdf]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 8: M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hil
- Nomi, Binding e la nozione di ambiente
- Materiale presentato a lezione: [download pdf ]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 4: M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hil
- Controllo sequenza: espressioni e comandi
- Materiale presentato a lezione: [download pdf ]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 6: M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hil
- Funzioni e procedure.
- Materiale presentato a lezione: [download pdf]
- Cosa leggere per studiare e approfondire l'argomento: Capitoli 5 e 7: M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hil
- Esercitazione: Programmare un interprete in OCAML Testo esercitazione
- Realizzazione di un inporeprete per il nucleo di un linguaggio funzionale
- Materiale presentato a lezione: download pdf
- Materiale presentato a lezione: download pdf
- Cosa leggere per studiare e approfondire l'argomento: Capitoli 5 e 7: M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hil
- Implementazione di un semplice linguaggio imperativo.
- Materiale presentato a lezione: [download pdf ]
- Cosa leggere per studiare e approfondire l'argomento: Capitoli 5 e 7: M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hil
- Esercitazione Testo esercitazione
- Il passaggio dei parametri.
- Materiale presentato a lezione: [download pdf ]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 7: M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hil
- Implementazione dei linguaggi a oggetti.
- Materiale presentato a lezione: [download pdf ]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 10: M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hil
- Gestione della memoria: tecniche di garbage collection.
- Materiale presentato a lezione: [download pdf ]
- Cosa leggere per studiare e approfondire l'argomento: Capitolo 5: M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hil
Progetto
- Progetto di programmazione: prima verifica. Studenti iscritto AA 2015-16:
- Testo del progetto download
- Progetto di programmazione: seconda verifica. Studenti iscritto AA 2015-16:
- Testo del progetto download
- Progetto di programmazione: sessione Invernale 2015-16
FAQ
Questa parte della pagina raccoglie sotto forma di domande alcune risposte a quelle che sembrano essere le domande e i dubbi piu' comuni tra gli studenti di Programmazione II .Durante la prova scritta è consentito l'uso di libri o appunti?
Durante le prove non è consentito l'uso di libri o appunti.
Iscrizione obbligatoria?
Per partecipare alle prove scritte è necessario iscriversi mediante il portale di iscrizione agli esami dell'ateneo.
Esiste una differenza di programma tra studenti frequentanti e studenti non frequentanti?
No. Il programma e' lo stesso. Chi frequenta e' facilitato.
News
- Risultati: download. Sono ammessi alla seconda valutazione tutti coloro che hanno ottenuto una valutazione maggiore o uguale a E.
- Testo e soluzione download
- Codice Java BoxOffice.java
- Codice Java BoxOfficeList.java
- Codice Java BrockereBoxOffice.java
- Testo: download
- Risultati: Risultati Complessivi
Materiale Didattico Anni Accademici Precedenti
In questa pagina troverete il diario delle lezioni e delle esercitazioni per lì'anno accademico 2014-15 aa2014-14Contatti
Prof. Gian Luigi Ferrari
Ricevimento : Su appuntamento (Dipartimento di Informatica)Tel: 050 22 12 766
E-mail: giangi at di.unipi.it
www: http://www.di.unipi.it/~giangi