ADVANCED ALGORITHMS AND PROGRAMMING METHODS - 2

Anno accademico
2019/2020 Programmi anni precedenti
Titolo corso in inglese
ADVANCED ALGORITHMS AND PROGRAMMING METHODS - 2
Codice insegnamento
CM0470 (AF:306565 AR:166131)
Modalità
In presenza
Crediti formativi universitari
6 su 12 di ADVANCED ALGORITHMS AND PROGRAMMING METHODS
Livello laurea
Laurea magistrale (DM270)
Settore scientifico disciplinare
INF/01
Periodo
I Semestre
Anno corso
1
Sede
VENEZIA
Spazio Moodle
Link allo spazio del corso
Il corso mira a perfezionare le competenze dello studente nella traduzione di algoritmi generali in codice strutturato attraverso un linguaggio ad oggetti. In particolare saranno affrontati i paradigmi avanzati resi disponibili da molti moderni linguaggi di programmazione, inclusi design pattern avanzati e manipolazione dei dati con approcci funzionali.
1. Conoscenza e comprensione
1.1. conoscenza del linguaggio c++
1.2. conoscenza tecniche di polimorfismo statico e meta-programmazione template

2. Capacità di applicare conoscenza e comprensione
2.1. saper applicare tecniche e pattern multiparadigma;
2.2. saper documentare le scelte di design e comprenderene le conseguenze;

3. Capacità di giudizio
3.1. sapere comprendere il tradeoff di design tra semplicità e generalità d'uso, performance, scalabilità e manutenibilità;
3.2. sapere analizzare la performance di un programmae legare bottlenecks a scelte di design.
Programmazione ad oggetti.
Introduzione a C++
classes
operators
inheritance
polymorphism
generic programming

Semantics and policies
type semantics
value and reference
lifetime and ownership policies
policy-based design

Functors and lambdas
stateful functors
overloading/overriding and double dispatching functors
lambdas
higher order functions
separation of operation and transversal
generalized associativity/commutativity
optimization of reduction
Closures
Continuations

Event programming patterns
command
listener/callback
future and promises
Asynchronous Completion Token pattern
Reactor pattern
Acceptor-Connector pattern
Proactor pattern
Bjarne Stroustrup, Programming Principles and Practice Using C++, 2nd Ed. Addison Wesley, 2014
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 un progetto con consegna in itinere o una progetto e una prova orale.

Il progetto permettere allo studente di acquisire e dimostrare competenze pratiche nel design e sviluppo di programmi multi-paradigma.

Durante la prova orale lo studente deve dimostrare di conoscere gli argomenti svolti durante il corso e di saperli esporre in modo formale.
Lezioni frontali, progetto con consegne e valutazioni in itinere
Inglese
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 un progetto con consegna in itinere e/o una prova scritta e una prova orale.

Il progetto, da sviluppare durante il corso con con scadenze in itinere, permettere allo studente di acquisire e dimostrare competenze pratiche nel design e sviluppo di programmi multi-paradigma.

La prova scritta consiste di esercizi con lo scopo di accertare le abilità acquisite nel risolvere problemi di design e rappresentazione di realtà complesse. La prova scritta può essere sostituita dal progetto o dalle prove in itinere. Durante la prova scritta non è ammesso l'uso di libri, appunti, supporti elettronici.


Durante la prova orale lo studente deve dimostrare di conoscere gli argomenti svolti durante il corso e di saperli esporre in modo formale.
orale
Programma definitivo.
Data ultima modifica programma: 07/06/2019