Dettaglio insegnamento

PARADIGMI DI PROGRAMMAZIONE

MF0364

Insegnamento
PARADIGMI DI PROGRAMMAZIONE
Codice
MF0364
Anno Accademico
2024/2025
Anno regolamento
2023/2024
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
Docenti
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
VERCELLI
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
Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, AOGEO.
Consigliati:
Programmare con Python. Guida completa di Marco Buttu, pro Dgital Life Style.
Core Python Programming (2nd Edition) di Wesley J Chun, Prentice Hall.
Materiale fornito dal docente.
Obiettivi formativi
Padronanza dei fondamenti teorici della programmazione a oggetti e di quella funzionale.
Capacita' di modellare un applicativo individuandone le componenti e il paradigma migliore per la loro descrizione. Saper progettare e implementare la soluzione scelta usando sia Java che Python. Realizzarne 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: superamento dei corsi di Programmazione 1 e 2.

Prerequisiti sostanziali: padronanza dei principi della programmazione imperativa.
Metodi didattici
Lezioni frontali in aula ed esercitazioni in laboratorio.

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

Nelle esercitazioni gli studenti sono guidati nella realizzazione di semplici progetti volti a mettere in pratica le conoscenze teoriche acquisite.
Altre informazioni
Allo studente/Alla studentessa vengono proposti esercizi (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/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 una prova in laboratorio che a sua volta è strutturata in due parti, che lo studente/la studentessa ha la possibilità di svolgere nello stesso appello lo stesso giorno o in appelli separati. Le prove di laboratorio sono una sulla programmazione ad oggetti ed una sulla programmazione funzionale.

La prova in laboratorio è volta ad accertare: 1) per la programmazione ad oggetti la padronanza degli strumenti di programmazione introdotti (uso IDE, sviluppo di test) e dei concetti teorici presentati a lezione, 2) per la programmazione funzionale la capacità di interpretare espressioni condizionali, slices e funzioni e prevederne il risultato e quella di scrivere funzioni Python.
1) prevede l’implementazione di 1-2 classi con le relative classi di test usando l’IDE eclipse ed il test sulla conoscenza teorica la risposta a 2-3 domande sulla programmazione orientata ad oggetti in Java (senza uso di documentazione ). Il voto pesa per i 2/3 l'implementazione delle classi e per 1/3 la risposta alle domande.
2) prevede una la risposta (senza uso di documentazione) a 4 domande composte di un numero variabile di quesiti e poi l'implementazione di 4 funzioni (di cui un generatore). Il voto pesa per il 60% l'implementazione delle funzioni e per il 40% la risposta alle domande.

La seconda parte richiede lo svolgimento di un progetto personalmente o in gruppo di massimo 2 persone. La consegna del progetto deve essere fatta prima dell'iscrizione alla prova di laboratorio di programmazione ad oggetti. Il progetto viene discusso durante un esame orale. nella valutazione della prova di programmazione ad oggetti il progetto conta per il 50% e la prova in laboratorio per il 50%.

Nella valutazione finale la parte di programmazione ad oggetti pesa per i 2/3 del voto e quella di programmazione funzionale per 1/3, in coerenza con il numero di CFU erogati per le tre parti.
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 e sviluppo GUI.
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 capacità di comprensione: familiarità con i principi della programmazione ad oggetti e funzionale, con il linguaggio Java, le architetture modello/vista/controllore e con il linguaggio Python.

Capacità di applicare conoscenza e comprensione: abilità di strutturare e realizzare un progetto usando gli strumenti della programmazione ad oggetti e funzionale derivando il codice dai test.

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

Abilità comunicative: padronanza della terminologia specifica della programmazione ad oggetti e funzionale e miglioramento nell’abilità di lavoro in gruppo.

Capacità di apprendere: 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