Programmazione ii
A.A. 2024/2025
Obiettivi formativi
L'insegnamento ha l'obiettivo di ampliare le competenze di programmazione procedurale acquisite nell'insegnamento di "Programmazione", presentando alcune astrazioni e concetti utili alla progettazione, sviluppo e manutenzione di programmi di grandi dimensioni. L'attenzione è focalizzata sul paradigma di programmazione orientata agli oggetti, con enfasi sul processo di progettazione e modellazione dei dati. Potranno essere anche introdotti i concetti fondamentali relativi alla programmazione funzionale.
Risultati apprendimento attesi
Al termine dell'insegnamento lo studente sarà in grado di:
- illustrare i concetti fondamentali e le proprietà principali della programmazione orientata agli oggetti ed, eventualmente, della programmazione funzionale;
- comprendere e definire le specifiche di un programma, progettarlo ed implementarlo con le metodologie proprie della programmazione orientata agli oggetti ed, eventualmente, di quella funzionale.
- illustrare i concetti fondamentali e le proprietà principali della programmazione orientata agli oggetti ed, eventualmente, della programmazione funzionale;
- comprendere e definire le specifiche di un programma, progettarlo ed implementarlo con le metodologie proprie della programmazione orientata agli oggetti ed, eventualmente, di quella funzionale.
Periodo: Primo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento può essere seguito come corso singolo.
Programma e organizzazione didattica
Edizione unica
Responsabile
Periodo
Primo semestre
Programma
L'insegnamento tratta le tematiche di progettazione, realizzazione ed analisi del software secondo il paradigma di orientazione a oggetti. Inoltre, saranno presentati anche cenni di programmazione funzionale e ingegneria del software.
Gli argomenti principali trattati durante l'insegnamento sono:
- Principi di orientazione a oggetti:
-- Astrazione
-- Incapsulamento e Information Hiding
-- Ereditarietà e Composizione
-- Polimorfismo
- Principi di programmazione in Java:
-- Tipi di dati elementari
-- Costrutti di controllo
-- Funzioni e Metodi
-- Classi
-- Interfacce
-- Eccezioni
- Cenni di ingegneria del software e Design pattern
- Cenni di programmazione funzionale e Lambda calculus
Gli argomenti principali trattati durante l'insegnamento sono:
- Principi di orientazione a oggetti:
-- Astrazione
-- Incapsulamento e Information Hiding
-- Ereditarietà e Composizione
-- Polimorfismo
- Principi di programmazione in Java:
-- Tipi di dati elementari
-- Costrutti di controllo
-- Funzioni e Metodi
-- Classi
-- Interfacce
-- Eccezioni
- Cenni di ingegneria del software e Design pattern
- Cenni di programmazione funzionale e Lambda calculus
Prerequisiti
Il superamento dell'esame di Programmazione è propedeutico all'insegnamento di Programmazione II. In particolare, è richiesto che lo studente conosca e sappia utilizzare proficuamente almeno un linguaggio di programmazione procedurale imperativa e sia in grado di scrivere programmi che usano i costrutti fondamentali della programmazione procedurale imperativa.
Metodi didattici
L'insegnamento è suddiviso in una parte di teoria ed una di laboratorio. La parte di teoria viene svolta mediante lezioni frontali. La parte di laboratorio alterna nella stessa lezione parti di didattica frontale ed esercitazioni.
Materiale di riferimento
Il libro di testo dell''insegnamento è: "Program development in Java" di Barbara Liskov e John Guttag.
Ulteriore materiale di riferimento (slides, repository di esercizi) sarà reso disponibile sul sito Ariel ufficiale dell'insegnamento.
Ulteriore materiale di riferimento (slides, repository di esercizi) sarà reso disponibile sul sito Ariel ufficiale dell'insegnamento.
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame intende valutare:
* la conoscenza degli argomenti trattati durante l'insegnamento.
* la capacità di applicare tale conoscenza a problemi concreti tramite la progettazione e lo sviluppo di codice.
L'esame è costituito da un'unica prova scritta, della durata indicativa di 3 ore, con parti di teoria e di laboratorio.
* La parte di teoria è costituita da una serie di domande aperte e chiuse e verte sugli argomenti trattati a lezione.
* La parte di laboratorio è costituita da esercizi che richiedono di progettare e realizzare (oppure comprendere e modificare) programmi, secondo le specifiche assegnate.
Il peso delle due parti sarà indicativamente di 0.5/1 ciascuna, con possibili variazioni in base alla difficoltà degli singoli esercizi. Per ottenere la sufficienza, dovrà essere raggiunto un punteggio minimo in ciascuna delle due parti, ed un punteggio globalmente sufficiente.
Durante la prova saranno consultabile le specifiche ufficiali di Java.
I risultati saranno notificati attraverso SIFA.
* la conoscenza degli argomenti trattati durante l'insegnamento.
* la capacità di applicare tale conoscenza a problemi concreti tramite la progettazione e lo sviluppo di codice.
L'esame è costituito da un'unica prova scritta, della durata indicativa di 3 ore, con parti di teoria e di laboratorio.
* La parte di teoria è costituita da una serie di domande aperte e chiuse e verte sugli argomenti trattati a lezione.
* La parte di laboratorio è costituita da esercizi che richiedono di progettare e realizzare (oppure comprendere e modificare) programmi, secondo le specifiche assegnate.
Il peso delle due parti sarà indicativamente di 0.5/1 ciascuna, con possibili variazioni in base alla difficoltà degli singoli esercizi. Per ottenere la sufficienza, dovrà essere raggiunto un punteggio minimo in ciascuna delle due parti, ed un punteggio globalmente sufficiente.
Durante la prova saranno consultabile le specifiche ufficiali di Java.
I risultati saranno notificati attraverso SIFA.
INF/01 - INFORMATICA - CFU: 6
Laboratori: 32 ore
Lezioni: 32 ore
Lezioni: 32 ore
Docenti:
Ahmetovic Dragan, Valtolina Stefano
Turni:
Turno
Docente:
Ahmetovic DraganTurno A
Docente:
Ahmetovic DraganTurno B
Docente:
Valtolina StefanoSiti didattici
Docente/i