Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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>​
 ---- ----