ADVANCED ALGORITHMS AND PROGRAMMING METHODS - 2
- Anno accademico
- 2020/2021 Programmi anni precedenti
- Titolo corso in inglese
- ADVANCED ALGORITHMS AND PROGRAMMING METHODS - 2
- Codice insegnamento
- CM0470 (AF:332762 AR:175882)
- Lingua di insegnamento
- Inglese
- 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
Inquadramento dell'insegnamento nel percorso del corso di studio
Risultati di apprendimento attesi
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.
Prerequisiti
Contenuti
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
Testi di riferimento
Modalità di verifica dell'apprendimento
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.