Informazioni corso 2021

Semestre: Primavera 2021 (A.A. 2020/2021)

Dove e quando: dal 22 febbraio al 28 maggio 2021 nei giorni:
  • martedì ore 8.00-11.00 (aula Cabibbo - Edificio Fisica Enrico Fermi, piazzale Aldo Moro, 5)
  • mercoledì ore 8.00-12.00 (online - was: laboratorio aule di Informatica 15-16, via Tiburtina 205)
  • venerdì ore 8.00-10.00 (aula Cabibbo - Edificio Fisica Enrico Fermi, piazzale Aldo Moro, 5)
ATTENZIONE: è previsto che le lezioni saranno svolte in modalità blended, con presenza in aula fino al 50%.

Informazioni sul docente

Docente: Prof. Roberto Navigli

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, 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, 7a edizione, 2019. 
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, cui - causa Covid - si affiancherà una prova orale a conferma delle nozioni dimostrate durante la prova scritta svolta da remoto. La prova scritta potrà essere sostituita da 2 esoneri (prove intermedie), che dovranno entrambi essere superati con almeno 18/30
  • 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 (data fissata nel calendario specificato in fondo a questa pagina). Ad esempio, se lo scritto si tiene il 25 dicembre, la consegna deve avvenire entro la mezzanotte del 20 dicembre. 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/finale o per la verbalizzazione finale (in caso contrario, la verbalizzazione sarà rimandata all'appello successivo), ma non per la discussione del solo progetto. Inoltre, a causa dell'organizzazione degli appelli da remoto, la prenotazione sarà possibile fino a 4 giorni prima di ogni appello come da scadenze specificate su infostud.



Date e appelli

  • Scritto di giugno 2021 + esonero 2 (da remoto): 16 giugno ore 8.30 (online; non è necessaria la prenotazione) + orale il 6 luglio (11-19.45) e l'8 luglio (14-19.45), secondo calendario inviato sul gruppo. Gli scritti saranno resi disponibili su Google classroom e avranno una durata di 5 ore. NB: questo è l'unico appello valido per l'esonero 2. Consegna del progetto nella stessa sessione: 25 giugno fino alla mezzanotte (anche l'una, se serve).
  • Scritto di luglio 2021 (da remoto): 2 luglio ore 8.30 (online; non è necessaria la prenotazione) + orale da organizzare sulla base di un calendario. Gli scritti saranno resi disponibili su Google classroom e avranno una durata di 5 ore. Consegna del progetto nella stessa sessione: 12 luglio fino alle mezzanotte (anche l'una, se serve) 15 luglio (incluso, anywhere of Earth). Discussione del progetto: giovedì 29 dalle ore 2 presso il DIAG (aula A3).
  • Scritto di settembre 2021 (da remoto): 7 settembre ore 8 (online: non è necessaria la prenotazione) + orale (NON discussione progetto) il giorno 21 settembre dalle ore 12.00 a questo link: meet.google.com/jvh-xykv-ihd. Consegna del progetto nella stessa sessione: 19 settembre (incluso, anywhere of Earth). Discussione del progetto: 20 settembre dalle ore 9 presso il DIAG (aula A3), via Ariosto 25 22 settembre dalle ore 8.30 presso il DIAG via Ariosto 25 (aula A4A5) in presenza per chi ha il green pass, da remoto per gli altri: meet.google.com/vez-cnev-yxx (a seguire, dopo tutte le discussioni in presenza)
  • Scritto di ottobre 2021 (da remoto): 26 ottobre alle ore 15 a questo link: meet.google.com/jhc-yzvv-kfv; riservato a studenti part-time, fuori corso, iscritti per l’A.A. 2020-2021 al terzo anno della laurea e al secondo anno della laurea magistrale, studenti genitori, studenti con disabilità e con D.S.A. e studenti lavoratori
  • Scritto di gennaio 2022: 17 gennaio 18 gennaio (aggiornato), ore 09:00-13:00, aula A3 (via Ariosto 25). Discussione progetti: 24 gennaio, online (vedi gruppo del corso) Aula A2 (via Ariosto 25), ore 09:00-12:00
  • Scritto di febbraio 2022: 7 febbraio 9 febbraio (aggiornato), ore 09:00-13:00, aula A3 (via Ariosto 25). Discussione progetti: 14 febbraio, Aula A4 (via Ariosto 25), ore 09:00-12:00

Nessun commento:

Posta un commento