PROGRAMMAZIONE A OGGETTI - MOD.2

Anno accademico
2023/2024 Programmi anni precedenti
Titolo corso in inglese
OBJECT-ORIENTED PROGRAMMING - 2
Codice insegnamento
CT0372 (AF:401992 AR:250738)
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.

Dall'edizione 2021-2022 il corso offre anche un approfondimento di C++, del suo object system e del suo template system, con confronti tra programmazione ad oggetti (OOP) e programmazione generica (GP).

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 dei linguaggi Java e C++, dei principali design pattern e delle 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.
Conoscenza di base del linguaggio Java e del linguaggio C++.
. Elementi avanzati di Java e approfondimenti di C++
. 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
. Confronti tra OOP e GP, tra Java e C++
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

Scott Meyers
"Effective Modern C++"
O'Reilly Media Inc, 2015
Il corso prevede esclusivamente un esame scritto a fine corso. Sarà possibile sostenere il solo esame relativo al mod. 2 solamente al primo appello utile (cioè il primo appello di Giugno, essendo il corso relativo al II semestre). Per tutti gli altri appelli dell'anno sarà necessario sostenere l'esame completo, che consiste nel sostenere i due esami distinti dei due moduli uno dopo l'altro.
Una prova orale sarà richiesta a discrezione del docente valutando caso per caso. Essa ha lo scopo di aggiustare il voto dello scritto qualora fosse sotto la soglia della sufficienza o qualora fosse esplicitamente richiesto dallo studente.
E' anche possibile consegnare al docente un progetto tra quelli proposti sulla pagina Moodle. Si tratta di una cosa del tutto opzionale, che ha valore innanzitutto come esercizio di coding con lo scopo di migliorare l'apprendimento dei concetti del corso; tuttavia, qualora il risultato dovesse rivelarsi di particolare qualità, il docente arrotonderà il voto dell'esame tenendone conto opportunamente.
Corso frontale con schermo del computer sul megaschermo.
Tutto il codice prodotto a lezione viene regolarmente conservato su un repository Github ed è consultabile.
Italiano
scritto
Programma definitivo.
Data ultima modifica programma: 02/02/2024