Advanced computer programming

A.A. 2018/2019
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Inglese
Learning objectives
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
Expected learning outcomes
- 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.

Course syllabus and organization

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
Professor(s)
Ricevimento:
Su appuntamento tramite email
Dipartimento di Informatica - Via Celoria 18 - Stanza 3015