Dettaglio insegnamento

PARADIGMI DI PROGRAMMAZIONE

MF0363

Insegnamento
PARADIGMI DI PROGRAMMAZIONE
Codice
MF0363
Anno Accademico
2024/2025
Anno regolamento
2023/2024
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
CFU
9
Ore di lezione
72
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB - Obbligatoria
Anno
2
Periodo
Primo Semestre
Sede
ALESSANDRIA
Lingua insegnamento
Italiano
Contenuti
Il corso si compone di due parti.
Nella prima viene introdotta la programmazione ad oggetti in Java e la metodologia di sviluppo di programmi basata su Test.
Nella seconda parte viene introdotta la programmazione funzionale usando il linguaggio Python.
Testi di riferimento
Paul J. Deitel - Harvey M. Deitel
Programmare in Java, 11° edizione, Pearson.

Suggerito: Marco Buttu, Programmare con Python. Guida completa di Marco Buttu, pro Dgital Life Style.
Consultazione: Steven F. Lot, Functional Python Programming: Discover the power of functional programming, generator functions, lazy evaluation, the built-in itertools library, and monads, 2nd Edition Paperback – April 13, 2018
Materiale fornito dal docente.
Obiettivi formativi
Scopo dell’insegnamento è quello di fornire alla classe fondamenti teorici della programmazione a oggetti e di quella funzionale. Ci si aspetta che lo studente e la studentessa che supera l’esame sia in grado di:
- modellare un applicativo individuandone le componenti e il paradigma migliore per la loro descrizione;
- progettare ed implementare la soluzione scelta usando sia Java che Python;
- realizzare test con JUnit;
- avere padronanza del Collections framework di Java e di Python;
- saper riconoscere e gestire i casi non standard tramite eccezioni.
Prerequisiti
Prerequisiti formali: superamento dei corsi di Programmazione 1 e 2.
Prerequisiti sostanziali: padronanza dei principi della programmazione imperativa.
Metodi didattici
Lezioni che introducono i concetti teorici ed esercitazioni in laboratorio che li applicano.

Nelle lezioni si affrontano gli argomenti di teoria tramite presentazioni diapositive, con esempi e alcune domande per verificare l’apprendimento della classe.

Nelle esercitazioni in laboratorio la classe viene guidata nella realizzazione di semplici progetti volti a mettere in pratica le conoscenze teoriche acquisite.
Altre informazioni
Alla classe vengono proposti esercizi settimanali (facoltativi), il cui svolgimento, iniziato in laboratorio, deve essere completato a cura del medesimo. Gli esercizi vengono commentati e corretti sia singolarmente che in classe. Le prove finali (descritte nelle "modalità di verifica") valutano l'autonomia dello studente e della studentessa nella progettazione, realizzazione e testing di programmi ad oggetti implementati in Java.
Le studentesse e gli studenti con disabilità o con Disturbi Specifici dell’Apprendimento (DSA) o con Bisogni Educativi Speciali (BES) possono richiedere servizi e strumenti specifici a loro dedicati rivolgendosi allo Staff Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti e consultando la pagina dedicata del sito di Ateneo: https://uniupo.it/it/servizi/servizi-studenti- disabili-e-dsa Le studentesse e gli studenti con disabilità, DSA, BES, una volta preso contatto con lo Staff di Ateneo, possono contattare la/il docente titolare dell'insegnamento in relazione alla declinazione delle modalità di esame, in merito agli aspetti didattici.
Modalità di verifica dell'apprendimento
L'esame consiste di tre parti: un esame scritto sui principi della programmazione ad oggetti, un esame scritto sui principi della programmazione funzionale, la discussione di un progetto più articolato svolto in Java.

Gli esami scritti sono volti ad accertare i concetti presentati a lezione, rispettivamente sugli argomenti di programmazione ad oggetti e programmazione funzionale e si possono sostenere in qualsiasi ordine. Ciascuno dei due esami è costituito da 4 domande sui concetti teorici, seguite da un’implementazione pratica al pc di un semplice programma in Java o Python (rispettivamente). Durante le lezioni, verranno presentati esempi degli esercizi che saranno assegnati in fase d’esame. La soglia minima per superare per superare lo scritto è di rispondere in modo corretto e completo ad almeno due su quattro domande e di avere eseguito l’esercizio almeno all’80% rispetto ai requisiti. I due scritti valgono per il 65% della valutazione complessiva.

La discussione orale sarà sostenibile solo dopo aver superato la soglia minima negli scritti richiede lo svolgimento di un progetto personale o in gruppo volto ad accertare sia la capacità di strutturazione di un problema che la sua implementazione con l'uso delle librerie Java. Il progetto (consegnato prima della prova) viene discusso durante un esame orale e vale il 35% della valutazione complessiva.

Il voto finale è determinato in maniera collegiale, tenendo conto della votazione delle tre prove.
Programma esteso
Introduzione a Java.
Oggetti, classi, metodi
Tipi fondamentali, strutture sintattiche per controllo di flusso, array.
Tipi involucro (per tipi primitivi) e auto-boxing/unboxing
Interfacce, polimorfismo, ereditarietà
Programmazione parametrica
Gestione di eccezioni
Panoramica delle librerie di base
Caratteristiche funzionali di Java 8 e nuove librerie di collezioni
Sviluppo guidato dai Test
Pattern di programmazione Model-View-Controller
Introduzione alla programmazione funzionale in Python.
Funzioni come valori
Funzioni di ordine superiore
Dati immutabili
Valutazione lazy
Lavorare con le Collezioni: ricorsione e riduzione
Risultati di apprendimento attesi
Conoscenza e comprensione: familiarità con i principi della programmazione ad oggetti e funzionale, le architetture modello/vista/controllore, le metodologie di testing del software.

Capacità di applicare conoscenza e comprensione: abilità di progettare e realizzare un progetto usando gli strumenti della programmazione ad oggetti con il linguaggio Java e funzionale con il linguaggio Python, derivando il codice dai test.

Capacità critiche e di giudizio: abilità di riconoscere 1) buone e cattive pratiche di programmazione, 2) quando un paradigma è più o meno appropriato e 3) valutare la qualità architetturale di un progetto.

Capacità di comunicare quanto si è appreso: padronanza della terminologia specifica della programmazione ad oggetti e funzionale e miglioramento nell’abilità di lavoro in gruppo.

Capacità di proseguire lo studio in modo autonomo: maggior facilità ad apprendere autonomamente l’utilizzo di altri linguaggi e altre librerie con strutturazione oggetti e/o funzionale.
Ultimo aggiornamento:09-09-2026 00:14:31