Advanced computer programming

A.A. 2018/2019
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Inglese
Obiettivi formativi
La programmazione e` un campo trasversale in Informatica: essere in grado di sviluppare e comprendere codice utilizzando tecnologie avanzate e` di importanza fondamentale sia per gestire che per contribuire ad ogni attivita` di sviluppo di progetti software.

Il corso ha obiettivi sia metodologici che applicativi, al fine di fornire sia una comprensione teorica che abilita` pratiche per programmare in modo efficace nei vari domini dell'Informatica.

Dal punto di vista metodologico, il corso intende rendere gli studenti in grado di
- comprendere meglio gli ambiti applicativi del calcolo
- scegliere i paradigmi di programmazione piu` appropriati per ogni ambito applicativo
- valutare e migliorare la robustezza del codice rispetto ai bug
- migliorare le abilita` di fattorizzazione e strutturazione del codice
- sfruttare maggiormente le capacita` di calcolo di hardware specializzato

Dal punto di vista applicativo, il corso fornisce abilita` pratiche
- nello sviluppo di applicazioni che utilizzino programmazione orientata agli oggetti e linguaggi di scripting
- nella programmazione a basso livello di dispositivi specializzati e sistemi embedded
- nella programazione ad alto livello di architetture orientate ai servizi
Risultati apprendimento attesi
- utilizzo avanzato di linguaggi per programmazione orientata agli oggetti, generic programming e meta programming;
- utilizzo di linguaggi per programmazione data-driven;
- sviluppo di software per dispositivi mobili (es. Android) e sistemi embedded,
Corso singolo

Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.

Programma e organizzazione didattica

Linea Crema

Responsabile
Periodo
Primo semestre

STUDENTI FREQUENTANTI
Programma
A) Paradigmi di programmazione avanzata
- functional e data-driven programming
- astrazione di dati e di processo; object oriented, parametric e generic programming
- reflection, reification, decorators, metaclasses ed annotation
B) Gestione della concorrenza
- programmazione concorrente, distribuita, event-driven; GPU programming
C) Case study
- sviluppo di applicazioni in un particolare contesto reale, proposto dal docente all'inizio del corso

Durante lezioni di laboratorio vengono discussi esempi e proposti esercizi utilizzando i linguaggi di programmazione Python, Java, C e C++.
Informazioni sul programma
Discusse dal docente all'inizio del corso.
Propedeuticità
- Programmazione degli Elaboratori I
- Algoritmi e Strutture Dati
Prerequisiti
Prerequisiti: abilita` di base nella programmazione degli elaboratori, conoscenza di almeno un linguaggio di programmazione.

Modalita` d'esame: realizzazione di un progetto e discussione orale.
Metodi didattici
Lezioni frontali e di laboratorio
Materiale di riferimento
Esempi, dispense e tutorial indicate dal docente durante il corso.
STUDENTI NON FREQUENTANTI
Programma
A) Paradigmi di programmazione avanzata
- functional e data-driven programming
- astrazione di dati e di processo; object oriented, parametric e generic programming
- reflection, reification, decorators, metaclasses ed annotation
B) Gestione della concorrenza
- programmazione concorrente, distribuita, event-driven; GPU programming
C) Case study
- sviluppo di applicazioni in un particolare contesto reale, proposto dal docente all'inizio del corso

Durante lezioni di laboratorio vengono discussi esempi e proposti esercizi utilizzando i linguaggi di programmazione Python, Java, C e C++.
Prerequisiti
Prerequisiti: abilita` di base nella programmazione degli elaboratori, conoscenza di almeno un linguaggio di programmazione.

Modalita` d'esame: realizzazione di un progetto e discussione orale.
Materiale di riferimento
Esempi, dispense e tutorial indicate dal docente durante il corso.
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente: Ceselli Alberto
Docente/i
Ricevimento:
Su appuntamento tramite email
Dipartimento di Informatica - Via Celoria 18 - Stanza 3015