METODOLOGIE DI PROGRAMMAZIONE

Obiettivi formativi

Obiettivi generali: Apprendimento dei concetti della programmazione orientata agli oggetti mediante il linguaggio di programmazione Java. Obiettivi specifici: I concetti fondamentali della programmazione orientata agli oggetti: classi e oggetti, incapsulamento, ereditarietà, polimorfismo, binding statico e dinamico, i design pattern. La programmazione funzionale. Gli strumenti e le metodologie di base della progettazione software tramite un linguaggio orientato agli oggetti. Il linguaggio Java. Conoscenza e comprensione: Conoscenza dei costrutti dei linguaggi di programmazione orientata agli oggetti, con particolare riferimento al linguaggio Java. Comprensione di un programma Java. Capacità di scrittura di un programma Java di piccole e medie dimensioni. Applicare conoscenza e comprensione: Essere in grado di applicare le metodologie di base per affrontare la progettazione di sistemi software di grandezza medio-piccola. Saper usare i principali strumenti di sviluppo per realizzare tali sistemi in Java. Capacità critiche e di giudizio: Capacità di identificare istruzioni, costrutti o pattern errati o inefficienti così come corretti o efficienti in Java. Capacità comunicative: Illustrazione del progetto sviluppato. Capacità di apprendimento: Capacità di apprendere e applicare nuove tecniche di programmazione a partire da quelle apprese durante il corso.

Canale 1
STEFANO FARALLI Scheda docente

Programmi - Frequenza - Esami

Programma
Syllabus: - 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 di riferimento
La pagina del corso include tutto il materiale didattico necessario: video, slide ed eserciziari. Tuttavia, si consiglia di fare riferimento ad almeno un testo tra quelli consigliati [1, 2, 3].
Modalità insegnamento
Il corso si svolge in modalità sincrona a distanza (https://elearning.unitelma.it/course/view.php?id=1901). Le 32 videolezioni sono sempre disponibili. Settimanalmente: 1) il docente seleziona un gruppo di videolezioni; 2) invita gli studenti a preparare le lezioni; 3) organizza e tiene dei Webinar per approfondire le videolezioni e svolgere esercizi con gli studenti. I Webinar sono registrati e sempre disponibili. I forum del corso (https://elearning.unitelma.it/mod/forum/view.php?id=89233, https://elearning.unitelma.it/mod/forum/view.php?id=61534) sono attivi tutto l'anno.
Frequenza
La partecipazione sincrona alle attività del corso non è obbligatoria.
Modalità di esame
Il calendario degli appelli di esame è consultabile al seguente link: https://www.studiareinformatica.uniroma1.it/appelli-d-esame L' esame consta di una prova scritta e di un progetto: Prova scritta: da svolgere a partire dalla sessione estiva. Consiste di domande a risposta aperta e di esercizi. L'obiettivo è di verificare la preparazione degli studenti ed in particolare le conoscenze acquisite. Progetto: le specifiche del progetto saranno rese disponibili durante il corso. Consiste nello sviluppo di un software con il linguaggio Java. Il progetto viene svolto autonomamente dagli studenti o in gruppi di al massimo 2 persone. L'obiettivo è di verificare le capacità di programmazione con il linguaggio Java acquisite durante il corso. 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.
Bibliografia
[1] Claudio De Sio Cesari. Manuale di Java 9 - Programmazione orientata agli oggetti con Java standard edition 8 Hoepli, 2018. [2] Herbert Schildt. Java: The Complete Reference, eleventh edition. Mcgraw-Hill Osborne Media, 2018. [3] Cay S. Horstmann. Concetti di informatica e fondamenti di Java. Apogeo, 7a edizione, 2019.
Modalità di erogazione
Il corso si svolge in modalità sincrona a distanza (https://elearning.unitelma.it/course/view.php?id=1901).Le 32 videolezioni sono sempre disponibili.Settimanalmente:1) il docente seleziona un gruppo di videolezioni;2) invita gli studenti a preparare le lezioni;3) organizza e tiene dei Webinar per approfondire le videolezioni e svolgere esercizi con gli studenti.I Webinar sono registrati e sempre disponibili.I forum del corso (https://elearning.unitelma.it/mod/forum/view.php?id=89233, https://elearning.unitelma.it/mod/forum/view.php?id=61534) sono attivi tutto l'anno.
  • Codice insegnamento1015884
  • Anno accademico2024/2025
  • CorsoInformatica - erogato in modalità prevalentemente a distanza
  • CurriculumCurriculum unico
  • Anno1º anno
  • Semestre2º semestre
  • SSDINF/01
  • CFU9
  • Ambito disciplinareDiscipline Informatiche