|
PAOLO BURGIO
Ricercatore t.d. art. 24 c. 3 lett. B 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.