Nuova ricerca

Nicola BICOCCHI

Professore Associato
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Programmazione ad oggetti

Ingegneria Informatica (D.M.270/04) (Offerta formativa 2022)

Obiettivi formativi

L'insegnamento introduce alla programmazione orientata agli oggetti utilizzando sia Java che Python. L'obiettivo dell'insegnamento è fornire allo studente le competenze necessarie a sviluppare moderne applicazioni, sia desktop che mobili, in modo autonomo.

Prerequisiti

Si auspicano conoscenze di base sulla programmazione procedurale fornite nei corsi di Fondamenti di Informatica I e II.

Programma del corso

Java
- Ambiente di sviluppo, variabili, costrutti condizionali e iterativi (2 CFU)
- Classi, oggetti, attributi, metodi, classi astratte, interfacce, classi generiche, eccezioni (2 CFU)
- Collections framework (JCF), GUI framework (Swing), data access frameworks (JDBC/REST), introduzione alla programmazione multi-thread (2 CFU)

Python
- Ambiente di sviluppo, variabili, costrutti condizionali e iterativi (1 CFU)
- Classi, oggetti, attributi, metodi, interfacce informali (1 CFU)
- Collections framework, iteratori, generatori, comprehension (1 CFU)

Il contenuto dettagliato dell'insegnamento è visibile a questo indirizzo:
https://github.com/nbicocchi/ooprogramming

Metodi didattici

L’insegnamento è organizzato in moduli organizzati su base settimanale. Ogni modulo tratta un argomento specifico e prevede una parte di laboratorio. L’insegnamento viene erogato mediante lezioni frontali ed esercitazioni in presenza che vengono svolte con l’ausilio di slides proiettate. La frequenza alle lezioni in presenza non è obbligatoria. L’insegnamento è erogato in lingua italiana.

Testi di riferimento

Dispense e codice forniti dal docente. Per approfondire è suggerito l'utilizzo di un libro per ogni linguaggio in base al proprio livello di conoscenza pregressa.

Head First Java; Sierra, Bates (intermedio)
Effective Java; Joshua Bloch (avanzato)

Head First Python: A Brain-Friendly Guide; Barry (intermedio)
Fluent Python; Ramalho (avanzato)

Verifica dell'apprendimento

L'insegnamento prevede lo sviluppo di un progetto da sviluppare a coppie in Java o in Python. Il tema del progetto è libero (applicazione desktop, applicazione mobile, videogioco). L'esame consiste in una discussione orale del progetto stesso (15/30) unita a domande riguardo le nozioni teoriche fornite durante l'insegnamento (15/30).

Risultati attesi

Conoscenza e capacità di comprensione:
Conoscenze di modellazione attraverso costrutti orientati agli oggetti
Conoscenze approfondite sulle componenti principali dei linguaggi Java e Python
Capacità di leggere e scrivere software in Java o Python

Autonomia di giudizio:
Capacità di modellare un problema attraverso il modello ad oggetti e fornirne un'implementazione in Java o Python. Particolare rilevanza è attribuita alla stimolazione della capacità dello studente di selezionare gli opportuni metodi e strumenti per risolvere problemi specifici.

Abilità comunicative:
Al termine dell'insegnamento lo studente deve essere in grado di esporre e rielaborazione i concetti appresi, con particolare attenzione al lessico e alla proprietà di linguaggio.

Capacità di apprendimento:
Al termine dell'insegnamento lo studente deve essere in grado di sviluppare da zero un software orientato agli oggetti utilizzando i linguaggi Java o Python. E' inoltre auspicabile la capacità di approfondire in modo autonomo aspetti collaterali degli argomenti proposti.