Corso 2020/2021
Il corso, ahimè, verrà svolto online in modalità sincrona su piattaforma Zoom + Discord, con video registrati su YouTube e Google Drive.
Le lezioni iniziano regolarmente martedì 15/9 ore 15.30. I link zoom delle lezioni si trovano in questo documento, accessibile solo tramite account UniTN.
Le comunicazioni non avverranno tramite piattaforma moodle, la quale conterrà solo un link a questo sito.
Per partecipare al corso è obbligatorio:
- Iscriversi al canale telegram del corso. Tutti gli avvisi (lezioni, assenze, esami, pubblicazioni di risultati, etc.) vengono notificati attraverso il gruppo fino a Settembre 2021. Al termine dell’anno accademico, il gruppo resterà attivo per annunci di interesse generale (hackathon, bandi, opportunità, etc.) mentre chi non ha ancora completato l’esame dovrà spostarsi sul gruppo del 21/22.
- Compilare questo questionario, che mi serve per avere una fotografia di quante persone sono interessate a fare l’esame.
Organizzazione
- Per gli studenti del Corso di Laurea in Informatica, il corso è annuale (!!): un unico corso di 12 crediti, che inizia a settembre e finisce a maggio (145004).
- Per gli studenti del Corso di Laurea in Matematica, il corso può essere diviso in due unità didattiche (145946, 145947), una per semestre, selezionabili come corsi affini. E’ comunque possibile scegliere l’intero corso da 12 crediti (145004). Se siete ancora indecisi, ecco due righe sul perché uno studente di Matematica dovrebbe studiare Algoritmi e Strutture Dati.
- Per gli studenti del Corso di Laurea in Ingegneria dell’Informazione e Organizzazione d’Impresa, nel manifesto trovate il primo modulo sotto il nome di “Fondamenti di algoritmi e strutture Dati” (145929), selezionabile come corso a scelta. Se siete ancora indecisi, ecco due righe sul perché uno studente di Inf.Org. dovrebbe studiare Algoritmi e Strutture Dati.
Sommario
Il corso ha lo scopo di presentare i concetti fondamentali dell’algoritmica, ovvero quella branca dell’informatica che si occupa della definizione e la progettazione degli algoritmi, l’analisi della loro correttezza e della loro efficienza, la dimostrazione delle loro limitazioni e complessità, e lo studio dei dati da essi elaborati.
Verranno presentati algoritmi per risolvere alcuni problemi fondamentali (quali ad esempio l’ordinamento), tecniche per l’analisi degli algoritmi (notazione asintotica e ricorrenze), strutture dati elementari (quali liste, pile, code), strutture dati non lineari (alberi e grafi) e gli algoritmi ad esse collegati, strutture dati avanzate (alberi red-black, heap, tabelle hash, etc.). Particolare enfasi verrà dedicata alle metodologie di progettazione di algoritmi (divide et impera, programmazione dinamica, metodo greedy, backtracking, ricerca locale).
Prerequisiti
Si assume che lo studente conosca i concetti presentati nei corsi di Analisi, Geometria ed Algebra Lineare, Fondamenti Matematici per l’Informatica, Programmazione 1, più qualche elemento di calcolo delle probabilità.
Per gli studenti del corso di laurea in Matematica, le maggiori conoscenze nel campo della matematica compensano la minore esperienza nel campo della programmazione, rendendo l’esame affrontabile senza problemi.