UNIT 2

Obiettivi formativi

Obiettivi generali Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la ricerca, insieme con i più semplici strumenti per analizzarli dal punto di vista dell’efficienza. Obiettivi specifici: Conoscenza e comprensione Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari. Applicare conoscenza e comprensione: Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti. Capacità critiche e di giudizio Lo studente avrà le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto. Capacità comunicative Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice. Capacità di apprendimento Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell’ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati più avanzate.

Canale 1
ANGELO SPOGNARDI Scheda docente

Programmi - Frequenza - Esami

Programma
Introduzione alla programmazione in linguaggio Python (4 ore). Tipi di dato, variabili, assegnazioni, strutture di controllo, funzioni, classi, moduli, input/output (10 ore). Strutture dati di base: array, stringhe, liste, tuple e dizionari (16 ore). Utilizzo delle strutture dati di base nella creazione di programmi con tecniche procedurali e object-oriented (4 ore). Debugging e testing di programmi (2 ore). Differenza tra algoritmi ricorsivi e iterativi (12 ore). Moduli Python per grafica, manipolazione file, testi e accesso a internet (12 ore).
Prerequisiti
È richiesta un'adeguata preparazione iniziale relativa alle materie presenti nei programmi della scuola secondaria superiore, con particolare riguardo all’inglese e alla matematica.
Testi di riferimento
Think Python 2nd Edition by Allen B. Downey INTRODUZIONE ALLA PROGRAMMAZIONE CON PYTHON, John V. Guttag
Modalità insegnamento
L'insegnamento sarà strutturato in lezioni, che si svolgeranno, sperabilmente, in modalità tradizionale in un laboratorio multimediale, oppure, in caso, a distanza o, ancora, in modalità mista, a seconda della situazione sanitaria attuale e delle indicazioni degli uffici centrali dell'Università. L'insegnamento si basa su lezioni frontali, intervallate con esercizi e sessioni interattive di programmazione e discussione. Durante le lezioni, gli argomenti del curriculum saranno presentati o rivisitati e, di conseguenza, agli studenti sarà chiesto di risolvere alcuni semplici esercizi che, successivamente, saranno risolti collettivamente. Gli aspetti pratici del curriculum copriranno circa il 75% del tempo complessivo del corso.
Frequenza
In presenza
Modalità di esame
Per valutare correttamente il raggiungimento degli obiettivi di apprendimento, gli studenti saranno valutati tenendo conto di: 1. quattro compiti obbligatori di programmazione, da svolgere a casa, per valutare la loro capacità di applicare la conoscenza e la comprensione acquisite; 2. una prova pratica in laboratorio, con esercizi di programmazione, per valutare la loro capacità di apprendimento; 3. la loro partecipazione e il loro contributo al forum di discussione ufficiale, per valutare le loro capacità di comunicazione; 4. il loro contributo alla valutazione tra pari (peer-assessment) dei quattro compiti di programmazione obbligatori, per valutare le loro capacità critiche e di giudizio. La prova di laboratorio è prevista nel laboratorio multimediale. Dovrebbe durare tre ore, per risolvere quattro esercizi. I quattro compiti obbligatori di programmazione sono previsti per la 6°, 8°, 10° e 12° settimana del corso. Ogni compito sarà sottoposto a una revisione anonima tra gli studenti (peer-review), per migliorare la qualità complessiva degli artefatti. La valutazione media dei quattro compiti di programmazione obbligatori contribuirà per un terzo al voto finale. Il test di laboratorio contribuirà per due terzi al voto finale. La partecipazione al forum di discussione e la qualità del supporto della peer-review contribuiranno ad ottenere un bonus da aggiungere al voto finale.
Bibliografia
Altri testi utili: Guido van Rossum, Python Tutorial Josh Cogliati, Non-Programmers Tutorial For Python F. Pellacini, Fondamenti di Programmazione in Python F. Pellacini, Codice di Fondamenti di Programmazione in Python
Modalità di erogazione
L'insegnamento sarà strutturato in lezioni, che si svolgeranno, sperabilmente, in modalità tradizionale in un laboratorio multimediale, oppure, in caso, a distanza o, ancora, in modalità mista, a seconda della situazione sanitaria attuale e delle indicazioni degli uffici centrali dell'Università. L'insegnamento si basa su lezioni frontali, intervallate con esercizi e sessioni interattive di programmazione e discussione. Durante le lezioni, gli argomenti del curriculum saranno presentati o rivisitati e, di conseguenza, agli studenti sarà chiesto di risolvere alcuni semplici esercizi che, successivamente, saranno risolti collettivamente. Gli aspetti pratici del curriculum copriranno circa il 75% del tempo complessivo del corso.
  • Anno accademico2025/2026
  • CorsoApplied Computer Science and Artificial Intelligence – Informatica Applicata e Intelligenza Artificiale
  • CurriculumCurriculum unico
  • Anno1º anno
  • Semestre1º semestre
  • SSDINF/01
  • CFU6