====== Laboratorio di Algoritmi e Strutture Dati ======
----
===== News =====
* La pagina di riferimento del corso tenuto nell'Anno Accademico **2018/2019** si trova a questo [[http://didattica.cs.unicam.it/doku.php?id=didattica:triennale:asd:ay_1819:lab|link]].
* 28 Settembre 2020: L'inizio del corso è fissato per **Venerdì 2 Ottobre 2020 alle ore 9.00 in aula B1** del Polo Informatico "Carla Lodovici" Edificio B, Via Madonna delle Carceri 7, Camerino. La prima lezione e le successive saranno disponibili in **streaming Webex** su [[https://unicam.webex.com/meet/luca.tesei|https://unicam.webex.com/meet/luca.tesei]]. La **registrazione delle lezioni** sarà resa disponibile tramite la piattaforma Google Classroom.
----
===== Informazioni Generali =====
**Docente**:
* [[http://docenti.unicam.it/pdett.aspx?ids=N&tv=d&UteId=572&ru=RU|Luca Tesei]]
**Link ESSE3**
* [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2020*N0*N0*S1*15916*8490&ANNO_ACCADEMICO=2020&mostra_percorsi=N|Algoritmi e Strutture Dati - AA 2020/21]]
**Orario delle Lezioni**:
* Venerdì 9-12 aula B1 del Polo Informatico "Carla Lodovici" Edificio B, via Madonna delle Carceri 7, Camerino
**Aula virtuale webex**
* [[https://unicam.webex.com/meet/luca.tesei/|Aula Virtuale]]
**Ricevimento studenti**:
* Via webex o in presenza previo appuntamento con il docente, preso per email.
**Acronimo ufficiale del corso**:
* ASDL2021
**Codice di accesso al sito del corso su Google Classroom**
* Le lezioni registrate e il materiale del corso sono forniti sulla piattaforma **[[https://classroom.google.com|Google Classroom]]**, corso ASDL2021:
- Autenticarsi su google con le credenziali Unicam
- Iscriversi tramite il link [[https://classroom.google.com/c/NjA0MzQ0MTU0ODha?cjc=vvmyw4z|https://classroom.google.com/c/NjA0MzQ0MTU0ODha?cjc=vvmyw4z]]
----
===== Obiettivi del Corso =====
Si consulti la [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2020*N0*N0*S1*15916*8490&ANNO_ACCADEMICO=2020&mostra_percorsi=N|pagina del corso su ESSE3]]
----
===== Contenuti del Corso =====
Si consulti la [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2020*N0*N0*S1*15916*8490&ANNO_ACCADEMICO=2020&mostra_percorsi=N|pagina del corso su ESSE3]]
----
===== Materiale =====
**Materiale delle lezioni e registrazioni dello streaming webex**
* Tutto il materiale è fornito tramite il sito del corso sulla piattaforma **Google Classroom**
* La consegna dei miniprogetti (parziali) e degli esercizi a casa avverrà tramite la stessa piattaforma
* Le istruzioni per accedere sono nella sezione "Informazioni Generali" qui sopra
**Testi di Riferimento**
* T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduzione agli Algoritmi e Strutture Dati (terza edizione), McGraw-Hill, 2010, [[https://www.mheducation.it/9788838665158-italy-introduzione-agli-algoritmi-e-strutture-dati-3ed|Sito Web]]
* Cay Horstmann, Concetti di informatica e fondamenti di Java, sesta edizione, Apogeo, 2016, [[http://www.apogeoeducation.com/concetti-di-informatica-e-fondamenti-di-java.html| Sito Web]]. In alternativa un qualsiasi manuale o libro su Java Standard Edition.
**Testi di Approfondimento**
* C. Toffalori, F. Corradini, S. Leonesi, S. Mancini, Teoria della computabilità e della complessità, McGraw-Hill Education Italy, 2005.
** Codice distribuito a lezione (si vedano i riferimenti relativi in Google Classroom)**
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-equazioni2g-corretto-09-10-2020.zip | Codice delle Slides: Java e OOP corretto al 09/10/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-combinationlock.zip | Esercitazione 2 del 09/10/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-slides-interfacce-e-polimorfismo.zip |Codice delle slides: Interfacce e Polimorfismo}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-slides-ereditarieta.zip |Codice delle slides: Ereditarietà}} Versione corretta del 20 ottobre 2020: {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-slides-ereditarieta_-corretto.zip |Codice delle slides: Ereditarietà}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-slides-gestione-delle-eccezioni.zip |Codice delle slides: Gestione delle Eccezioni}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-slides-gestione-delle-eccezioni-textfiles.zip |Codice delle slides: Gestione delle Eccezioni - File di testo per la prova}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-es3.zip |Esercitazione 3 del 16/10/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-soluzione-es2.zip |Soluzione Proposta dell'Esercitazione 2}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-es4.zip |Esercitazione 4 del 20/10/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-slides-collections.zip |Codice delle slides: Collections}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es5.zip |Esercitazione 5 del 30/10/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-soluzione-esercitazione-es3.zip |Soluzione Proposta dell'Esercitazione 3}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-soluzione-esercitazione-es4.zip |Soluzione Proposta dell'Esercitazione 4}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-soluzione-esercitazione-es5.zip |Soluzione Proposta dell'Esercitazione 5}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es6.zip |Esercitazione 6 del 06/11/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-traccia-mp1.zip |Traccia del Miniprogetto 1 ASDL2021MP1}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es7.zip |Esercitazione 7 del 13/11/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-soluzione-es6.zip |Soluzione Proposta dell'Esercitazione 6}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es8.zip |Esercitazione 8 del 20/11/2020 (Modificato alle ore 12:26 del 20/11/2020 - corretto errore sul calcolo del numero di confronti di HeapSort)}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-soluzione-esercitazione-es7.zip |Soluzione Proposta dell'Esercitazione 7 (Contiene anche i test JUnit)}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-mp1-traccia-con-test-junit-per-la-correzione.zip | Traccia del Miniprogetto 1 ASDL2021MP1 con test JUnit per la correzione}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-soluzione-es8.zip |Soluzione Proposta dell'Esercitazione 8 (contiene test JUnit per algoritmi di ordinamento)}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es9.zip | Esercitazione 9 del 27/11/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es9-soluzione.zip |Soluzione Proposta dell'Esercitazione 9 (contiente test JUnit per i metodi della classe)}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es10.zip |Esercitazione 10 del 04/12/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es10-soluzione.zip |Soluzione Proposta dell'Esercitazione 10}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es11.zip |Esercitazione 11 del 11/12/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es12.zip |Esercitazione 12 del 18/12/2020}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es11-soluzione.zip |Soluzione Proposta dell'Esercitazione 11}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-mp2-traccia.zip | Traccia del Miniprogetto 2 ASDL2021MP2}} - si veda la traccia con la patch del 07/01/2021
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-mp2-traccia-patchdel07-01-2021.zip | Traccia del Miniprogetto 2 ASDL2021MP2 con patch del 07/01/2021}} si veda la traccia con la patch del 15/01/2021
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-pt1-traccia.zip | Traccia del Progetto Totale 1 ASDL2021PT1}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-pt2-traccia.zip | Traccia del Progetto Totale 2 ASDL2021PT2}} - si veda la traccia con la patch del 15/01/2021
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es12-soluzione.zip |Soluzione Proposta dell'Esercitazione 12}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es13.zip |Esercitazione 13 del 08/01/2021}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-esercitazione-es13-soluzione.zip |Soluzione Proposta dell'Esercitazione 13}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-mp2-patch-15-01-2021.zip |Traccia del Miniprogetto 2 ASDL2021MP2 con patch del 15/01/2021}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-pt2-patch-15-01-2021.zip |Traccia del Progetto Totale 2 ASDL2021PT2 con patch del 15/01/2021}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-mp2-traccia_test.zip | Test JUnit per la valutazione di MP2 (inclusa anche la traccia originale)}}
* {{ :didattica:triennale:asd:ay_2021:asdl2021-codice-mp1-traccia_test.zip | Test JUnit per la valutazione di MP1 aggiornati (inclusa anche la traccia originale)}}
----
===== Mini Progetti (parziali) =====
- Da assegnare durante il corso e da presentare tramite la piattaforma Google Classroom.
----
===== Progetti Totali =====
- Da assegnare alla fine del corso tramite la piattaforma Google Classroom.
----
===== Esami =====
**Date Esami A.A. 2020/2021**
Per l'iscrizione alle prove parziali e per la registrazione si consulti il [[https://didattica.unicam.it|Portale ESSE3]] previo login.
**Modalità di esame**
Gli obiettivi formativi sono verificati attraverso compiti scritti contenenti domande a risposta aperta o chiusa. Inoltre, si richiederà l'implementazione di progetti software da parte del singolo studente o in gruppo.
Otto appelli di esame sono programmati nell'anno accademico di riferimento nei periodi in cui non c'è lezione.
Per la parte teorica (6 CFU) uno scritto verrà proposto in ogni appello seguito da un orale opzionale. Gli studenti che seguono le lezioni possono fare, in alternativa allo scritto degli appelli, due scritti parziali sulla prima e la seconda parte del corso, seguiti da un orale opzionale. La media delle valutazioni dei due parziali o, se scelta l'opzione, il voto assegnato all'orale è il voto per la parte teorica.
Per la parte di laboratorio (6 CFU) il voto può essere ottenuto presentando un progetto assegnato dal docente e sviluppato singolarmente o in gruppo (al più 2 o 3 studenti, come indicato dalla traccia del progetto) seguito da un orale. Gli studenti che seguono le lezioni possono ottenere il voto sviluppando dei mini progetti che verranno assegnati dal docente durante il corso e presentando le soluzioni di esercizi a casa proposti durante le lezioni. In questo caso non è prevista la prova orale. I mini progetti devono essere sviluppati singolarmente.
Il voto totale del corso (12 CFU) è ottenuto dalla media dei voti ottenuti nelle due parti.