Lo scopo di questo corso è quello di introdurre gli studenti alla progettazione, all'analisi e alla sperimentazione di algoritmi efficienti per l'analisi dei dati, attraverso la sperimentazione e lo sviluppo di algoritmi…
Scheda dell'insegnamento
Obiettivi formativi
Lo scopo di questo corso è quello di introdurre gli studenti alla progettazione, all'analisi e alla sperimentazione di algoritmi efficienti per l'analisi dei dati, attraverso la sperimentazione e lo sviluppo di algoritmi per grafi. L'apprendimento e lo sviluppo in Python di algoritmi per grafi sarà un'occasione per sviluppare le abilità di problem solving e di programmazione, imparando a usare moduli Python finalizzati all'analisi dei dati. Alla fine del corso gli studenti avranno una buona conoscenza delle problematiche computazionali e delle tecniche algoritmiche necessarie per un calcolo efficiente, saranno in grado di formulare e risolvere problemi legati all'analisi dei dati e di valutare le possibili soluzioni sia in termini di semantica che di efficienza.
Programma
Analisi degli Algoritmi e Complessità Computazionale. Introduzione a moduli Python per l'analisi dei dati e di grafi. Sviluppo di algoritmi efficienti per grafi di grandi dimensioni.
Modalità d'esame
Consegna di un progetto con relativa discussione più orale. La consegna di un progetto che rispetti la specifica è condizione necessaria per essere ammessi all'orale. Lo scopo del progetto è verificare la capacità di sviluppare in autonomia algoritmi e applicarli in pratica su un dataset dato di grandi dimensioni in modo asincrono. Nella prova orale verrà valutata la conoscenza degli argomenti presentati a lezione, l'acquisizione del linguaggio tecnico adeguato al contesto, la capacità di mettere in relazione fra loro argomenti diversi del programma, la comprensione del funzionamento degli algoritmi visti a lezione, la capacità e la velocità nel progettare soluzioni efficienti per problemi nuovi.
Tabella docimologica di valutazione
Insufficiente
Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
18–22
Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
23–25
Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
26–28
Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
29–30 e Lode
Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.
Testi di riferimento
Think Python: How to Think Like a Computer Scientist by Allen B. Downey
Beijing: O'reilly Media
Problem Solving With Algorithims and Data Structures Using Python, 2nd edition, By Brad Miller and David Ranum
Franklin Beedle & Assoc
Piattaforma Interattiva (libera traduzione dei libri sopra con materiale e esercizi addizionali):
- http://www.andreamarino.it/python/thinkcspy/toc.html#t-o-c
- http://www.andreamarino.it/python/pythonds/ Slide e dispense del corso distribuite su Moodle.
Codice insegnamento B033523