Info 2018

Semestre: Primavera 2018 (A.A. 2017/2018)
Dove e quando: dal 26 febbraio al 1 giugno 2018 nei giorni:
  • Martedì ore 8.00-10.30 (aula P2 - aule 037, città universitaria accanto alla cappella universitaria, piazzale Aldo Moro, 5)
  • Mercoledì ore 12.00-16.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

Docenti: Prof. Roberto Navigli ed Emanuele Rodolà
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

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, 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 8 - Programmazione orientata agli oggetti con Java standard edition 8 Hoepli, 2015.
  • Herbert Schildt. Java: The Complete Reference. Mcgraw-Hill Osborne Media, 2014.
  • Cay S. Horstmann. Concetti di informatica e fondamenti di Java. Apogeo, 5a edizione, 2010. 
  •  Paul J. Deitel, Harvey M. Deitel. Programmazione Java: Fondamenti. Pearson, 7a edizione, 2008. Alcuni argomenti sono trattati nel secondo libro degli stessi autori: Programmazione Java: Tecniche Avanzate.
  • 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. O'Reilly.
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: almeno due delle tre prove devono essere superate con almeno 18/30 (se non sostenuta, una prova varrà 0 nella media), tranne per la prima prova che può essere superata con un voto < 18 ma >= 15 (in questo caso, tuttavia, non è possibile ottenere un voto insufficiente nelle due prove successive). PER TUTTI: su richiesta è possibile sostenere una prova orale per migliorare il voto dello scritto (o, nel caso degli esoneri, della prova peggiore o non sostenuta), da sostenere durante l'orale del primo appello (vedi date sotto).
  • 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 in corrispondenza di (ovvero: entro) ciascuna 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. 
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, 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 (es. da giugno a luglio o da luglio a settembre).

Date e appelli

  • Prova intermedia: la prova intermedia ha avuto luogo martedì 17 aprile alle ore 8 in aula P01.
  • Appello scritto di giugno + ultima prova d'esonero: il 12 giugno alle ore 8.45 in aula P2; orale esoneri e discussione progetto consegnato a giugno: 3 luglio dalle ore 11 (AGGIORNATO) nello studio del docente.
  • Appello scritto di luglio: il 5 luglio alle ore 8.45 in aula P2 
  • Appello scritto di settembre: il 20 settembre alle ore 14.45 in aula P1; discussione progetto consegnato a settembre (AGGIORNATO): JavaBomber - 28 settembre dalle ore 14 in aula G50, Babelarity 28 settembre dalle ore 16.30 nello studio del docente, JavaBomber - 1 ottobre 12.00-13.30 in aula 9L Castro Laurenziano.
  • Appello scritto di gennaio: il 23 gennaio alle ore 10 in aula G50; discussione progetto consegnato: 12 febbraio alle 9 nello studio del docente.
  • Appello scritto di febbraio: il 13 febbraio alle ore 11 in aula G50; discussione progetto consegnato a febbraio - da definire con il docente.
 

Nessun commento:

Posta un commento