Mathematical methods for computer science (2016/2017)

Codice insegnamento
4S001438
Docente
Ugo Solitro
Coordinatore
Ugo Solitro
crediti
6
Settore disciplinare
INF/01 - INFORMATICA
Lingua di erogazione
Inglese
Periodo
I sem. dal 3-ott-2016 al 31-gen-2017.

Orario lezioni

I sem.
Giorno Ora Tipo Luogo Note
mercoledì 12.30 - 13.30 lezione Aula E dal 21-ott-2016  al 1-nov-2016
mercoledì 12.30 - 14.30 lezione Aula E dal 23-nov-2016  al 31-gen-2017
mercoledì 13.30 - 15.30 lezione Aula E dal 21-ott-2016  al 26-ott-2016
venerdì 13.30 - 14.30 lezione Aula G  
venerdì 14.30 - 15.30 lezione Laboratorio didattico Laboratorio Ciberfisico dal 18-nov-2016  al 18-nov-2016
venerdì 14.30 - 15.30 lezione Laboratorio didattico Laboratorio Ciberfisico dal 2-dic-2016  al 23-dic-2016

Obiettivi formativi

> (bozza finale)

Scopo del corso è lo studio dei fondamenti matematici degli algoritmi, dei linguaggi di programmazione e del ruolo dei paradigmi di programmazione nelle tecniche computazionali per la risoluzione dei problemi.

A conclusione del corso lo studente avrà acquisito

- dimestichezza con i principi fondamentali dei diversi linguaggi;
- confidenza con i diversi stili di programmazione;
- conoscenza di almeno due linguaggi di programmazione;
- capacità di affrontare un qualunque linguaggio di programmazione o ambiente per lo sviluppo di soluzioni;
- abilità a utilizzare le conoscenze e le abilità conseguite sia in ambito formativo che applicativo.

Programma

(bozza finale)

CONTENUTI

Durante lo svolgimento del corso saranno considerati i temi e le attività descritti qui di seguito.

- Sistemi di computazione effettiva e algoritmi: macchine astratte, funzioni computabili e ricorsive, sistemi di riscrittura, modelli funzionali e orientati agli oggetti.
- Logica e tipi.
- Logiche costruttive proposizionali, del I e del II ordine. Sistemi di deduzione naturale.
- Sistemi di Tipo per linguaggi funzionali: tipi semplici, I e II ordine. Inferenza di Tipo.
- Isomorfismo Curry-Howard.
- Paradigmi di programmazione: imperativo, funzionale, funzionale, ad oggetti e (cenni) logico.
- Fondamenti della programmazione orientata agli oggetti.
- Classi e oggetti.
- Linguaggi basati sulle classi e sugli oggetti.
- Tipi e Classi.
- Sotto-classi e sotto-tipi; ereditarietà, polimorfismo, risoluzione statica e dinamica.
- Classi parametriche.
- ...
- Introduzione ad alcuni linguaggi di programmazione paradigmatici
- con approfondimento di almeno un linguaggio di programmazione orientato agli oggetti.
- Sviluppo di progetti di interesse matematico, formativo e/o applicativo.

MODALITÀ DIDATTICHE

L'attività didattica si svolgerà secondo due distinte modalità.

- Presentazione e studio degli argomenti sopra elencati.
- Sviluppo di attività e progetti in relazione con gli argomenti trattati.

Le attività di approfondimento e di progetto (anche pratico) potranno enfatizzare gli aspetti educativi, teorici o applicativi secondo l'orientamento degli studi dei singoli studenti.

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
Timothy Budd An Introduction to Object-Oriented Programming (Edizione 3) Addison-Wesley 2002 0201760312
Martín Abadi, Luca Cardelli A Theory of Objects Springer Verlag 1996 0387947752

Modalità d'esame

L'esame finale consiste di norma di una prova scritto e un colloquio orale.

La prova scritta comprende domande generali ed esercizi.
Il colloquio orale riguarda l'elaborato scritto, l'attività svolta e gli argomenti del corso.
L'ammissione al colloquio orale è condizionata dal superamento della prova scritta.

La prova scritta può essere parzialmente sostituita da prove parziali o lo sviluppo di un progetto concordato con il docente.

Opinione studenti frequentanti - 2016/2017