Fun with algorithms

Prof.sse Tiziana Calamoneri e Irene Finocchi

Programma del corso

Come fa un navigatore satellitare a trovare il cammino più breve dal Colosseo all'Auditorium, magari evitando gli ingorghi dell'ora di punta? Come può un motore di ricerca restituire i risultati più rilevanti per la nostra interrogazione nell'arco di pochi secondi? E come è possibile comprimere centinaia di brani musicali sul nostro smartphone e poterli poi riprodurre con un'ottima qualità audio?

Alla base di questi problemi, così diversi ma frequenti nella nostra vita quotidiana, c'è il concetto di algoritmo, un pilastro delle scienze informatiche. Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi elementari. Spesso non basta però saper risolvere un problema in modo automatico, ma occorre anche farlo nel modo più veloce possibile! Ci sono infatti algoritmi che trovano una soluzione allo stesso problema, ma hanno tempi di esecuzione completamente diversi.

Questa attività si prefigge di far entrare gli studenti in contatto con il mondo degli algoritmi e con il concetto di efficienza in un modo divertente e alla loro portata. L'attività è strutturata come segue:

- Un incontro introduttivo presso il Dipartimento di Informatica (circa 3 ore), in cui ai partecipanti verranno fornite le nozioni di base e il materiale di lavoro.

- Una fase di elaborazione individuale, volta a comprendere alcuni algoritmi suggeriti dai docenti e selezionarne uno (circa 7 ore).

- Un fase di sperimentazione in cui gli studenti dovranno riunirsi in gruppi, studiare approfonditamente il funzionamento dell'algoritmo prescelto (circa 10 ore) e produrre un video che ne visualizzi il funzionamento, possibilmente in modo non convenzionale, ma comunque chiaro ed esplicativo (circa 15 ore). Alcuni esempi di video saranno mostrati nell'incontro introduttivo.

Il gruppo artefice del video più originale e comunicativo verrà successivamente premiato.

Le fasi saranno organizzate in modo flessibile, in modo da permettere lo sfruttamento di eventuali settimane dello studente o autogestite.

Obiettivi-Competenze di fine corso:

  • gli studenti avranno compreso cosa si intende per algoritmo e le ragioni per cui un algoritmo deve essere il più possibile efficiente;
  • gli studenti avranno acquisito familiarità con alcuni algoritmi di base;
  • gli studenti saranno in grado di comprendere e simulare il funzionamento di semplici algoritmi scritti in pseudocodice.

Programma per singola lezione

Lezione 1)

  • Cosa è un algoritmo
  • Algoritmi efficienti e non
  • Alcuni semplici esempi di algoritmi

Lezione 2)

  • Presentazione dei migliori video e premiazione.

Compiti assegnati, da svolgere a casa

  • Compilare il modulo per la valutazione
  • Studiare individualmente alcuni algoritmi
  • Creare in gruppo un video che rappresenti il funzionamento di un algoritmo prescelto.

Sede, orari e maggiori informazioni sul corso: Sito Web del corso