Avvisi:
ATTENZIONE:
QUESTA PAGINA E' OBSOLETA! LA PAGINA DEL CORSO PER L'ANNO ACCADEMICO 2016/2017 E' QUESTA)
[06mag2016] Ultima lezione del corso ANNULLATA CAUSA SCIOPERO. Sostituita da ricevimento straordinario (vedere la sezione Diario delle lezioni per i dettagli
[23feb2016] L'ORARIO DELLE LEZIONI È CAMBIATO. Le lezioni del secondo semestre si terrano il venerdì mattina dalle 9.00 alle 10.30 in Laboratorio H. (la prossima lezione si terrà quindi il 4 marzo)
[16feb2016] Le LEZIONI DEL SECONDO SEMESTRE (solo per chi e' iscritto al primo anno della magistrale) inizieranno il 22 febbraio 2016 alle 8.30 in Lab. H
[17dic2015] Da ora è possibile richiedere l'assegnamento di un progeto di esame, anche per coloro che dovranno proseguire con il corso nel secondo semestre. Vedere la sezione Esami per informazioni sulle modalità di assegnazione e svolgimento dei progetti.
[15dic2015] Le istruzioni per il progetto e la prova orale e il programma dettagliato del corso sono disponibili 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'inizioCalendario del corso
Da quest'anno il modulo di Programmazione Java avrà un carico didattico di 9 CFU, di cui:
- 6 CFU svolti nel primo semestre;
- 3 CFU svolti nel secondo semestre (in parallelo al modulo di Analisi di Dati tenuto dal Prof. Turini).
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'inizioOrario delle lezioni (secondo semestre):
- Venerdì: 9.00-10.30 (Laboratorio H)
Ricevimento docente:
- Giovedì 14.00-16.00
- Oppure: su appuntamento (da concordare via email)
Diario delle lezioni:
- Lezione 1 (mar. 29 settembre 2015, ore 12.00)
- Introduzione al corso. (slides)
Background: parte I - Architettura di un elaboratore e rappresentazione binaria dell'informazione (slides) - Lezione 2 (gio. 1 ottobre 2015, ore 10.15)
- Background: parte II - Linguaggi di programmazione e algoritmi (cont.lez.prec.)
- Lezione 3 (mar. 6 ottobre 2015, ore 12.00)
- Background: parte II - Linguaggi di programmazione e algoritmi (cont.lez.prec.)
Introduzione a Java (slides) - Lezione 4 (mar. 13 ottobre 2015, ore 12.00)
- Introduzione a Eclipse (note)
Espressioni, variabili e input dall'utente (slides)
LAB: Esercitazione 1 (testo) - Lezione 5 (gio. 15 ottobre 2015, ore 10.15)
- Tipi primitivi di Java (slides)
LAB: Esercitazione 2 (testo)
- Lezione 6 (mar. 20 ottobre 2015, ore 12.30)
- LA LEZIONE INIZIERÀ ALLE 12.30 PER ASSEMBLEA STUDENTESCA
Istruzioni condizionali ed espressioni booleane (slides)
LAB: Esercitazione 3 (testo) - Lezione 7 (gio. 22 ottobre 2015, ore 10.15)
- Blocchi e cicli (slides)
LAB: Esercitazione 4 (testo) - Lezione 8 (mar. 27 ottobre 2015, ore 12.00)
- Programmazione procedurale: metodi ausiliari (slides)
LAB: Esercitazione 5 (testo, soluzione parziale esercizio 5) - Lezione 9 (mar. 3 novembre 2015, ore 12.00)
- Stringhe e altre classi della libreria di Java (slides)
LAB: Esercitazione 6 (testo) - Lezione 10 (gio. 5 novembre 2015, ore 10.15)
- Array (slides)
LAB: Esercitazione 7 (testo)
Presentazione prova in itinere (dispensa e testo della prova dello scorso anno disponibili nella sezione Esami) - Lezione 11 (mar. 10 novembre 2015, ore 12.00)
- Schemi di programmi iterativi (slides)
LAB: Esercitazione 7bis (testo) - Lezione 12 (gio. 12 novembre 2015, ore 10.15)
- Esercitazione per la prova in itinere
- Lezione 13 (mar. 17 novembre 2015, ore 12.00)
- LAB: Uno sguardo agli array bidimensionali - Il gioco del Tris (codice Java)
Introduzione alla programmazione orientata agli oggetti (slides) - Lezione 14 (gio. 19 novembre 2015, ore 10.15)
- Prova in itinere (Compito A, Compito B, Soluzioni)
- Lezione 15 (mar. 24 novembre 2015, ore 12.00)
- Gestione della memoria nella programmazione orientata agli oggetti (slides, Codice esempio complesso)
LAB: Esercitazione su Programmazione a Oggetti (testo) - Lezione 16 (gio. 26 novembre 2015, ore 10.15)
- Metodi, costruttori, overloading e altro... (slides)
- Lezione 17 (mar. 01 dicembre 2015, ore 12.00)
- Packages (slides)
Ereditarietà (slides) - Lezione 18 (gio. 03 dicembre 2015, ore 10.15)
- LAB: Uno sguardo a Greenfoot
LAB: Esercitazione 9 (testo, soluzione vista a lezione)
LAB: Esempio complesso - simulatore di gioco da tavolo (file java,possibili estensioni) - Lezione 19 (gio. 10 dicembre 2015, ore 10.15)
- Ereditarietà, tipi e gerarchie (slides)
LAB: Esercitazione 9 (testo) - Lezione 20 (mar. 15 dicembre 2015, 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 21 (gio. 17 dicembre 2015, ore 10.15)
- Eccezioni (slides)
Input/Ouput su file e serializzazione di oggetti (slides, Codice esempio serializzazione) LEZIONI DEL SECONDO SEMESTRE - Lezione 22 (lun. 22 febbraio 2016, ore 8.30)
- La struttura dati Albero e la ricorsione (slides)
- Lezione 23 (ven. 4 marzo 2016, ore 9.00)
- Strutture dati del Java Collections Framework (slides,Allegati)
- Lezione 24 (ven. 11 marzo 2016, ore 9.00)
- Presentazione della prima lista di progetti relativi alla parte di corso nel secondo semestre (lista progetti)
- Lezione 25 (ven. 18 marzo 2016, ore 9.00)
- Attività di laboratorio sui progetti assegnati.
- Lezione 26 (ven. 1 aprile 2016, ore 9.00)
- Attività di laboratorio sui progetti assegnati.
- Lezione 27 (ven. 8 aprile 2016, ore 9.00)
- Graphical User Interface (GUI) - Cenni (slides, Dispensa, Esempi: ContatoreGUI, Addizionatore, Finestra1, Scrollabile)
- Lezione 28 (ven. 15 aprile 2016, ore 9.00)
- 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 29 (ven. 23 aprile 2016, ore 9.00)
- Presentazione della seconda lista di progetti relativi alla parte di corso nel secondo semestre (lista progetti)
- Lezione 30 (ven. 29 aprile 2016, ore 9.00)
- Attività di laboratorio sui progetti assegnati.
- Lezione 31 (ven. 6 maggio 2016, ore 9.00)
- Attività di laboratorio sui progetti assegnati.
Ultima lezione del corso ANNULLATA CAUSA SCIOPERO. In caso di necessità di assistenza sui progetti assegnati contattare il docente per fissare un ricevimento straordinario.
Materiale didattico:
Testi consigliati (a scelta):
- Savitch. Programmazione con Java. PEARSON, Prentice Hall.
- Horstmann. Concetti di informatica e fondamenti di Java. APOGEO.
- Bruni, Corradini, Gervasi. Programmazione in Java. APOGEO.
Link Utili:
- Pagina di download di Java (versione JDK)
- Pagina di download di Eclipse
- Sito dell'editor Notepad++
- Java API Specifications Ver. 8 (ultima versione)
- Convenzioni per la scrittura di programmi Java (in Inglese)
- Breve guida al sistema MS-DOS
- 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 gruppi di due persone e in una prova orale (discussione del progetto + domande/esercizi).
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).
[Importante] Per la preparazione della prova in itinere è disponibile questa dispensa che contiene numerosi esercizi svolti. Inoltre, il testo e la soluzione della prova in itinere degli ultimi due anni sono disponibili qui: Compito A - 2013, Compito B - 2013, Soluzioni 2013, Compito A - 2014, Compito B - 2014, Soluzioni 2014. Altri esercizi sono inoltre disponibili qui.
[TESTO 2015] Il testo della prova in itinere 2015 è disponibile qui: Compito A e Compito B
[SOLUZIONI 2015] Le soluzioni della prova in itinere 2015 sono disponibili qui: Soluzioni 2015 (A e B)
[Istruzioni esame] Le istruzioni 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
Torna all'inizio