Docente
|
DOCENTE FITTIZIO
(programma)
Obiettivi formativi per il raggiungimento dei risultati di apprendimenti previsti nella scheda SUA L’insegnamento ha l’obiettivo di approfondire gli aspetti relativi alla progettazione e realizzazione di algoritmi, utilizzando tecniche iterative e ricorsive e valutando l’efficienza dei programmi ottenuti e le strutture dati fondamentali curandone la realizzazione in linguaggio c. Eventuali criticità riscontrate (da compilare solo al secondo anno di insegnamento)
Numero totale e descrizione delle unità didattiche ** Nr. Totale: 18
Organizzazione della didattica (lezioni, laboratorio etc) didattica EROGATIVA N. 18 ORE videoLEZIONI ON-LINE (n. 2 videolezioni - unita’ didattiche - della durata di un’ora per ogni cfu)
didattica interattiva n. 18 ore lezioni in streaming (n. 2 lezioni in streaming per ogni cfu) di cui n. // da registrare e pubblicare in piattaforma ed eventuali n. // per esercitazioni in aula n. 18 forum – 2 per CFU N. // CHAT N. // WEB CONFERENCE N. // PROGETTI N. // REPOSITORY N. 9 TEST (ALMENO 1 PER CFU) CON 10 DOMANDE ASSISTENZA MEDIANTE E-MAIL
Programma del corso Complementi di programmazione in c: puntatori, array e puntatori, aritmetica dei puntatori. Le strutture
Ricorsione: aspetti e definizioni generali. Induzione matematica. Divide et impera. Algoritmi ricorsivi notevoli: hanoi, quicksort, mergesort
Complessità computazionale: definizioni, il modello ram, notazioni funzioni big-o, omega, theta, calcolo di complessità (i vari costrutti), calcolo di complessità degli algoritmi, formule di ricorrenza, ricorrenze notevoli e loro risoluzione, cenni alla analisi ammortizzata
Liste dinamiche: aspetti generali, classificazione e struttura dati, algoritmi di base (in versione iterativa e ricorsiva): creazione, inserimento, ricerca, cancellazione, visita, altri algoritmi sulle liste
Alberi binari: aspetti generali, classificazione e struttura dati, algoritmi di base (in versione iterativa e ricorsiva): creazione, inserimento, ricerca, cancellazione, visita, altri algoritmi sugli alberi
Tabelle hash: aspetti generali, hashing esterno ed interno, algoritmi di base (in versione iterativa e ricorsiva): creazione, inserimento, ricerca, cancellazione, visita, altri algoritmi sulle tabelle hash
Strumenti case: ambienti di programmazione, debugging e testing, compilazione separata e librerie, makefile
Supporto a run-time: aspetti generali sui modelli di memoria, memoria statica e memoria dinamica, stack e record di attivazione Modalità di verifiche di profitto in itinere Il grado di apprendimento degli Studenti è monitorato costantemente attraverso metodologie e strumenti di verifica. In particolare, al fine di rendere fattibile la verifica e la certificazione degli esiti formativi, il docente e il tutor terranno conto de: Il tracciamento automatico delle attività formative da parte del sistema-reporting; Il monitoraggio didattico e tecnico (a livello di quantità e qualità delle interazioni, di rispetto delle scadenze didattiche, di consegna degli elaborati previsti, ecc); Le verifiche di tipo formativo in itinere, anche per l’autovalutazione (es. test multiple choice, vero/falso, sequenza di domande con diversa difficoltà, simulazioni, mappe concettuali, elaborati, progetti di gruppo, ecc); 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: Il risultato di un certo numero di prove intermedie (test on line, sviluppo di elaborati, ecc); La qualità e la quantità della partecipazione alle attività on line (frequenza e qualità degli interventi monitorabili attraverso la piattaforma); I risultati della prova finale.
Pertanto i dati raccolti saranno oggetto di analisi da parte del docente per l’attività di valutazione dello Studente. Modalità di valutazione*
Obiettivi della Prova La prova di esame è finalizzata a valutare nel suo complesso: la conoscenza e la capacità di comprensione dei concetti presentati al corso; la capacità di applicare tali conoscenze per la risoluzione di problemi che richiedono l’utilizzo di algoritmi e strutture dati fondamentali, valutandone l’efficienza di elaborazione; l’autonomia di giudizio, le abilità comunicative e la capacità di apprendere. Essa consiste di una prova pratica e di una prova teorica. La prova pratica è tesa ad accertare le competenze nel realizzare programmi in linguaggio c che usano algoritmi (ordinamento e selezione) e strutture dati di base (pile, code, liste, alberi, tabelle hash), ed è realizzata direttamente sul sistema di elaborazione personale. Sono considerate capacità minime quelle di risolvere il problema proposto, senza errori sintattici rilevanti; sono ritenute capacità massime quella di pervenire a soluzioni algoritmiche che siano efficienti e che facciano uso delle strutture dati e degli algoritmi più adeguati, sia in versione iterativa che ricorsiva. Il superamento della prova pratica è condizione per accedere alla prova teorica che verterà su tutti gli argomenti del corso e la valutazione terrà conto delle conoscenze dimostrate dallo studente e del grado del loro approfondimento, della capacità di apprendere dimostrata, della qualità dell’esposizione. Ai fini del voto finale, espresso in trentesimi, la prova pratica contribuisce per il 60% e la prova teorica per il 40%. La lode può essere attribuita agli studenti che dimostrino una ottima capacità di analisi e di progetto di algoritmi e strutture dati.
Conoscenze e capacità di comprensione che consentono di elaborare e/o applicare idee originali, spesso in un contesto di ricerca (descrittore di Dublino n. 1) Conoscenza degli algoritmi e strutture dati fondamentali. Conoscenza dei paradigmi di programmazione iterativa e ricorsiva. Confronto di algoritmi sulla base dell’efficienza di memoria e di esecuzione
Capacità di applicare conoscenza, comprensione e abilità nel risolvere i problemi (descrittore di Dublino n. 2) Analizzare problemi tipici e realizzare applicazioni che li risolvano utilizzando algoritmi e strutture dati standard in linguaggio c, valutandone l’efficienza. Realizzazione di progetti software in c di piccole dimensioni impiegando sia strumenti case che la compilazione separata.
(testi)
---
|