Advanced computer programming
A.A. 2018/2019
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
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,
- utilizzo di linguaggi per programmazione data-driven;
- sviluppo di software per dispositivi mobili (es. Android) e sistemi embedded,
Periodo: Primo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
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++.
- 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
- 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.
Modalita` d'esame: realizzazione di un progetto e discussione orale.
Metodi didattici
Lezioni frontali e di laboratorio
Materiale di riferimento
STUDENTI NON FREQUENTANTI
Esempi, dispense e tutorial indicate dal docente durante il corso.
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++.
- 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.
Modalita` d'esame: realizzazione di un progetto e discussione orale.
Materiale di riferimento
Esempi, dispense e tutorial indicate dal docente durante il corso.
Docente/i
Ricevimento:
Su appuntamento tramite email
Dipartimento di Informatica - Via Celoria 18 - Stanza 3015