Programmazione e analisi di dati

Modulo A: Laboratorio di Programmazione Java

CdLM in Informatica Umanistica

A.A. 2016/2017

Paolo Milazzo

Avvisi:

ATTENZIONE:
QUESTA PAGINA E' OBSOLETA!
LA PAGINA DEL CORSO PER L'ANNO ACCADEMICO 2017/2018 E' QUESTA)

[19apr2017] La lezione del 26 aprile 2017 è ANNULLATA per assenza del docente. Ci si rivede il 3 maggio 2017.

[06apr2017] A causa della SOSPENSIONE DELLA DIDATTICA per le prove in itinere, la lezione del 12 aprile 2017 non si terrà. Ci si rivede il 19 aprile 2017.

[17feb2017] Le LEZIONI DEL SECONDO SEMESTRE (per 3 CFU, in parallelo con le lezioni di Turini) inizieranno il 22 febbraio 2017 alle 8.30 in Lab. H

[14dic2016] Da ora è possibile richiedere l'assegnamento di un progeto di esame. Vedere la sezione Esami per informazioni sulle modalità di assegnazione e svolgimento dei progetti.

[06dic2016] Le istruzioni per il progetto e la prova orale e il programma dettagliato del corso sono disponibili nella sezione Esami di questa pagina web

[30nov2016] I RISULTATI della prova in itinere sono disponibili in questa pagina

[16nov2016] Disponibile il TESTO e la SOLUZIONE della prova in itinere nella sezione Esami di questa pagina web


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

Da un anno a questa parte il modulo di Programmazione Java ha un carico didattico di 9 CFU, di cui:

I 6 CFU del primo semestre avranno un programma e uno svolgimento simile a quelli del corso degli anni precedenti. I 3 CFU agguntivi, svolti nel secondo semestre, avranno un carattere prevalentemente pratico e laboratoriale.

Torna all'inizio

Orario delle lezioni (secondo semestre):

Ricevimento docente:

Torna all'inizio

Diario delle lezioni:

Lezione 1 (mar. 27 settembre 2016, ore 12.00)
Introduzione al corso. (slides)
Background: parte I - Architettura di un elaboratore e rappresentazione binaria dell'informazione (slides)
Lezione 2 (mer. 28 settembre 2016, ore 12.00)
Background: parte II - Linguaggi di programmazione e algoritmi (cont.lez.prec.)
Lezione 3 (mar. 4 ottobre 2016, ore 12.00)
Introduzione a Java (slides)
Introduzione a Eclipse (note)
Lezione 4 (mer. 5 ottobre 2016, ore 12.00)
Espressioni, variabili e input dall'utente (slides)
LAB: Esercitazione 1 (testo)
Lezione 5 (mar. 11 ottobre 2016, ore 12.00)
Tipi primitivi di Java (slides)
LAB: Esercitazione 2 (testo)
Lezione 6 (mer. 12 ottobre 2016, ore 12.00)
Istruzioni condizionali ed espressioni booleane (slides)
LAB: Esercitazione 3 (testo)
Lezione 7 (mar. 18 ottobre 2016, ore 12.00)
Blocchi e cicli (slides)
LAB: Esercitazione 4 (testo)
Lezione 8 (mer. 19 ottobre 2016, ore 12.00)
Blocchi e cicli (cont.lez.prec.)
Programmazione procedurale: metodi ausiliari (slides)
LAB: Esercitazione 5 (testo, soluzione parziale esercizio 5)
Lezione 9 (mar. 25 ottobre 2016, ore 12.00)
Stringhe e altre classi della Java API(slides)
LAB: Esercitazione 6 (testo)
Lezione 10 (mer. 26 ottobre 2016, ore 12.00)
Array (slides)
LAB: Esercitazione 7 (testo)
Presentazione prova in itinere (dispense e testi delle prove degli scorsi anni disponibili nella sezione Esami)
Lezione 11 (mer. 2 novembre 2016, ore 12.00)
Correzione delle esercitazioni delle lezioni precedenti e domande/risposte sugli argomenti visti fino a questo momento (ricevimento collettivo).
Lezione 12 (mar. 8 novembre 2016, ore 12.00)
Schemi di programmi iterativi (slides)
LAB: Esercitazione 7bis (testo)
Lezione 13 (mer. 9 novembre 2016, ore 12.00)
Schemi di programmi iterativi (cont. lez. prec.)
Esercitazione per la prova in itinere
Lezione 14 (mar. 15 novembre 2016, ore 12.00)
LAB: Uno sguardo agli array bidimensionali - Il gioco del Tris (codice Java)
Introduzione alla programmazione orientata agli oggetti (slides)
Lezione 15 (mer. 16 novembre 2016, ore 12.00)
Prova in itinere (Compito A, Compito B, Soluzioni)
Lezione 16 (mar. 22 novembre 2016, ore 12.00)
Introduzione alla programmazione orientata agli oggetti (cont. lez. prec.)
Gestione della memoria nella programmazione orientata agli oggetti (slides, Codice esempio complesso)
LAB: Esercitazione su Programmazione a Oggetti (testo)
Lezione 17 (mer. 23 novembre 2016, ore 12.00)
Gestione della memoria nella programmazione orientata agli oggetti (cont.lez.prec.)
Metodi, costruttori, overloading e altro... (slides)
Lezione 18 (mar. 29 novembre 2016, ore 12.00)
Metodi, costruttori, overloading e altro... (cont.lez.prec.)
Packages (slides)
Lezione 19 (mer. 30 novembre 2016, ore 12.00)
Ereditarietà (slides)
Ereditarietà, tipi e gerarchie (slides)
LAB: Esercitazione 9 (testo, soluzione)
Lezione 20 (mar. 6 dicembre 2016, ore 12.00)
Ereditarietà, tipi e gerarchie (cont.lez.prec.)
LAB: Esempio complesso - simulatore di gioco da tavolo (file java,possibili estensioni)
LAB: Esercitazione 9 (testo)
LAB: Uno sguardo a Greenfoot
Lezione 21 (mer. 7 dicembre 2016, ore 12.00)
Classi parzialmente definite: Classi Astratte e Interfacce (slides)
Vettori (slides)
LAB: Esercitazione 10 (testo)
Regole per l'esame: progetto e prova orale (slides)
Elenco degli argomenti per la prova orale (elenco)
Lezione 22 (mar. 13 dicembre 2016, ore 12.00)
Eccezioni (slides)
Input/Ouput su file e serializzazione di oggetti (slides, Codice esempio serializzazione)
LEZIONI DEL SECONDO SEMESTRE
Lezione 23 (mer. 22 febbraio 2017, ore 8.30)
La struttura dati Albero e la ricorsione (slides)
Lezione 24 (mer. 1 marzo 2017, ore 8.30)
La struttura dati Albero e la ricorsione (cont.lez.prec.)
Strutture dati del Java Collections Framework (slides,Allegati)
Lezione 25 (mer. 8 marzo 2017, ore 8.30)
Strutture dati del Java Collections Framework (Cont.lez.prec.)
Lezione 26 (mer. 15 marzo 2017, ore 8.30)
Presentazione della prima lista di progetti relativi alla parte di corso nel secondo semestre (lista progetti)
Lezione 27 (mer. 22 marzo 2017, ore 8.30)
Attività di laboratorio sui progetti assegnati.
Lezione 28 (mer. 29 marzo 2017, ore 8.30)
Graphical User Interface (GUI) - Cenni (slides, Dispensa, Esempi: ContatoreGUI, Addizionatore, Finestra1, Scrollabile)
Lezione 29 (mer. 05 aprile 2017, ore 8.30)
Cenni di Ingegneria del Software: modelli del processo di sviluppo del software e diagrammi UML (Materiale vario (zip 10MB)
Riferimenti:
- Sito del corso di IdS, Laurea in Informatica, UniPi (Gervasi,Semini)
- Sito del corso di IdS, Laurea in Informatica, UniBo (Ciancarini)
- Tutorial su UML del sito html.it
Strumenti utili per il programmatore:
- Profiler (ad es. jvisualvm - mini tutorial)
- Version control system (def. wikipedia, esempi repository: GitHub e Bitbucket)
- Bug Tracking System (ad es. Bugzilla)
Lezione 30 (mer. 19 aprile 2017, ore 8.30)
Presentazione della seconda lista di progetti relativi alla parte di corso nel secondo semestre (lista progetti)
Lezione 31 (mer. 03 maggio 2017, ore 8.30)
Attività di laboratorio sui progetti assegnati.
Lezione 32 (mer. 10 maggio 2017, ore 8.30)
ULTIMA LEZIONE!
Attività di laboratorio sui progetti assegnati.
Torna all'inizio

Materiale didattico:

Testi consigliati (a scelta):

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). A questo si aggiunge una attività laboratoriale prevista per il secondo semestre.

Il progetto può essere richiesto in qualunque periodo dell'anno, a partire dalla fine del primo semestre dell'anno in cui si segue il corso. 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) a metà del primo semestre, che sostituirà parte dell'orale.

L'attività svolta nel secondo semestre (che sarà prevalentemente laboratoriale) dovrà essere svolta con successo al fine di superare l'esame, ma non contribuirà alla formazione del voto finale. Tale attività consisterà nello svolgimento di due ulteriori progetti a piccoli gruppi e sotto la supervisione del docente. Tali progetti saranno assegnati durante il semestre e ognuno sarà preceduto da un paio di lezioni frontali introduttive. Chi non frequenta le lezioni del corso dovrà comunque sostenere i due progetti in autonomia. Chi si trovi in questa situazione è pregato di contattare il docente per l'assegnazione del progetto (non necessariamente durante il semestre).

[Istruzioni esame] Le istruzioni dettagliate per lo svolgimento del progetto d'esame e della prova orale sono disponibili qui

[Elenco argomenti orale] L'elenco degli argomenti per la prova orale è disponibile qui

[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.

[TESTO 2016] Il testo della prova in itinere 2016 è disponibile qui: Compito A e Compito B

[SOLUZIONI 2016] Le soluzioni della prova in itinere 2016 sono disponibili qui: Soluzioni 2016 (A e B)

[RISULTATI] I risultati della prova in itinere sono disponibili a QUESTA PAGINA

Torna all'inizio