Advanced computer programming
A.A. 2018/2019
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
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,
- 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.
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++.
- 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.
Professor(s)
Ricevimento:
Su appuntamento tramite email
Dipartimento di Informatica - Via Celoria 18 - Stanza 3015