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 secondo semestre nelle aule del Polo Didattico Fibonacci, con il seguente orario:

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.

La frequenza non e' obbligatoria ma e' fortemente consigliata. Il corso e' pensato ed organizzato per una frequenza attiva e continua.

Materiale Didattico

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 argiomenti trattati nel corso.

Per la parte relativa ai paradimi di programmazione e' consigliata la consultazione di

Il codice OCAML degli interpreti presentati a lezione (e altro materiale) e' disponibile on line Per la parte relativa alla tecniche di programmazione orientata agli oggetti il testo di riferimento e': Per la parte relativa alla programmazione concorrente il testo di riferimento e':

Ulteriore materiale didattico e' presente nella descrizione degli argomenti trattati a lezione

Testi di consultazione.

Risorse didattiche aggiuntive

OCAML.

  1. 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.
  2. Il sito web del libro Introduction to Objective CAML di Emmanuel Chailloux, Pascal Manoury and Bruno Pagano.
  3. Developing Applications with OCAML di Jason Hickey (versione preliminare)

Java.

  1. Il sito web ufficiale di Java Java Site.
  2. Java 6 API.
  3. Java Tutorial.
  4. Java Code Conventions.
  5. Java Language Specification.
  6. The Java Virtual Machine Specification.
  7. 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 nella seconda parte del 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.

    Eclipse Home Page.

Programming Languages.

    DMOZ Programming Languages Project.
  1. Una visione di prospettiva sui linguaggi di scripting di John K. Ousterhout download.

Esame

L'esame consiste di una prova scritta e di una prova orale. Per accedere alla prova orale è necessario aver superato la prova scritta. 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 la pagina (Iscrizioni Esami) del sito WEB del dipartimento dedicato alla didattica.

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.

  1. Introduzione al corso. I linguaggi di programmazione: paradigmi e strutture di implementazioni [download].
  2. Linguaggi di programmazione, macchine astratte, interpretazione e compilazione. [download].
  3. Sintassi e semantica dei linguaggi di programmazione. Elementi di semantica operazionale. [download].
  4. Sintassi e semantica dei linguaggi di programmazione: Approfondimenti
  5. Esercitazione: Programmare in OCAML la valutazione di semplice espressioni algebriche (zip file) [download]
  6. Semantica Operazionale Eseguibile e Interpreti. [download].
  7. I Tipo di Dato. [download].
  8. Controllo sequenza: espressioni e comandi. [download].
  9. Ambiente Locale nei linguaggi funzionali e imperativi. [download].
  10. Esercitazione: Programmare in OCAML un compilatore e un interprete per un semplice linguaggio funzionale (text file) [download]
  11. Astrazioni funzionali nel linguaggio funzionale didattico. [download].
  12. Esercitazione: Programmare in OCAML un controllore di tipo per un semplice linguaggio funzionale (.ml file) [download]
  13. Esercitazione: Esercizi (pdf file) [download]
  14. L'implementazione dell'ambiente nel linguaggio funzionale didattico. [download].
  15. Le procedure nel linguaggio imperativo didattico. [download].
  16. Il passaggio dei parametri. [download].
  17. Java: una breve introduzione [download].
  18. Java vs OCAML [download].
  19. Esercitazione: la traduzione dei nomi nel linguaggio funzionale [download].
  20. Esercitazione: la traduzione dei nomi nel linguaggio funzionale. Codice ML dell'interprete modificato (zip file) [download].
  21. La gestione dinamica della memoria: heap. [download].
  22. Il supporto a run time. [download].
  23. Ancora su Java. [download].
  24. Concorrenza: java thread. [download].
  25. Astrazioni sui dati: introduzione. [download].
  26. Astrazioni: specifica. [download].
  27. Astrazioni: eccezioni. [download].
  28. Astrazioni: Implementazioneo. [download].
  29. Astrazioni: Reasoning. [download].
  30. Astrazioni:esercitazione. [download].
  31. Astrazioni: esercitazione List ADT. [download].
  32. Astrazioni: esercitazione Stack ADT. [download].
  33. Astrazioni sul controllo: Iteratori. [download].
  34. Astrazioni sul controllo: Iteratori Esercitazione. [download].
  35. Astrazioni: Gerarchie (parte I). [download].
  36. Astrazioni: Gerarchie (parte II). [download].
  37. Astrazioni: esercitazioni Queue ADT. [download].
  38. Astrazioni: esercitazioni proprieta' di ADT. [download].
  39. Astrazioni: esercitazioni Set ADT in Java (zip file). [download].
  40. Astrazioni: oggetti concorrente (parte I). [download].
  41. Astrazioni: oggetti concorrente (parte II). [download].
  42. Astrazioni: oggetti concorrente (parte III). [download].
  43. Astrazioni: oggetti concorrente (esecrizi zip file). [download].

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 la pagina del sito WEB del dipartimento dedicato alla didattica.

Esiste una differenza di programma tra studenti frequentanti e studenti non frequentanti?

No. Il programma e' lo stesso. Chi frequenta e' facilitato.

News

  1. IMPORTANTE: A causa del pericolo esondazione del fiume Arno, il direttore generale dell'ateneo ha decretato la chiusura di TUTTE le strutture dell'ateno per la giornata del 31 Gennaio 2014. Pertanto la prova scritta prevista per il giorno 31 Gennaio alle ore 15 e' rinviata a Lunedi 3 Febbraio alle ore 15 in aula C1.
  2. Prima valutazione: Testo con traccia soluzione [download]

    Risultati prima valutazione Intermedia

    Non sono ammessi alla seconda valutazione intermedia coloro che hanno ottenuto una valutazione pari a F.

  3. Seconda valutazione: Testo con traccia soluzione [download]

    Risultati seconda valutazione e risultati complessivi

    Non sono ammessi alla prova orale coloro che hanno ottenuto una valutazione pari a F nella seconda valutazione intermedia
  4. Orali: lunedi 3 Giugno ore 15:30, Aula L1, Polo Fibonacci
  5. Risultati prova scritta del 6 Giugno 2013 [download].

    Orali Martedi 11 Giugno ore 15, Dipartimento di Informatica.

  6. Risultati prova scritta del 5 Luglio 2013 [download].

    Orali Giovedi 11 Luglio ore 15, Dipartimento di Informatica.

  7. Risultati prova scritta del 6 Settembre 2013 [download].

    Orali: Venerdi 13 Settembre ore 15, Dipartimento di Informatica.

  8. Risultati prova scritta del 3 Febbraio 2013:
    • 451449: Valutazione D
    • ??????: Valutazione B
    • Legenda: A = 27-30, B = 24-26, C = 21-23, D= 18-20

    Orale Giovedi 13 Febbrario ore 15 Dipartimento di Informatica.

Materiale Didattico Anni Accademici Precedenti

In questa pagina troverete il diario delle lezioni e delle esercitazioni per lì'anno accademico 2011-12 aa2011-12

Contatti

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