Salta al contenuto principale della pagina

LINGUAGGI E PROGRAMMAZIONE ORIENTATA AGLI OGGETTI

CODICE 61799
ANNO ACCADEMICO 2021/2022
CFU
  • 12 cfu al 2° anno di 8759 INFORMATICA (L-31) - GENOVA
  • SETTORE SCIENTIFICO DISCIPLINARE INF/01
    LINGUA Italiano
    SEDE
  • GENOVA
  • PERIODO Annuale
    MATERIALE DIDATTICO AULAWEB

    PRESENTAZIONE

    Elementi di un linguaggio di programmazione: sintassi, sematica statica e dinamica, interpreti.

    Programmazione funzionale: OCaml.

    Programmazione object-oriented: Java.

     

    OBIETTIVI E CONTENUTI

    OBIETTIVI FORMATIVI

    Acquisire le nozioni fondamentali relative ai linguaggi di programmazione ad alto livello e una conoscenza approfondita di diversi paradigmi di programmazione (in particolare object-oriented e funzionale), dal punto di vista concettuale e operativo. Essere in grado, inoltre, di sviluppare programmi a partire da specifiche informali nell'ambito della programmazione in piccolo mediante l'utilizzo di un ambiente di sviluppo integrato.

    OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

    Al termine dell'insegnamento, lo studente sarà in grado di

    • applicare i concetti base del paradigma object-oriented nell'ambito della programmazione in piccolo per modellare dati e sviluppare codice in Java organizzato modularmente per favorirne il riuso
    • comprendere, utilizzare e implementare in modo corretto alcuni design pattern comuni della programmazione object-oriented 
    • applicare i concetti base del paradigma funzionale nell'ambito della programmazione in piccolo per sviluppare codice in OCaml basandosi sulle più comuni techiche di programmazione funzionale e generica
    • comprendere la specifica di un linguaggio di programmazione e le problematiche alla base dell'implementazione dei liguaggi di programmazione

    PREREQUISITI

    Nozioni fondamentali di programmazione imperativa e di algoritmi e strutture dati

    MODALITA' DIDATTICHE

    Tradizionale

    PROGRAMMA/CONTENUTO

    Elementi di un linguaggio di programmazione: generalità, diversi paradigmi; sintassi, semantica statica e dinamica, sviluppo di un interprete guidato dalla semantica formale.
    Paradigma object oriented (linguaggio Java): oggetti, classi, interfacce, ereditarietà e binding dinamico, casting, overloading, eccezioni. Caratteristiche avanzate: classi e metodi generici. Esempi d'uso dell'API standard, design pattern iterator e visitor. 
    Paradigma funzionale (linguaggio Objective Caml): funzioni di ordine superiore e polimorfe, inferenza di tipi polimorfi, currying, funzioni su liste, ricorsione di coda e parametri di accumulazione, tipi user-defined.

    TESTI/BIBLIOGRAFIA

    -Davide Ancona, Giovanni Lagorio, Elena Zucca. Linguaggi di Programmazione. Città Studi Edizioni.
    -Ken Arnold, James Gosling, and David Holmes. The Java Programming Language, Fourth Edition, Prentice Hall.
    -Emmanuel Chailloux, Pascal Manoury, and Bruno Pagano. Developing Applications With Objective Caml.
    -Josh Bloch. Effective Java (second edition). Prentice Hall.  (approfondimento)
    -Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. (approfondimento)

    DOCENTI E COMMISSIONI

    Commissione d'esame

    DAVIDE ANCONA (Presidente)

    ELENA ZUCCA

    PIETRO BARBIERI (Supplente)

    GIOVANNI LAGORIO (Supplente)

    PAOLA MAGILLO (Supplente)

    LEZIONI

    Orari delle lezioni

    L'orario di tutti gli insegnamenti è consultabile su EasyAcademy.

    ESAMI

    MODALITA' D'ESAME

    Esame scritto, progetto software finale e sua discussione individuale.

    MODALITA' DI ACCERTAMENTO

    Applicazione dei concetti base della programmazione object-oriented in piccolo: sviluppo di un progetto software, esercizi di comprensione e programmazione in Java da svolgere durante l'esame scritto e, se necessario, anche orale. 

    Comprensione, uso e implementazione dei design pattern iterator e visitor: sviluppo di un progetto software, esercizi di programmazione in Java da svolgere durante l'esame scritto.

    Applicazione dei concetti base della programmazione funzionale e generica in piccolo: esercizi di programmazione in OCaml da svolgere durante l'esame scritto. 

    Comprensione della specifica di un linguaggio di programmazione e delle problematiche alla base dell'implementazione dei liguaggi di programmazione: sviluppo di un progetto, esercizi su espressioni regolari e grammatiche context free da svolgere durante l'esame scritto. 

    Comprensione della specifica formale di un linguaggio di programmazione e tecniche di implementazione object-oriented di un interprete: progetto finale in Java.

    Calendario appelli

    Data Ora Luogo Tipologia Note
    20/06/2022 09:00 GENOVA Scritto 8 settembre aule 506 e 505
    11/07/2022 09:00 GENOVA Scritto 8 settembre aule 506 e 505
    07/09/2022 09:00 GENOVA Scritto 8 settembre aule 506 e 505
    19/01/2023 09:00 GENOVA Scritto 8 settembre aule 506 e 505
    13/02/2023 09:00 GENOVA Scritto 8 settembre aule 506 e 505