====== Programmazione Avanzata ====== ---- ===== News ===== * **27 Settembre 2019**: Il corso si terrà nel secondo semestre. Le informazioni per chi ha frequentato nell'a.a. 2018/10 sono quelle disponibili al seguente [[http://didattica.cs.unicam.it/doku.php?id=didattica:triennale:pa:ay_1819:main|link]]. * **10 Marzo 2020**: A seguito dell'emergenza Covid-19, fino al 3 Aprile, le lezioni verranno svolte in streaming all'interno dell'aula virtuale [[https://unicam.webex.com/meet/michele.loreti]]. ---- ===== Informazioni Generali ===== **Docente**: [[https://docenti.unicam.it/pdett.aspx?ids=N&tv=d&UteId=1103&ru=PA|Michele Loreti]] **Link ESSE3** * [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2019*N0*N0*S2*15080*9113&ANNO_ACCADEMICO=2019&mostra_percorsi=S|Programmazione Avanzata - AA 2019/20]] **Classroom**: * [[https://classroom.google.com/c/Mjc3NzMyMjE4Mzk5?cjc=hlsvh4i]] **Server Discord**: Per semplificare le interazioni tra gli studenti ed il docente è stato creato un [[https://discord.gg/Gn55NjmZmD|Server Discord]] per il corso all'interno del quale sono disponibili diversi canali dove, oltre agli annunci, sarà possibile porre delle domande sugli argomenti del corso e discutere con tra studenti. Il canale degli [[https://discord.gg/Gn55NjmZmD|annunci]] disponibile sul server costituirà lo strumento principale di comunicazione tra il docente e gli studenti. **Orario delle Lezioni**: * Lunedì, dalle 14.00 ale 17.00 (Aula AA1) * Martedì, dalle 11.00 alle 13.00 (Aula AA1) * Giovedì, dalle 11.00 alle 13.00 (Aula AA1) **Ricevimento studenti**: * Mercoledì, 11.00-12.00 * Giovedì, 14.00-15.00 ---- ===== Obiettivi del Corso ===== **Conoscenze:** * concetti basilari della metodologia orientata agli oggetti nella progettazione del software; * caratteristiche principali dei linguaggi orientati agli oggetti, quali Java, e tecniche di programmazione; * elementi base della programmazione funzionale; * schemi di soluzioni avanzate a problemi ricorrenti nel design del software. **Competenze acquisite (al termine del corso)** Gli studenti dovranno dimostrare di saper usare la metodologia orientata agli oggetti nella progettazione e implementazione di componenti software, che siano facilmente estendibili e riusabili. **Capacità acquisite (al termine del corso)** Capacità di sviluppare software flessibile, utilizzando tecniche avanzate orientate agli oggetti. ---- ===== Testi di riferimento ===== * Note fornite settimanalmente dal docente. ---- ===== Contenuti del Corso ===== Nel corso verrà introdotta, attraverso l'uso del linguaggio Java, la metodologia orientata agli oggetti per la costruzione del software: - Paradigmi di programmazione: imperativo, funzionale e orientato agli oggetti. - Principi di Programmazione funzionale. - Principi di Programmazione Orientata agli Oggetti: Classe, Interfaccia e implementazione nascosta. Il linguaggio Java. - UML (Unified Modeling Language): il "diagramma di classi" per l'analisi, la progettazione e la documentazione. - Ereditarietà. Composizione di oggetti e delega di messaggi. Le classi astratte. - Classi come Tipi. Polimorfismo per sottotipo e polimorfismo parametrico. - Programmazione test-driven. - Argomenti avanzati: Le lambda-expressions, La dependency-injection. - Applicazioni. ---- ===== Modalità d'esame ===== L'esame consiste in: - Un progetto (da svolgere singolarmente) per valutare la capacità di applicare le metodologie presentate nel corso; - Una prova scritta per verificare le conoscenze base introdotte nel corso, possono partecipare allo scritto solo coloro che hanno consegnato il progetto; - Un colloquio orale (opzionale) per discutere il progetto e per valutare le competenze acquisite. N.B. In caso di restrizioni legate all'emergenza Covid, la prova scritta verrà sostituita con un esame orale da sostenere solo **dopo** avere consegnato il progetto. ---- ==== Progetti ==== I progetti devono essere consegnati due giorni prima dello scritto utilizzando il corrispondente link sul Classroom del corso. Ogni sessione d'esame avrà una specifica distinta e disponibile al seguente link: * Specifica appelli Giugno/Luglio 2021 (Disponibile dal 15/3/2021) * Specifica appelli Settembre 2021 (Disponibile dal 15/7/2021) * Specifica appelli Febbraio/Marzo 2022 (Disponibile dal 31/10/2021) ---- ===== Esami ===== **Date Prove Scritte A.A. 2020/2021** ({{ :didattica:triennale:pa:ay_2021:esempiocompito.pdf |Esempio Compito}}) *08/06/2021, Ore 10:00, Aula AA1 Polo Lodovici (in via eccezionale, la consegna dei progetti per questo scritto è prorogata al 12/6/2021); *29/06/2021, Ore 10:00, Aula AA1 Polo Lodovici; *20/07/2021, Ore 10:00, Aula AA1 Polo Lodovici; *01/09/2021, Ore 10:00, Aula AB1 Polo Lodovici; *21/09/2021, Ore 10:00, Aula AB1 Polo Lodovici; *01/02/2022, Ore 10:00, Aula AB1 Polo Lodovici; *22/02/2022, Ore 10:00, Aula AB1 Polo Lodovici; *15/03/2022, Ore 10:00, Aula AB1 Polo Lodovici.