Avvisi:
[7nov2019] La PROVA IN ITINERE si terrà il giorno 29 NOVEMBRE 2018, alle ore 9.00 in AULA C. Nella lezione di venerdì 15 novembre si farà un'esercitazione (esercizi svolti dal docente).
[10ott2019] La lezione di venerdì 11 ottobre 2019 è CONFERMATA e si svolgerà regolarmente.
[03ott2019] La lezione di lunedì 7 ottobre 2019 è ANNULLATA.
[22set2019] ATTENZIONE: L'inizio del corso è POSTICIPATO. La prima lezione si terrà il giorno 27 SETTEMBRE 2019 alle ore 8.30 in Laboratorio M
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'inizioCalendario 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:
- Primo semestre:
- Laboratorio di Programmazione Java (6 CFU) - Prof. Milazzo
- Secondo semestre:
- Esperienze di programmazione in Java (3 CFU) - Prof. Romani
- Analisi di Dati (6 CFU) - Prof. Turini
Orario delle lezioni (primo semestre):
- Lunedì: 8.30-10.00 (Laboratorio H)
- Venerdì: 8.30-10.00 (Laboratorio M)
Ricevimento docente:
- Martedì 11.00-13.00 oppure su appuntamento
- ATTENZIONE: prima di presentarsi a ricevimento si suggerisce di contattare il docente via email
Diario delle lezioni:
- Lezione 1 (ven. 27 settembre 2019, ore 08.30)
- Introduzione al corso. (slides)
Background: parte I - Architettura di un elaboratore e rappresentazione binaria dell'informazione (slides) - Lezione 2 (lun. 30 settembre 2019, ore 08.30)
- Background: parte II - Linguaggi di programmazione e algoritmi (cont.lez.prec.)
- Lezione 3 (ven. 4 ottobre 2019, ore 08.30)
- Background: parte II - Linguaggi di programmazione e algoritmi (cont.lez.prec.)
Introduzione a Java (slides)
Introduzione a Eclipse (note) - Lezione 4 (ven. 11 ottobre 2019, ore 08.30)
- Espressioni, variabili e input dall'utente (slides)
Tipi primitivi di Java (slides)
LAB: Esercitazione 1 (testo)
LAB: Esercitazione 2 (testo) - Lezione 5 (lun. 14 ottobre 2019, ore 08.30)
- Tipi primitivi di Java (cont.lez.prec.)
Istruzioni condizionali ed espressioni booleane (slides)
LAB: Esercitazione 3 (testo) - Lezione 6 (ven. 18 ottobre 2019, ore 08.30)
- Istruzioni condizionali ed espressioni booleane (cont. lez. prec.)
Blocchi e cicli (slides)
LAB: Esercitazione 4 (testo) - Lezione 7 (lun. 21 ottobre 2019, ore 08.30
- Programmazione procedurale: metodi ausiliari (slides)
LAB: Esercitazione 5 (testo, soluzione parziale esercizio 5) - Lezione 8 (ven. 25 ottobre 2019, ore 08.30)
- Stringhe e altre classi della Java API(slides)
LAB: Esercitazione 6 (testo) - Lezione 9 (lun. 28 ottobre 2019, 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 10 (lun. 4 novembre 2019, ore 08.30)
- Schemi di programmi iterativi (slides)
LAB: Esercitazione 7bis (testo) - Lezione 11 (ven. 8 novembre 2019, ore 08.30)
- Schemi di programmi iterativi (cont.lez.prec.)
LAB: Uno sguardo agli array bidimensionali - Il gioco del Tris (codice Java) - Lezione 12 (lun. 11 novembre 2019, ore 08.30)
- Introduzione alla programmazione orientata agli oggetti (slides)
Gestione della memoria nella programmazione orientata agli oggetti (slides, Codice esempio complesso) - Lezione 13 (ven. 15 novembre 2019, ore 08.30)
- Esercitazione per la prova in itinere
- Lezione 14 (ven. 21 novembre 2019, ore 08.30)
- Gestione della memoria nella programmazione orientata agli oggetti (cont.lez.prec.)
LAB: Esercitazione su Programmazione a Oggetti (testo) - Lezione 15 (lun. 25 novembre 2019, ore 08.30)
- Metodi, costruttori, overloading e altro... (slides)
Packages (slides)
LAB: Seconda esercitazione su Programmazione a Oggetti (testo) - Lezione 16 (ven. 29 novembre 2019, ore 9.00 -- AULA C)
- Prova in itinere
- Lezione 17 (lun. 2 dicembre 2019, ore 08.30)
- Packages (cont. lez. prec. )
Ereditarietà (slides)
LAB: Esercitazione 9 (testo, soluzione) - Lezione 18 (ven. 6 dicembre 2019, ore 08.30)
- Ereditarietà, tipi e gerarchie (slides)
LAB: Esercitazione 9bis (testo) - Lezione 19 (lun. 9 dicembre 2019, ore 08.30)
- Vettori (slides)
Eccezioni (slides)
LAB: Esercitazione 10 (testo)
Regole per l'esame: progetto e prova orale (slides)
Elenco degli argomenti per la prova orale (elenco) - Lezione 20 (ven. 13 dicembre 2019, ore 08.30 -- LEZIONE ESTESA FINO ALLE 11.00)
- Input/Ouput su file e serializzazione di oggetti (slides, Codice esempio serializzazione)
- Graphical User Interface (GUI) - Cenni (slides, Dispensa, Esempi: ContatoreGUI, Addizionatore, Finestra1, Scrollabile)
Materiale didattico:
Testi consigliati (a scelta):
- Savitch. Programmazione di base e avanzata con Java. PEARSON, Prentice Hall.
- Horstmann. Concetti di informatica e fondamenti di Java. APOGEO.
- Bruni, Corradini, Gervasi. Programmazione in Java. APOGEO.
Inoltre, come letture di approfondimento si suggeriscono:
- Ferragina, Luccio. Il pensiero computazionale. Dagli algoritmi al coding. Il Mulino.
- Grescenzi, Gambosi, Grossi, Rossi. Strutture dati e algoritmi. Pearson.
Link Utili:
- Pagina di download di Java (versione JDK)
- Pagina di download di Eclipse
- Documentazione delle Java API (libreria standard di Java). Consultare la documentazione relativa alla versione di Java installata sul proprio sistema:
- Materiale utile per utilizzare il compilatore Java da terminale/prompt dei comandi:
- Breve guida al sistema MS-DOS (utile per usare il compilatore java manualmente)
- Breve guida al sistema Linux (bash shell) -- N.B. la prima parte è obsoleta!
- Dispensa di Introduzione alle Interfacce Grafiche (GUI) in Java
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.
[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 anni sono disponibili qui:
- Compito A - 2013, Compito B - 2013, Soluzioni 2013
- Compito A - 2014, Compito B - 2014, Soluzioni 2014
- Compito A - 2015, Compito B - 2015, Soluzioni 2015
- Compito A - 2016, Compito B - 2016, Soluzioni 2016
- Compito 2017, Soluzioni 2017
- Compito A - 2018, Compito B - 2018, Soluzioni 2018
Altri esercizi (senza soluzione) sono inoltre disponibili in questa seconda dispensa.
Torna all'inizio