Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
didattica:triennale:pa:ay_1920:main [2019/11/03 18:10] michele [Esami] |
didattica:triennale:pa:ay_1920:main [2020/09/17 16:55] (current) |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== News ===== | ===== News ===== | ||
<WRAP center round important 95%> | <WRAP center round important 95%> | ||
- | * <wrap em>**27 Settembre 2018**</wrap>: 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]]. | + | * <wrap em>**27 Settembre 2019**</wrap>: 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]]. |
+ | * <wrap em>**10 Marzo 2020**</wrap>: 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]]. | ||
</WRAP> | </WRAP> | ||
Line 12: | Line 13: | ||
**Link ESSE3** | **Link ESSE3** | ||
- | * [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2018*N0*N0*S2*13500*9113&ANNO_ACCADEMICO=2018&mostra_percorsi=S|Programmazione Avanzata - AA 2018/19]] | + | * [[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]] |
**Orario delle Lezioni**: | **Orario delle Lezioni**: | ||
- | * Lunedì, dalle 14.00 ale 16.00 (Laboratorio LA1) | + | * Martedì, dalle 11.00 ale 13.00 (Aula AA1) |
- | * Martedì, dalle 11.00 alle 13.00 (Laboratorio LA1) | + | * Mercoledì, dalle 11.00 alle 13.00 (Aula AA1) |
- | * Mercoledì, dalle 11.00 alle 13.00 (Laboratorio LA1) | + | * Giovedì, dalle 11.00 alle 13.00 (Aula AA1) |
**Canale Telegram**: https://t.me/UniCamPA | **Canale Telegram**: https://t.me/UniCamPA | ||
- | |||
- | **Esercizi con soluzioni**: https://github.com/michele-loreti/ap_examples | ||
**Ricevimento studenti**: | **Ricevimento studenti**: | ||
* Mercoledì, dalle 16.00 alle 17.00 | * Mercoledì, dalle 16.00 alle 17.00 | ||
* Giovedì, dalle 10.00 alle 11.00 | * Giovedì, dalle 10.00 alle 11.00 | ||
+ | |||
+ | **Classroom**: Il materiale del corso verrà reso disponibile all'interno di [[https://classroom.google.com/|Classroom]]. Il codice del corso è **ch72rlk**. | ||
+ | |||
</WRAP> | </WRAP> | ||
---- | ---- | ||
Line 44: | Line 46: | ||
</WRAP> | </WRAP> | ||
+ | ---- | ||
+ | ===== Testi di riferimento ===== | ||
+ | <WRAP round 95% center box> | ||
+ | * Core Java SE 9 for the Impatient, Cay Horstmann, Second Edition, Addison-Wesley 2017 | ||
+ | * Clean Architecture: A Craftsman's Guide to Software Structure and Design, 1st edition, Robert C. Martin, Pearson 2018 | ||
+ | </WRAP> | ||
---- | ---- | ||
===== Contenuti del Corso ===== | ===== Contenuti del Corso ===== | ||
Line 57: | Line 65: | ||
- Classi come Tipi. Polimorfismo per sottotipo e polimorfismo parametrico. | - Classi come Tipi. Polimorfismo per sottotipo e polimorfismo parametrico. | ||
- Programmazione test-driven. | - Programmazione test-driven. | ||
- | - Design Pattern: Singleton, Factory, Composite, Visitor, Decorator, Observer, Template, Strategy. | ||
- Argomenti avanzati: Le lambda-expressions, La dependency-injection. | - Argomenti avanzati: Le lambda-expressions, La dependency-injection. | ||
- | - Panoramica di altri linguaggi di programmazione: Python, GO, C#, Swift. | ||
- Applicazioni. | - Applicazioni. | ||
- | </WRAP> | ||
- | ---- | ||
- | ===== Materiale ===== | ||
- | <WRAP box round center 95%> | ||
- | **Slide del Corso** (Slide usate nell'A.A. 18/19) | ||
- | * {{ :didattica:triennale:pa:ay_1920:01slides2019.pdf | Slides 1: Introduzione al corso, Paradigmi di Programmazione, Programmazione Funzionale.}} | ||
- | * {{ :didattica:triennale:pa:ay_1920:02slides2019.pdf | Slides 2: Esercitazione di programmazione funzionale. }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:03slides2019.pdf | Slides 3: Programmazione Orientata agli Oggetti. }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:04slides2019.pdf | Slides 4: Interfacce e lambda expression. }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:05slides2019.pdf | Slides 5: Ereditarietà. }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:06slides2019.pdf | Slides 6: Generici. }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:07slides2019.pdf | Slides 7: Esercitazione Java, BSTree }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:08slides2019.pdf | Slides 8: Principi di progettazione OO }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:09sides2019.pdf | Slides 9: Eccezioni }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:10slides2019.pdf | Slides 10: Collezioni }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:11slides2019.pdf | Slides 11: Streams (di dati)}} | ||
- | * {{ :didattica:triennale:pa:ay_1920:12slides2019.pdf | Slides 12: Classi di I/O}} | ||
- | * {{ :didattica:triennale:pa:ay_1920:13slides2019.pdf | Slides 13: Programmazione Concorrente}} | ||
- | * {{ :didattica:triennale:pa:ay_1920:14slides2019.pdf | Slides 14: Design Patterns}} | ||
- | * {{ :didattica:triennale:pa:ay_1920:15slides2019.pdf | Slides 15: Logging }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:16slides2019.pdf | Slides 16: Building di applicazioni Java }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:17slides2019.pdf | Slides 17: Testing e JUnit }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:18slides2019.pdf | Slides 18: Introduzione a Gradle }} | ||
- | * {{ :didattica:triennale:pa:ay_1920:19slides2019.pdf | Slides 19: JavaFX (Parte 1)}} | ||
- | |||
- | |||
- | |||
- | **Calendario Lezioni** | ||
- | * Al momento non ci sono registrazioni. | ||
- | |||
- | **Riferimenti** | ||
- | * [[http://fsharp.org|Il linguaggio F#.]] | ||
- | |||
- | **Testi di Riferimento** | ||
- | * Core Java SE 9 for the Impatient, Cay Horstmann, Second Edition, Addison-Wesley 2017 | ||
</WRAP> | </WRAP> | ||
---- | ---- | ||
Line 101: | Line 72: | ||
<WRAP center round box 95%> | <WRAP center round box 95%> | ||
L'esame consiste in: | L'esame consiste in: | ||
- | - Una prova scritta per verificare le conoscenze base introdotte nel corso; | + | - Un progetto (da svolgere singolarmente) per valutare la capacità di applicare le metodologie presentate nel corso; |
- | - Un progetto (che può essere svolto in gruppo) 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 per discutere il progetto e per valutare le competenze acquisite. | + | - Un colloquio orale (opzionale) per discutere il progetto e per valutare le competenze acquisite. |
- | Per poter consegnare il progetto tutti i membri del gruppo devono aver superato con successo la prova scritta nella stessa sessione della consegna. Tutti i membri di un gruppo devono svolgere il colloquio orale nella stessa data. | + | |
+ | 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. | ||
</WRAP> | </WRAP> | ||
Line 111: | Line 83: | ||
==== Progetti ==== | ==== Progetti ==== | ||
<WRAP box round center 95%> | <WRAP box round center 95%> | ||
- | - Il progetto dovrà essere consegnato (**solo dopo aver passato lo scritto**) in un archivio ''.tgz'' contenente, oltre al codice, una relazione descrittiva del lavoro svolto; | + | * [[https://docs.google.com/document/d/1sI7ls48YnWlpLxtPzOiRbArouXazb1UMW2PXkPmhm2Q/edit?usp=sharing|Giugno/Luglio 2020]] ([[https://docs.google.com/document/d/1eG0ycCO_x50XGlmfjPOpMB44UjhxyB6BNkW7NSe4vGY/edit|FAQ]]) |
- | - Il progetto può essere svolto in gruppo composto da al più tre persone, i membri del gruppo devono essere comunicati al docente almeno 15 giorni prima della consegna utilizzando il seguente [[https://forms.gle/12GzToLiUayUvJ9d6|link]]; | + | |
- | - La valutazione del progetto terrà conto di (griglia di valutazione disponibile al seguente [[didattica:triennale:pa:ay_1920:grigliavalutazioneprogetti|link]]) : | + | |
- | * Corretto funzionamento; | + | |
- | * Organizzazione e progettazione del codice; | + | |
- | * Conoscenza da parte di tutti i membri del gruppo. | + | |
- | + | ||
- | **Specifica** | + | |
- | L'obiettivo del progetto è quello di sviluppare un semplice gioco in Java. Ogni gruppo può liberamente scegliere tra i seguenti progetti: | + | |
- | * [[https://it.wikipedia.org/wiki/Formula_1_(gioco)|Formula 1]] | + | |
- | * [[https://it.wikipedia.org/wiki/Forza_quattro|Forza quattro]] | + | |
- | * [[https://en.wikipedia.org/wiki/Sprouts_(game)|Sprouts]] | + | |
- | * [[https://en.wikipedia.org/wiki/Dots_and_Boxes|Punti e Quadrati]] | + | |
- | * [[https://en.wikipedia.org/wiki/Paper_soccer|Paper Soccer]] | + | |
- | * <del>[[https://it.wikipedia.org/wiki/Mastermind|Mastermind]]</del> (**Progetto non più disponibile**) | + | |
- | + | ||
- | Altri tipologie di giochi possono essere proposti al docente che potrà valutarne l'opportunità ed aggiungerli eventualmente alla lista. | + | |
- | + | ||
- | All'interno del progetto dovranno essere sviluppate le classi/interfacce che consentano: | + | |
- | - La gestione della partita; | + | |
- | - La definizione di giocatori personalizzati (per definire avversari "automatici"); | + | |
- | - La gestione dell'interazione dell'utente. | + | |
- | + | ||
- | La relazione dovrà descrivere: | + | |
- | - L'architettura delle classi sviluppate; | + | |
- | - Per ogni classe dovranno essere descritte le //responsabilità//; | + | |
- | - Come il codice presentato può essere //esteso// per integrare nuove funzionalità. | + | |
- | + | ||
- | **Modealità di Consegna** | + | |
- | Almeno 15 giorni prima della consegna ogni gruppo si deve registrare al seguente [[https://forms.gle/12GzToLiUayUvJ9d6|link]]. Dopo la registrazione verrà creato un folder condiviso accessibile ai soli membri del gruppo. I progetti dovranno essere caricati entro le 23.59 del giorno fissato come scadenza nel folder. | + | |
</WRAP> | </WRAP> | ||
---- | ---- |