Nuova ricerca

Giacomo CABRI

Professore Ordinario
Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Matematica

Insegnamento: Paradigmi e linguaggi di programmazione

Informatica (Offerta formativa 2020)

Obiettivi formativi

Gli obiettivi dell'insegnamento sono:
- Presentare e confrontare i vari paradigmi di programmazione
- Presentare alcuni linguaggi di programmazione
- Introdurre concetti di programmazione concorrente e parallela

Prerequisiti

Saper programmare in un qualsiasi linguaggio di programmazione.
(opzionale) Avere basi di sistemi operativi

Programma del corso

Paradigmi di programmazione
- Paradigma imperativo
- Paradigma funzionale
- Paradigma logico
- Esempi di linguaggi nei vari paradigmi
- Java 8 come linguaggio imperativo con costrutti funzionali
- Paradigma parallelo

Metodi didattici

Lezioni frontali tramite slide sulla teoria ed esercitazioni in aula di applicazione della teoria.
Gli studenti non frequentanti possono accedere alle slide delle lezioni e al materiale delle esercitazioni.

In base alla evoluzione dell'emergenza sanitaria COVID19 e alle specificita' delle attivita' didattiche verra' valutata l'erogazione anche in presenza

Testi di riferimento

Dispense a cura del docente.
Libri:
* Maurizio Gabbrielli, Simone Martini, Linguaggi di programmazione - Principi e paradigmi, mcgraw-hill
* Maurizio Gabbrielli, Simone Martini, Programming Languages: Principles and Paradigms, Springer
* Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft, Java 8 in Action, Manning
* A. Grama, G. Karypis, V. Kumar, A. Gupta: An introduction to Parallel Computing, Addison-Wesley
* Mattson, Sanders, Massingill, Patterns for Parallel Programming


Verifica dell'apprendimento

La verifica si componente di due parti. La prima parte consiste nello sviluppo di un progetto, da parte di un singolo studente o di un gruppo. La seconda parte consiste nella presentazione del progetto tramite un report e nella verifica della comprensione dei contenuti tramite domande sul programma svolto.

Le prove potrebbero essere svolte in presenza o a distanza a seconda dell'evoluzione della situazione COVID19.

Risultati attesi

Conoscenza e comprensione
Alla fine dell’insegnamento, lo studente conosce linguaggi per sviluppare sistemi software complessi

Capacità di applicare conoscenza e comprensione
Alla fine dell’insegnamento, lo studente sa sviluppare applicazioni software, sapendo scegliere i più appropriati linguaggi di programmazione

Autonomia di giudizio
Alla fine dell’insegnamento, lo studente:
- ha la capacità di giudicare le tecnologie e gli strumenti informatici più adatti a ogni contesto, valutando le possibili alternative;

Abilità comunicative
Alla fine dell’insegnamento, lo studente:
- ha la capacità di sfruttare strumenti tecnologici per comunicare;
- ha la capacità di redigere report;


Capacità di apprendimento
Alla fine dell’insegnamento, lo studente:
- ha la capacità di valutare la propria preparazione in relazione allo stato dell'arte delle tecnologie informatiche;
- ha la capacità di individuare le competenze mancanti per affrontare il lavoro che gli viene proposto;
- ha la capacità di fare formazione continua per colmare le lacune e mantenersi aggiornato;

- ha la capacità di sfruttare le fonti appropriate;

- ha la capacità di affrontare problemi sempre nuovi con un approccio scientifico e metodologico.