Info 2019

Semestre: Primavera 2019 (A.A. 2018/2019)
Dove e quando: dal 26 febbraio al 31 maggio 2019 nei giorni:
  • martedì ore 8.00-10.30 (aula P2 - aule 037, città universitaria accanto alla cappella universitaria, piazzale Aldo Moro, 5)
  • mercoledì ore 8.00-12.00 (laboratorio aule di Informatica 15-16, via Tiburtina 205)
  • venerdì ore 8.00-10.30 (aula P2 - aule 037, città universitaria accanto alla cappella universitaria, piazzale Aldo Moro, 5)

Informazioni sul docente

Docente: Prof. Roberto Navigli
Laboratorio: Prof. Roberto Navigli + Prof. Giuseppe Pirrò

Ufficio: Stanza G24, viale Regina Elena, 295, palazzina G (secondo piano)
Telefono: 06 49255161
Email: cognome chiocciola di più uniroma1 più it (se sei un essere umano, sostituisci più con punto e chiocciola con @)
Ricevimento: dopo la lezione o per appuntamento
Tutor Unitelma: Stefano Faralli
Tutoraggio su argomenti specifici: giovedi' 14:30 - 16:30 in aule F e G - edificio della Facoltà di Matematica 17, 24, 31 maggio (aula G) e 6, 13, 20, 27 giugno (aula F).

Obiettivi

Il corso di Metodologie di Programmazione ha l'obiettivo di fornire i concetti fondamentali della programmazione orientata agli oggetti (classi e oggetti, incapsulamento, ereditarietà, polimorfismo, binding statico e dinamico, collection, tipi generici, design pattern, ecc.) permettendo allo studente di acquisire strumenti e le metodologie di base della progettazione software tramite un linguaggio orientato agli oggetti. Il linguaggio utilizzato è Java.

Programma di massima

  • Introduzione alla programmazione a oggetti
  • Hello, World! La REPL in Java 9
  • Tipi di dato fondamentali
  • Introduzione a JRE, JDK ed Eclipse
  • Conversioni di tipo
  • Concetti fondamentali di programmazione orientata agli oggetti
  • Incapsulamento e inizializzazione di default
  • La classe String
  • Riferimenti a oggetti, heap & stack, metodi statici
  • Strutture di controllo; costrutti iterativi
  • Iterazione; array
  • Costanti ed enumerazioni  
  • Ereditarietà, classi e metodi astratti. Le parole chiave this e super nei costruttori
  • Overloading e overriding. Visibilità: public, private, protected e default. 
  • Ereditarietà vs. composizione.  
  • Polimorfismo. Downcasting e upcasting.
  • La classe Object 
  • La parola chiave final. 
  • Interfacce. Differenze con le classi astratte. Ereditarietà multipla. Interfacce notevoli.
  • Programmazione funzionale: interfacce funzionali ed espressioni lambda. Riferimenti a metodi. 
  • Stream ed espressioni lambda.
  • Classi top-level, annidate statiche e interne
  • Introduzione alla modularizzazione Java 9
  • Eccezioni: try-catch-finally. Politica catch-or-declare. Parole chiave throw e throws. Le classi Throwable, Exception ed Error. Eccezioni checked e unchecked.
  • Collezioni: gerarchia, classi fondamentali e loro metodi. Tre modi per iterare su una collezione. Iterable e Iterator. Interfaccia Comparable. Ordinamento con Comparable e Comparator
  • Collezioni: insiemi e mappe senza ordinamento, con ordinamento natural e con ordinamento di inserimento. Metodi. Classi Arrays e Collections. La classe pila Stack e l'interfaccia coda Queue. Implementazione mediante LinkedList
  • Input/Output
  • Ricorsione in Java. Uso dell'overloading.
  • Uguaglianza in Java.
  • Tipi generici. 
  • Design pattern: strategy, observer, factory, decorator, callback, MVC. 
  • Reflection. La classe Class. 

Prerequisiti

Non ci sono propedeuticità formali, tuttavia è consigliabile aver superato o almeno frequentato il corso di Fondamenti di Programmazione.

Testi suggeriti

E' fortemente consigliato lo studio di almeno uno dei seguenti testi:
  • Claudio De Sio Cesari. Manuale di Java 9 - Programmazione orientata agli oggetti con Java standard edition 8 Hoepli, 2018.
  • Herbert Schildt. Java: The Complete Reference, eleventh edition. Mcgraw-Hill Osborne Media, 2018.
  • Cay S. Horstmann. Concetti di informatica e fondamenti di Java. Apogeo, 6a edizione, 2016. 
  • Bruce Eckel. Thinking in Java. Pearson, 4a edizione, 2006 (disponibile sia in inglese che in italiano). La 3a edizione in inglese è gratuita.
  • Kathy Sierra and Bert Bates. Head First Java, 2nd edition. O'Reilly, 2005.
Si consiglia caldamente di complementare gli argomenti mancanti con il materiale utilizzato a lezione e in laboratorio.

Modalità d'esame

L'esame consta di una prova scritta e un progetto:
  • Prova scritta: da svolgere a partire dalla sessione estiva. Potrà essere sostituita da 4 prove intermedie: 3 svolte durante il corso, di cui una durante la settimana dedicata a tale scopo e una sulla restante parte di programma da svolgere durante la prima sessione d'esame. Almeno 3 su 4 delle prove di "esonero" devono essere superate con almeno 18/30 (se non sostenuta, una prova varrà 0 nella media). SOLO PER LA TELEDIDATTICA: la prima prova sarà svolta come homework assegnato durante le prime settimane del corso.
  • Progetto: le specifiche del progetto saranno rese disponibili durante il corso. Nel caso in cui il progetto permetta lo svolgimento di gruppo, il progetto può essere svolto individualmente o, se il progetto lo consente, da un gruppo di al più 2 studenti. Il superamento del progetto richiede, oltre alla consegna di ciò che è richiesto dalle specifiche, anche una discussione individuale del progetto. Il progetto può essere consegnato 5 giorni prima della data dell'esame SCRITTO, entro la data fissata nel calendario specificato in fondo a questa pagina. Il voto relativo al progetto dipende sia dal materiale consegnato che dalla discussione orale. Se ci sono significativi indizi che portano a credere che il progetto consegnato sia stato copiato in tutto o in parte, il progetto è considerato nullo per tutti gli studenti coinvolti, incluso chi ha permesso di copiare
L'esame è considerato superato con successo se si ottiene la sufficienza (ovvero 18/30) sia nella prova scritta che nel progetto. Il voto finale è ottenuto calcolando la media ponderata dei voti ottenuti: 60% prova scritta e 40% progetto. Le due prove possono essere superate in modo indipendente (ovvero in date differenti) e in qualsiasi ordine. Tuttavia la validità dei voti ottenuti nelle due prove termina con l'ultima sessione dell'anno accademico (ovvero entro la sessione di gennaio-febbraio dell'anno seguente o, nel caso di studenti lavoratori/fuori corso ecc., nella sessione di marzo-aprile). La consegna del progetto è possibile solo fino a febbraio (l'appello di marzo è solamente per la prova scritta). La prenotazione su Infostud è necessaria per il sostenimento della prova scritta o per la verbalizzazione finale (in caso contrario, la verbalizzazione sarà rimandata all'appello successivo), ma non per la discussione del solo progetto.

IMPORTANTE: il mancato superamento di una prova scritta (con l'esclusione degli esoneri) impedisce l'accesso alla prova scritta successiva (da giugno a luglio, da luglio a settembre, da gennaio a febbraio).

Date e appelli

  • Prova intermedia (secondo esonero in presenza): lunedì 8 aprile dalle 13.30 alle 17.30 in aula Amaldi (Fisica, edificio Marconi).
  • Scritto di giugno + esonero 4: 20 giugno ore 8.30 aula P2
  • Scritto di luglio: 11 luglio ore 12.00 aula P1
  • Scritto di settembre: 4 settembre ore 14.30 aula P2
  • Scritto di gennaio 2020: 22 gennaio ore 14 aula 1L Castro Laurenziano
    , discussione progetti: 30 gennaio ore 10.15, studio del docente
  • Scritto di febbraio 2020: 18 febbraio ore 14 aula 1L Castro Laurenziano
    , discussione progetti: 19 febbraio ore 16, studio del docente

Nessun commento:

Posta un commento