Studiare
In questa sezione è possibile reperire le informazioni riguardanti l'organizzazione pratica del corso, lo svolgimento delle attività didattiche, le opportunità formative e i contatti utili durante tutto il percorso di studi, fino al conseguimento del titolo finale.
Piano Didattico
Queste informazioni sono destinate esclusivamente agli studenti e alle studentesse già iscritti a questo corso.Se sei un nuovo studente interessato all'immatricolazione, trovi le informazioni sul percorso di studi alla pagina del corso:
Laurea magistrale in Mathematics - Immatricolazione dal 2025/2026Il piano didattico è l'elenco degli insegnamenti e delle altre attività formative che devono essere sostenute nel corso della propria carriera universitaria.
Selezionare il piano didattico in base all'anno accademico di iscrizione.
1° Anno
Insegnamenti | Crediti | TAF | SSD |
---|
Insegnamenti | Crediti | TAF | SSD |
---|
Insegnamenti | Crediti | TAF | SSD |
---|
3 courses to be chosen between
Legenda | Tipo Attività Formativa (TAF)
TAF (Tipologia Attività Formativa) Tutti gli insegnamenti e le attività sono classificate in diversi tipi di attività formativa, indicati da una lettera.
Mathematical methods for computer science (2017/2018)
Codice insegnamento
4S001438
Docente
Coordinatore
Crediti
6
Lingua di erogazione
Inglese
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Periodo
I sem. dal 2 ott 2017 al 31 gen 2018.
Obiettivi formativi
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 in una prospettiva metodologica per l'insegnamento e l'applicazione a problemi reali.
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 didattico che applicativo.
NOTA.
Le informazioni generali e i riferimenti bibliografici sono in aggiornamento.
Programma
CONTENUTI
Durante lo svolgimento del corso saranno sviluppati 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.
- Tipi e Logica.
- 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, educativo 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.
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 | |
O. Hazzan, T. Lapidot, N. Ragonis | Guide to Teaching Computer Science (Edizione 2) | Springer | 2015 | 978-1-4471-6629-0 | |
Jean-Yves Girard, Yves Lafont, Paul Taylor | Proof and Types | Cambridge University Press | 1989 | 9780521371810 | |
Guy Cousineau, Michel Mauny | The functional approach to programming (Edizione 1) | Cambridge University Press | 1998 | 0-521-5768 | |
H. Rogers | Theory of recursive functions and effective computability | MIT Press | 1988 |
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.
Il candidato dovrà mostrare di aver conseguito le seguenti conoscenze e abilità.
- Comprendere i principi fondamentali dei linguaggi di programmazione e dei paradigmi, e i fondamenti matematici dei linguaggi di programmazione;
- Essere in grado di utilizzare efficacemente un linguaggio di programmazione orientato agli oggetti, e discuterne i principi e i problemi specifiche, in particolare, in riferimento ai contenuti del corso;
- Saper utilizzare le conoscenze acquisite nelle applicazioni e/o in un ambito educativo.