Docente
|
TRETOLA GIANCARLO
(programma)
Obiettivi dell'insegnamento L’insegnamento ha l’obiettivo di approfondire gli aspetti relativi a: 1. progettazione e realizzazione di algoritmi rilevanti; 2. comprensione delle strutture dati fondamentali; 3. realizzazione di algoritmi con tecniche iterative e ricorsive; 4. realizzazione di programmi in linguaggio Python; 5. valutazione dell’efficienza dei programmi implementati.
Numero totale e descrizione delle unità didattiche Nr. Totale 9 moduli da 8 lezioni ciascuno
Organizzazione della didattica (lezioni, laboratori, etc.) DIDATTICA EROGATIVA N. 9 VIDEOLEZIONI ON-LINE (N. 9 UNITÀ DIDATTICHE - DELLA DURATA DI DUE ORE PER OGNI CFU)
DIDATTICA INTERATTIVA N. 2 LEZIONI INTERATTIVE PER CFU N. 5 DISCUSSIONI TEMATICHE SUL FORUM DIDATTICO (TOPIC) E N. 2 POST PER CFU COME DAL LINEE GUIDA SULLA DIDATTICA DEL PQA N. 4 E-TIVITY N. 2 TEST PER OGNI CFU CON 8 DOMANDE A RISPOSTA MULTIPLA
Programma del corso Introduzione alla programmazione in Python: variabili, operazioni, espressioni, istruzioni condizionali e iterative, funzioni, stringhe e gestione avanzata delle stringhe, IDLE, strumenti di sviluppo in Python.
Python Containers: i moduli Python, i tipi di dato contenitori: liste, tuple, set e dizionari, operazioni base sulle liste, tuple, set, e dizionari.
Programmazione ad Oggetti in Python: classi, oggetti e metodi in Python, astrazione, information hiding, ereditarietà e polimorfismo in Python.
Risoluzione di problemi: algoritmi e strutture dati, classi di problemi, risoluzione di problemi, progettazione top down, implementazione di algoritmi, verifica dei programmi, tecniche di testing.
Tecniche algoritmiche: tecnica del divide et impera e ricorsione, decomposizione ricorsiva, ricorsione lineare e ricorsione multipla, ricorsione mutua e ricorsione annidata, programmazione dinamica, tecnica greedy, tecnica backtracking.
Efficienza degli algoritmi: complessità computazionale, tempi di esecuzione, efficienza e complessità di un algoritmo, notazioni asintotiche, complessità computazionale di costrutti di programmazione, complessità delle funzioni ricorsive, ricorrenze notevoli.
Strutture dati di base: strutture dati dinamiche, array dinamici, pile realizzazione e operazioni, code realizzazione e operazioni.
Strutture dati avanzate: liste dinamiche, algoritmi iterativi, algoritmi ricorsivi, alberi binari, creazione, ricerca e visita ricorsiva.
Tipi di dato astratto: astrazione, tipi di dato astratto, TDA Sequenza, TDA Set, TDA Map, TDA Stack, TDA Queue.
Giorni e orario di ricevimento settimanale Mercoledì 10:00 - 11:0 in presenza; Mercoledì 19:00-20:00 (online)
Modalità di verifiche di profitto in itinere Il grado di apprendimento degli studenti è monitorato costantemente attraverso gli strumenti e le metodologie di verifica. In particolare, al fine di rendere fattibile la verifica e la certificazione degli esiti formativi il docente ed il tutor terranno conto del: 1. tracciamento automatico delle attività formative da parte del sistema - reporting; 2. il monitoraggio didattico e tecnico (a livello di quantità e qualità delle interazioni, di rispetto delle scadenze didattiche, di consegna degli elaborati previsti, ecc.). 3. le verifiche di tipo formativo in itinere, anche per l'autovalutazione (p. es. test multiple choice, vero/falso, sequenza di domande con diversa difficoltà, simulazioni, mappe concettuali, elaborati, progetti di gruppo, ecc.); 4. l'esame finale di profitto, nel corso del quale si tiene conto e si valorizza il lavoro svolto in rete (attività svolte a distanza, quantità e qualità delle interazioni on line, ecc.). La valutazione, in questo quadro, tiene conto di più aspetti: a. il risultato di un certo numero di prove intermedie (test on line, sviluppo di elaborati, ecc.); b. la qualità e quantità della partecipazione alle attività on line (frequenza e qualità degli interventi monitorabili attraverso la piattaforma); c. i risultati della prova finale. Pertanto i dati raccolti saranno oggetto di valutazione da parte del docente per l'attività di valutazione dello studente.
Modalità di valutazione e Obiettivi della prova L’accesso all’esame è subordinato al riconoscimento di frequenza, che verrà attestato con l'apposito certificato al momento della prenotazione dell'esame, che attesterà lo svolgimento delle attività didattiche di verifica in itinere e al livello del lavoro svolto nelle varie esercitazioni. L'esame consisterà in un colloquio orale e la votazione sarà espressa in 30/30. L'esame di profitto viene svolto in forma orale con analisi di esempi di codice Python. Lo studente riceverà dalla commissione almeno tre domande sugli argomenti descritti nel programma del Corso. L’esame mira a valutare il raggiungimento degli obiettivi didattici. In particolare: a) lo studente deve conoscere la sintassi del linguaggio Python e saper spiegare come si implementano programmi, moduli, funzioni e classi in Python. b) dimostrare la conoscenza degli algoritmi fondamentali, delle strutture dati fondamentali e dimostrare le la conoscenza delle loro caratteristiche di progetto. c) dimostrare la capacità di valutare la correttezza e complessità di un programma basato su una soluzione algoritmica e utilizzante una struttura dati.
Conoscenze e capacità di comprensione in termini di risultati attesi (descrittore di Dublino n. 1) La conoscenza degli algoritmi e strutture dati fondamentali consentirà allo studente di essere in grado di analizzare le soluzioni esistenti e valutare il loro utilizzo nell’affrontare problemi, operando per composizione di elementi consolidati. La conoscenza dei paradigmi di programmazione iterativa e ricorsiva consentirà allo studente di identificare la soluzione più adeguata in base alla natura del problema e dei suoi requisiti. La capacità di eseguire il confronto tra algoritmi sarà fondata sulla base delle caratteristiche dell’efficienza di memoria e di esecuzione che lo studente sarà in grado di valutare.
Competenze al fine di applicare conoscenza e comprensione in termini di risultati attesi (descrittore di Dublino n. 2) Lo studente sarà in grado di analizzare problemi tipici e realizzare applicazioni che li risolvano utilizzando algoritmi e strutture dati standard implementate in linguaggio Python, valutandone l’efficienza. Le competenze acquisite consentiranno allo studente di procedere in autonomia alla realizzazione di progetti software in Python di piccole dimensioni.
Bibliografia consigliata Algoritmi e Strutture Dati: Astrazione, Progetto e Realizzazione, di Mario Vento, Pasquale Foggia. Versione digitale disponibile. Versione cartacea, Editore: McGraw-Hill Education, Collana: Collana di istruzione scientifica, Anno edizione: 2011, EAN: 9788838662621
Pensare in Python, Titolo originale: Think Python: How to Think Like a Computer Scientist Traduzione di Andrea Zanella. Versione digitale disponibile
|