PROGRAMMAZIONE A OGGETTI - MOD.2

Anno accademico
2020/2021 Programmi anni precedenti
Titolo corso in inglese
OBJECT-ORIENTED PROGRAMMING - 2
Codice insegnamento
CT0372 (AF:320634 AR:172526)
Modalità
In presenza
Crediti formativi universitari
6 su 12 di PROGRAMMAZIONE A OGGETTI
Livello laurea
Laurea
Settore scientifico disciplinare
INF/01
Periodo
II Semestre
Anno corso
2
Sede
VENEZIA
Spazio Moodle
Link allo spazio del corso
L’insegnamento è una delle attività formative di base del corso di laurea in Informatica che, assieme al modulo 1, consentono allo studente di acquisire la conoscenza e la comprensione dei principali paradigmi di programmazione e di acquisire la capacità di progettare e implementare software secondo le tecniche, gli stili e le metodologie più moderne.
L'obiettivo dell’insegnamento è fornire conoscenze relative alla programmazione ad oggetti in generale ed al linguaggio Java in particolare.


Il syllabus verra' aggiornato prima dell'inizio del corso.
Il corso mira a sviluppare nello studente la necessaria familiarità con il paradigma della Programmazione ad Oggetti e nel contempo consolidare le basi di programmazione acquisite durante il primo anno.

Come per ogni corso di programmazione è fondamentale che il percorso formativo coniughi elementi metodologici a continui stimoli sperimentali, attraverso l'invito alla risoluzione autonoma di esercizi e problemi applicativi.

Lo studente che avrà frequentato con profitto il corso avrà acquisito una conoscenza approfondita del linguaggio Java e dei principali design pattern e tecniche di programmazione avanzate. Allo stesso tempo potrà contare su una competenza generale per quanto riguarda la programmazione ad oggetti e le regole che sottendono alla progettazione e sviluppo di software secondo tale paradigma. Competenze che potranno essere facilmente trasferite a diversi linguaggi e contesti.
Programmazione ad oggetti base insegnata nel modulo 1: Java, classi, interfacce, polimorfismo, subtyping.
Algoritmi imperativi su strutture dati elementari: array, liste, collection, alberi.
. Elementi avanzati di Java
. Programmazione ad eventi, callback, anonymous classes
. Eccezioni, error reporting, resource tracking
. Polimorfismo parametrico: generics, constraints, polimorfismo first-class
. Programmazione funzionale pura/impura codificata ad oggetti: lambda espressioni, function objects, closures
. Design pattern: factory, singleton, command, listener-observer, consumer-producer
. Tecniche di programmazione avanzata: type-driven programming ad oggetti
Joshua Bloch
"Effective Java Third Edition"
Addison-Wesley Professional, 2017

Kamalmeet Singh, Adrian Ianculescu, Lucian-Paul Torje
"Design Patterns and Best Practices in Java"
Packt Publishing Ltd, 2018
L'apprendimento è volto a permettere allo studente di acquisire competenze pratiche nel design e sviluppo di programmi complessi con metodologia ad oggetti.

La verifica dell'apprendimento avviene attraverso una prova scritta e una prova orale opzionale.

La prova scritta consiste di esercizi con lo scopo di accertare le abilità acquisite nel risolvere problemi di design e nel rappresentare dati con operazioni complesse tramite un uso avanzato dei tipi. Durante la prova scritta non è ammesso l'uso di libri, appunti, supporti elettronici.

Durante la prova orale (opzionale) lo studente deve dimostrare di conoscere gli argomenti svolti durante il corso e di saperli esporre in modo formale.
La prova orale sarà necessaria o meno a discrezione del docente e dell'esito della prova scritta.
Le lezioni saranno frontali in aula. Occasionalmente ci saranno lezioni pratiche in cui gli studenti potranno portare il proprio computer portatile in aula o in laboratorio.
Italiano
Una importante risorsa per apprendere il linguaggio Java è la documentazione online di Oracle.

The Java Language Specification (Java SE 11 Edition)
https://docs.oracle.com/javase/specs/jls/se11/html/index.html

The Java Developer Kit (JDK 11)
https://docs.oracle.com/en/java/javase/11/
scritto
Programma definitivo.
Data ultima modifica programma: 23/04/2020