|
Giacomo CABRI
Professore Ordinario Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Matematica
|
Insegnamento: Paradigmi e linguaggi di programmazione
Informatica (Offerta formativa 2021)
Obiettivi formativi
Gli obiettivi dell'insegnamento sono:
- Presentare e confrontare i vari paradigmi di programmazione
- Presentare alcuni linguaggi di programmazione come esempi
- Introdurre concetti di programmazione concorrente e parallela
Al termine dell’insegnamento lo studente dovrebbe essere in grado di:
- utilizzare diversi paradigmi per scrivere un programma software;
- scrivere codice concorrente e parallelo.
Prerequisiti
Saper programmare in un qualsiasi linguaggio di programmazione.
(opzionale) Avere basi di sistemi operativi
Aver superato l'esame di Programmazione a oggetti (propedeutico).
Programma del corso
Paradigmi di programmazione
- Concetti generali dei linguaggi e paradigma imperativo [6 ore]
- Paradigma funzionale (ed esempi) [14 ore]
- Paradigma logico (ed esempi) [8 ore]
- Paradigma parallelo (ed esempi) [20 ore]
Metodi didattici
Lezioni frontali tramite slide sulla teoria ed esercitazioni in aula di applicazione della teoria.
La frequenza non è obbligatoria.
L'insegnamento e' in italiano
Gli studenti non frequentanti possono accedere alle slide delle lezioni e al materiale delle esercitazioni.
Testi di riferimento
Slide presentate a lezione messe a disposizione all'inizio dell'insegnamento.
Libri consigliati:
* 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 viene attuata tramite una prova scritta di 1 ora e 30 minuti e una eventuale prova orale di circa 15 minuti.
La prova scritta è obbligatoria e prevede esercizi sui vari paradigmi, in particolare:
- esercizi di comprensione di pezzi di codice;
- esercizi di sviluppo di semplici programmi;
- domande sulla parte teorica.
Ogni esercizio avrà un punteggio specificato nella traccia.
Durante la prova scritta non e' possibile consultare il materiale.
L'esito sufficiente della prova sarà un voto tra 15 e 30:
- chi ha preso un voto tra 15 e 17 deve sostenere un orale per arrivare al massimo al 18;
- chi ha preso 30 può verbalizzare o può sostenere una prova orale per avere la lode;
- chi ha preso un voto tra 18 e 30 può verbalizzare o può sostenere una prova orale per incrementare il voto (+/- 3 punti).
L'esito della prova scritta verra' pubblicato su ESSE3 entro circa 7-10 giorni dalla prova.
La prova scritta può essere sostituita da un progetto, seguito da una prova orale. Il progetto è finalizzato a chi intende svolgere la tesi in uno degli argomenti dell'insegnamento. La prova orale è sugli argomenti teorici (durata media di 30 minutes).
Risultati attesi
Conoscenza e comprensione
Alla fine dell’insegnamento, lo studente conosce diversi paradigmi e linguaggi per sviluppare sistemi software.
Capacità di applicare conoscenza e comprensione
Alla fine dell’insegnamento, lo studente sa sviluppare applicazioni software scegliendo i più appropriati paradigmi e 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 spiegare le scelte tecnologiche.
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.