Dettaglio insegnamento

PARADIGMI DI PROGRAMMAZIONE

MF0363

Insegnamento
PARADIGMI DI PROGRAMMAZIONE
Codice
MF0363
Anno Accademico
2026/2027
Anno regolamento
2025/2026
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 (testo alternativo: Claudio De Sio Cesari, "Programmazione Java, Nuove Tecniche e Paradigmi", Hoepli).Luciano Ramalho, "Fluent Python, 2nd Edition", O'Reilly.Materiale fornito dai docenti.
Obiettivi formativi
Scopo dell’insegnamento è quello di fornire alla classe, attraverso lezioni che combinano metodi di didattica erogativa e interattiva, fondamenti teorici della programmazione a oggetti e di quella funzionale. Ci si aspetta che la classe, una volta superato 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;
- 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, con esempi e alcune domande per verificare l’apprendimento della classe. Nelle esercitazioni in laboratorio la classe viene guidata nella realizzazione di semplici esercizi 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 della classe nella progettazione, realizzazione e testing di programmi ad oggetti implementati in Java ed in Python. 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 i docenti titolari dell'insegnamento in relazione alla declinazione delle modalità di esame, in merito agli aspetti didattici.
Modalità di verifica dell'apprendimento
L'esame valuta le competenze attraverso una prova scritta obbligatoria di durata massima pari a due ore e riguarda i principi teorici e pratici della programmazione orientata agli oggetti e funzionale e dei linguaggi di programmazione Java e Python.
La prova scritta si svolge il giorno dell'appello mediante una piattaforma informatica (ove possibile) e si articola in un quiz con domande di difficoltà variabile corrispondenti ai seguenti livelli di punteggio espresso in trentesimi per un totale di 30 e lode:
- 0-18/30: determina l'insufficienza della prova e attesta il mancato raggiungimento della comprensione minima degli argomenti del corso (preparazione limitata a nozioni frammentarie, l’incapacità di applicare i procedimenti fondamentali o errori concettuali).
- 18-20/30: garantisce la sufficienza e attesta la comprensione minima degli argomenti del corso (conoscenze di base complessivamente corrette, applicazione dei procedimenti standard con errori non gravi, motivazioni ed esposizione sufficienti).
- 21-23/30: dimostra una conoscenza discreta degli argomenti del corso (conoscenze abbastanza complete, applicazione generalmente corretta, capacità di collegamento e terminologia adeguate).
- 24-26/30: attesta una conoscenza buona degli argomenti del corso (conoscenze solide, procedimenti corretti, motivazioni chiare e capacità di confrontare le principali alternative).
- 27-29/30: dimostra una conoscenza molto buona degli argomenti del corso (conoscenze approfondite e integrate, autonomia nell'analisi, elevata correttezza metodologica ed espositiva).
- 30-30 e lode: attesta una conoscenza eccellente degli argomenti del corso (padronanza completa e critica dei contenuti, capacità di affrontare autonomamente quesiti complessi o non ripetitivi, argomentazione rigorosa, precisa e particolarmente chiara). La lode è attribuita quando la prova evidenzia, oltre alla piena correttezza, un livello di approfondimento, autonomia e pensiero critico particolarmente elevato.
Per la preparazione all'esame, è indicato lo studio sistematico del libro di testo e dei materiali didattici pubblicati sulla piattaforma DIR. Inoltre, sulla medesima piattaforma, verranno resi disponibili esempi di prove d'esame.
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 9 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.

Al fine di raggiungere le conoscenze e le competenze corrispondenti al livello minimo di sufficienza, alla classe è richiesto di conoscere e comprendere le basi della teoria dei paradigmi di programmazione funzionale e orientata agli oggetti. Per il conseguimento di un livello avanzato, è richiesto di saper applicare in modo ottimizzato i paradigmi di programmazione funzionale e orientata agli oggetti.
Ultimo aggiornamento:09-09-2026 00:14:31