====== Programmazione e Algoritmica - Corso B ====== PER QUESTO CORSO FARE RIFERIMENTO ALLA PAGINA {{ https://classroom.google.com/w/MTU5MjI1OTAxNDA5/t/all | GOOGLE-CLASSROOM }} ===== Anno accademico 2020/2021 ===== Docenti: **//[[http://pages.di.unipi.it/pisanti/|Nadia Pisanti]], [[http://pages.di.unipi.it/bernasconi/|Anna Bernasconi]]//** **Impegno:** 15 CFU. **Semestre:** Corso Annuale. ===== Sospensione della Didattica in presenza ===== **La didattica frontale di questo Corso di Studi e' sospesa fino a gennaio 2021.** Di conseguenza:\\ Durante il primo semestre, tutte le lezioni si svolgeranno telematicamente nelle ore indicate in orario, in questa [[https://meet.google.com/lookup/addpibqa3y |AULA VIRTUALE]] (dedicata al Corso B). Istruzioni generali sull'accesso telematico: **http://unipi.it/corsionline** Il ricevimento studenti sarà fatto telematicamente su appuntamento, mandando una mail alla docente. ===== Orario Lezioni ===== ^ Orario delle Lezioni ^^^ |Lunedì | 9-11 | [[https://meet.google.com/lookup/addpibqa3y |AULA VIRTUALE]]| |Martedì (Nel primo semestre lo slot del Martedì verra' usato solo occasionalmente) | 9-11 | [[https://meet.google.com/lookup/addpibqa3y |AULA VIRTUALE]]| |Mercoledì | 9-11 | [[https://meet.google.com/lookup/addpibqa3y |AULA VIRTUALE]]| ===== Obiettivi del Corso ===== L’insegnamento introduce lo studente ai principi, agli strumenti e alle tecniche della programmazione di applicazioni informatiche, acquisendo la capacità di risolvere problemi computazionali. Le tecniche di base per calcolare il costo computazionale degli algoritmi permettono di progettare e implementare soluzioni efficienti ai problemi computazionali, qualora possibile: la difficoltà computazionale di alcuni problemi viene illustrata attraverso la discussione di alcune classi fondamentali (P vs NP). ===== Programma del Corso ===== * Struttura di un calcolatore e ambienti di sviluppo. \\ * Analisi asintotica del costo computazionale. \\ * Rappresentazione delle informazioni. \\ * Problemi computazionali e algoritmi di risoluzione.\\ * Controllo delle operazioni e del flusso all’interno di un programma. \\ * Problem solving su array. \\ * Algoritmi per ordinamento e ricerca.\\ * Strutture di dati dinamiche. Liste. Code e pile. \\ * Tabelle hash e dizionari.\\ * Blocco e struttura dei programmi. Funzioni, passaggio dei parametri.\\ * Ricorsione, divide et impera, programmazione dinamica, algoritmi greedy. \\ * Algoritmi per alberi e grafi.\\ * Cenni di calcolabilità e di classi di complessità. \\ ===== Modalità e Appelli di Esame===== Per sostenere l'esame è necessario registrarsi: [[https://esami.unipi.it/esami2/|registrarsi qui]] ===== Libri di testo ===== **[CLRS]** T. Cormen, C. Leiserson, R. Rivest, C. Stein. //Introduzione agli algoritmi e strutture dati//. McGraw-Hill, Terza edizione, 2010. \\ **[Plotkin]** G.Plotkin. //A Structural Approach to Operational Semantics//, 1981. ===== Programma del corso ===== * Struttura di un calcolatore e ambienti di sviluppo. Analisi asintotica del costo computazionale. * Rappresentazione delle informazioni. Problemi computazionali e algoritmi di risoluzione. * Controllo delle operazioni e del flusso all’interno di un programma. Problem solving su array. * Blocco e struttura dei programmi. Funzioni, passaggio dei parametri. Ricorsione, * Algoritmi per ordinamento e ricerca. * Strutture di dati dinamiche. Liste. Code e pile. Tabelle hash e dizionari. * Divide et impera, programmazione dinamica, algoritmi greedy. * Algoritmi per alberi e grafi. * Cenni di calcolabilità e di classi di complessità.