Nuova ricerca

Giacomo CABRI

Professore Ordinario
Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Matematica

Insegnamento: Programmazione a oggetti

Informatica (Offerta formativa 2020)

Obiettivi formativi

L’obiettivo dell’insegnamento è di fornire i concetti di base della programmazione orientata agli oggetti per la costruzione di programmi modulari, riusabili e manutenibili.

Prerequisiti

Aver superato l'esame di Programmazione 1

Programma del corso

L'insegnamento affronta i seguenti argomenti:
1. Programmazione ad Oggetti (1 CFU): verranno illustrati i concetti generali, quali incapsulamento, ereditarietà e polimorfismo; verranno accennati i concetti di riusabilità e di composizione dei componenti software, illustrando il passaggio dalla programmazione modulare alla programmazione ad oggetti.
2. Il linguaggio Java: verrà utilizzato come esempio di linguaggio ad oggetti, spiegando come i concetti generali sono implementati in Java (2 CFU); verrà inoltre spiegato come Java può essere sfruttato per lo sviluppo di interfacce grafiche (3 CFU); infine verranno spiegati argomenti aggiuntivi come le strutture dati in Java e la programmazione dei thread (3 CFU).

Metodi didattici

Lezioni frontali e esercitazioni in laboratorio.
Gli studenti non frequentanti possono accedere alle slide delle lezioni e al materiale delle esercitazioni.
Le lezioni teoriche riguarderanno le caratteristiche della programmazione a oggetti e il linguaggio Java e verranno svolte a distanza in modo sincrono (in streaming) a causa della situazione sanitaria COVID19; le esercitazioni di laboratorio verranno svolte a distanza tramite registrazioni e discussioni sincrone.

Testi di riferimento

G. Cabri, F. Zambonelli, "Programmazione a oggetti in Java: dai fondamenti a Internet", Pitagora editrice, 2003.

Verifica dell'apprendimento

Esame scritto in cui si richiede di modellare delle semplici entità per verificare che lo studente abbia acquisito le nozioni di astrazione, classificazione, ereditarietà e polimorfismo.
Esame orale su un progetto sviluppato in Java su traccia data dal docente per verificare le capacità di sviluppare una applicazione a oggetti.
Il voto complessivo è dato dato dalla media pesata 1/3 la prova scritta e 2/3 la prova orale.
Orientativamente si terranno 2 prove scritte e 3 prove orali nella sessione invernale, 1 prova scritta e 3 orali nella sessione estiva, 1 prova scritta e 2 orali nella sessione autunnale.
Le prove potrebbero essere svolte in presenza o a distanza a seconda dell'evoluzione della situazione COVID19.

Risultati attesi

Conoscenza e comprensione
Gli studenti avranno solide conoscenze e capacità di comprensione nei seguenti ambiti:
- concrete tecniche algoritmiche, progetto e uso di strutture dati complesse;
- paradigmi e linguaggi di programmazione orientati agli oggetti;
- metodologie e tecniche di progettazione software complesso;
- tecnologie per la rappresentazione e la gestione di dati complessi, strutturati e non strutturati.

Capacità di applicare conoscenza e comprensione
La conoscenza di un'ampia gamma di tecnologie e metodi di progetto e sviluppo di software si traducono (anche e soprattutto grazie alle molte ore dedicate al laboratorio e allo sviluppo del progetto) nella capacità concreta di sviluppare soluzioni software efficienti a partire da una descrizione del problema.

Autonomia di giudizio
Lo studente avrà una buona capacità di reperire dati e informazioni utili allo svolgimento del proprio lavoro, in particolare nella formulazione di problemi e nella definizione di strategie di risoluzione dei medesimi. Sarà in grado di fornire giudizi autonomi sulle scelte operate e di valutare criticamente i risultati ottenuti, anche in funzione di tali scelte.

Abilità comunicative
Lo studente sa organizzare e presentare con chiarezza e sinteticità, oltre che con linguaggio tecnico appropriato (ove necessario), i risultati del proprio lavoro, utilizzando varie metodologie e tecnologie comunicative. Ha capacità di leggere con profitto letteratura tecnica (informatica) in lingua inglese.

Capacità di apprendimento
Gli studenti devono acquisire elevate capacità di apprendimento continuo e autonomo anche a causa delle caratteristiche della disciplina, l'Informatica, in continua e rapida evoluzione.