Programmazione e analisi di dati

Modulo A: Laboratorio di Programmazione Java

CdLM in Informatica Umanistica

A.A. 2018/2019

Paolo Milazzo

Avvisi:

[2dic2018] I RISULTATI della prova in itinere sono disponibili in questa pagina

[26nov2018] La lezione del 30 novembre 2018 è ANNULLATA e ci sarà una lezione aggiuntiva l11 dicembre per anticipare un po' la fine del corso. Il PIANO DELLE ULTIME LEZIONI del corso è quindi il seguente:
- lunedi 26 novembre alle 8.30
- lunedi 3 dicembre alle 8.30
- venerdi 7 dicembre alle 8.30
- lunedi 10 dicembre alle 8.30
- martedi 11 dicembre alle 12.00 (in aula A1)
- venerdi 14 dicembre alle 8.30
- lunedi 17 dicembre alle 8.30

[20nov2018] Nella sezione Esami sono disponibili i testi e le soluzioni della prova in itinere di oggi.

[19nov2018] La lezione del 23 novembre 2018 è ANNULLATA.

[6nov2018] La PROVA IN ITINERE si terrà il giorno 20 NOVEMBRE 2018, alle ore 11.00 in AULA A1. Nella lezione di lunedì 12 novembre si farà un'esercitazione (esercizi svolti dal docente).

[2nov2018] Nella sezione Esami di questa pagina web sono disponibili le DISPENSE e i TESTI delle prove in itinere degli scorsi anni

[31ott2018] La lezione del 2 novembre 2018 è ANNULLATA.

[24ott2018] La lezione del 26 ottobre 2018 è ANNULLATA (causa impegno del docente)

[16ott2018] La lezione del 19 ottobre 2018 si terrà in AULA M1 per l'indisponibilità del laboratorio M

[08ott2018] ATTENZIONE! Cambiamento orario. Per motivi logistici l'orario delle lezioni è cambiato. La lezione del martedì alle 12.00 è spostata al VENERDI' alle 8.30 in Laboratorio M. La lezione di domani 9/10 è quindi ANNULLATA e si terrà il 12/10. Domani il docente sarà comunque disponibile in Lab. I in orario di lezione per un ricevimento studenti dedicato a chi ha problemi tecnici con l'installazione di Java ed Eclipse.

[22set2018] La lezione di martedì 26/09/2018 è ANNULLATA per un impegno del docente!

[22set2018] Prima lezione il 25/09/2018 alle 8.30 in Laboratorio H!


Breve descrizione del corso:

Il corso ha lo scopo di preparare gli studenti all'uso di un linguaggio di programmazione orientato agli oggetti per la realizzazione di applicazioni informatiche. Alla fine del corso gli studenti avranno acquisito le basi necessarie al corretto sviluppo di programmi, nonché alla loro compilazione, esecuzione e debugging. Il linguaggio di programmazione utilizzato è Java, di cui verranno introdotti i concetti essenziali. L'ambiente di sviluppo è Eclipse, disponibile per diverse piattaforme.

Buona parte delle lezioni consisteranno in esercitazioni in cui si utilizzeranno le tecnologie descritte.

Torna all'inizio

Calendario del corso

Il modulo di Programmazione Java ha un carico didattico di 6 CFU e si svolge interamente nel primo semestre. Nel secondo semestre si terranno gli ulteriori due moduli del corso di Programmazione e Analisi di Dati per altri 9 CFU. Questa l'organizzazione complessiva del corso:

Torna all'inizio

Orario delle lezioni (primo semestre):

Ricevimento docente:

Torna all'inizio

Diario delle lezioni:

Lezione 1 (lun. 24 settembre 2018, ore 08.30)
Introduzione al corso. (slides)
Background: parte I - Architettura di un elaboratore e rappresentazione binaria dell'informazione (slides)
Lezione 2 (lun. 1 ottobre 2018, ore 08.30)
Background: parte II - Linguaggi di programmazione e algoritmi (cont.lez.prec.)
Lezione 3 (mar. 2 ottobre 2018, ore 12.00)
Introduzione a Java (slides)
Introduzione a Eclipse (note)
Lezione 4 (lun. 8 ottobre 2018, ore 08.30)
Espressioni, variabili e input dall'utente (slides)
LAB: Esercitazione 1 (testo)
Lezione 5 (ven. 12 ottobre 2018, ore 08.30)
Tipi primitivi di Java (slides)
Istruzioni condizionali ed espressioni booleane (slides)
LAB: Esercitazione 2 (testo)
LAB: Esercitazione 3 (testo)
Lezione 6 (lun. 15 ottobre 2018, ore 08.30)
Istruzioni condizionali ed espressioni booleane (cont. lez. prec.)
Lezione 7 (ven. 19 ottobre 2018, ore 08.30 -- AULA M1)
Blocchi e cicli (slides)
LAB: Esercitazione 4 (testo)
Lezione 8 (lun. 22 ottobre 2018, ore 08.30)
Programmazione procedurale: metodi ausiliari (slides)
LAB: Esercitazione 5 (testo, soluzione parziale esercizio 5)
Lezione 9 (lun. 29 ottobre 2018, ore 08.30)
Stringhe e altre classi della Java API(slides)
LAB: Esercitazione 6 (testo)
Lezione 10 (lun. 5 novembre 2018, ore 08.30)
Stringhe e altre classi della Java API(cont.lez.prec.)
Array (slides)
LAB: Esercitazione 7 (testo)
Presentazione prova in itinere (dispense e testi delle prove degli scorsi anni disponibili nella sezione Esami)
Lezione 11 (ven. 8 novembre 2018, ore 08.30)
Schemi di programmi iterativi (slides)
LAB: Esercitazione 7bis (testo)
Lezione 12 (lun. 12 novembre 2018, ore 08.30)
Esercitazione per la prova in itinere
Lezione 13 (ven. 16 novembre 2018, ore 08.30)
Introduzione alla programmazione orientata agli oggetti (slides)
Lezione 14 (lun. 19 novembre 2018, ore 08.30)
Gestione della memoria nella programmazione orientata agli oggetti (slides, Codice esempio complesso)
LAB: Esercitazione su Programmazione a Oggetti (testo)
Lezione 15 (mar. 20 novembre 2018, ore 11.00 -- AULA A1)
Prova in itinere
Lezione 16 (lun. 26 novembre 2018, ore 08.30)
Gestione della memoria nella programmazione orientata agli oggetti (cont. lez. prec.)
Metodi, costruttori, overloading e altro... (slides)
LAB: Seconda esercitazione su Programmazione a Oggetti (testo)
Lezione 17 (lun. 3 dicembre 2018, ore 08.30)
Metodi, costruttori, overloading e altro... (cont. lez. prec.)
Packages (slides)
Lezione 18 (ven. 7 dicembre 2018, ore 08.30)
Packages (cont. lez. prec. )
Ereditarietà (slides)
LAB: Esercitazione 9 (testo, soluzione)
Lezione 19 (lun. 10 dicembre 2018, ore 08.30)
Ereditarietà, tipi e gerarchie (slides)
LAB: Esercitazione 9bis (testo)
Lezione 20 (mar. 11 dicembre 2018, ore 12.00)
Vettori (slides)
LAB: Esercitazione 10 (testo)
LAB: Uno sguardo a Greenfoot
LAB: Esempio complesso - simulatore di gioco da tavolo (file java,possibili estensioni)
Regole per l'esame: progetto e prova orale (slides)
Elenco degli argomenti per la prova orale (elenco)
Lezione 21 (ven. 14 dicembre 2018, ore 08.30)
Eccezioni (slides)
Input/Ouput su file e serializzazione di oggetti (slides, Codice esempio serializzazione)
Lezione 23 (lun. 17 dicembre 2018, ore 8.30)
Graphical User Interface (GUI) - Cenni (slides, Dispensa, Esempi: ContatoreGUI, Addizionatore, Finestra1, Scrollabile)
Torna all'inizio

Materiale didattico:

Testi consigliati (a scelta):

Inoltre, come letture di approfondimento si suggeriscono:

Link Utili:

Torna all'inizio

Esami:

L'esame consisterà nello svolgimento di un progetto in Java (in piccoli gruppi) e in una prova orale (discussione del progetto + domande/esercizi).

Il progetto può essere richiesto in qualunque periodo dell'anno, dopo il termine delle lezioni del modulo. Dal momento della richiesta, il progetto dovrà essere svolto entro un mese circa. A seguire si terrà la prova orale su appuntamento (senza necessariamente rientrare nei periodi delle sessioni d'esame).

Gli studenti che frequentano il corso potranno sostenere una prova in itinere (scritta) indicativamente a metà del corso, che sostituirà parte dell'orale.

[Importante] Per la preparazione della prova in itinere è disponibile questa prima dispensa che contiene numerosi esercizi svolti. Inoltre, il testo e la soluzione della prova in itinere degli ultimi tre anni sono disponibili qui:

Altri esercizi (senza soluzione) sono inoltre disponibili in questa seconda dispensa.

Torna all'inizio