20410336 - IN110-ALGORITMI E STRUTTURE DATI

Acquisire una buona conoscenza nella progettazione di algoritmi per la risoluzione di problemi e nella codifica di algoritmi con un linguaggio di programmazione (linguaggio C). Introdurre lo studente ad alcuni dei concetti fondamentali della matematica discreta (cenni sulla teoria dei grafi) ed in particolare ai primi elementi di ottimizzazione discreta (algoritmi di ottimizzazione su grafi, visita di grafi, cammini minimi, alberi ricoprenti).

Curriculum

scheda docente | materiale didattico

Programma

Introduzione ai diversi aspetti dello studio dell'informatica; il concetto di algoritmo; il calcolatore; linguaggi di programmazione.
Modello di Von Neumann, modello della macchina di Turing. Rappresentazione delle informazioni su di un calcolatore. Cenni sui sistemi operativi e sul sistema operativo Unix/Linux.
Algoritmi e loro proprietà; i linguaggi per la formalizzazione di algoritmi: diagrammi di flusso e pseudo-codifica. Introduzione alla programmazione, linguaggi di programmazione di alto livello. Programmazione strutturata.
Linguaggio C: tipi di dato, operatori ed espressioni, strutture di controllo, array e puntatori, strutture, liste, allocazione dinamica della memoria, funzioni, funzioni ricorsive, le direttive del preprocessore, input e output.
Algoritmi di ordinamento; strutture dati complesse, heap, liste, alberi, grafi; algoritmi elementari su grafi, visita di grafi, cammini ottimi su grafi. Cenni sulla complessità computazionale degli algoritmi; cenni sulla calcolabilità: problemi trattabili, intrattabili, la classe P, NP, NP-complete.


Testi Adottati

Cormen, Leiserson, Rivest, Stein, "Introduzione agli algoritmi e strutture dati", terza edizione, McGraw-Hill, 2010.
A. Bellini, A. Guidi, "Linguaggio C", quarta edizione, McGraw-Hill, 2009.
M. Liverani, "Programmare in C", seconda edizione, Esculapio, 2013.


Modalità Erogazione

Lezioni in aula ed esercitazioni interattive in laboratorio per la codifica di algoritmi in linguaggio C.

Modalità Valutazione

L'esame orale, in cui sono discussi alcuni dei problemi e degli algoritmi trattati nel corso, è preceduto da una prova scritta in cui si chiede di scrivere i programmi in linguaggio C per la risoluzione dei problemi assegnati. La prova scritta può essere evitata superando le due prove di esonero in itinere.

scheda docente | materiale didattico

Programma

Introduzione ai diversi aspetti dello studio dell'informatica; il concetto di algoritmo; il calcolatore; linguaggi di programmazione.
Modello di Von Neumann, modello della macchina di Turing. Rappresentazione delle informazioni su di un calcolatore. Cenni sui sistemi operativi e sul sistema operativo Unix/Linux.
Algoritmi e loro proprietà; i linguaggi per la formalizzazione di algoritmi: diagrammi di flusso e pseudo-codifica. Introduzione alla programmazione, linguaggi di programmazione di alto livello. Programmazione strutturata.
Linguaggio C: tipi di dato, operatori ed espressioni, strutture di controllo, array e puntatori, strutture, liste, allocazione dinamica della memoria, funzioni, funzioni ricorsive, le direttive del preprocessore, input e output.
Algoritmi di ordinamento; strutture dati complesse, heap, liste, alberi, grafi; algoritmi elementari su grafi, visita di grafi, cammini ottimi su grafi. Cenni sulla complessità computazionale degli algoritmi; cenni sulla calcolabilità: problemi trattabili, intrattabili, la classe P, NP, NP-complete.


Testi Adottati

Cormen, Leiserson, Rivest, Stein, "Introduzione agli algoritmi e strutture dati", terza edizione, McGraw-Hill, 2010.
A. Bellini, A. Guidi, "Linguaggio C", quarta edizione, McGraw-Hill, 2009.
M. Liverani, "Programmare in C", seconda edizione, Esculapio, 2013.


Modalità Erogazione

Lezioni in aula ed esercitazioni interattive in laboratorio per la codifica di algoritmi in linguaggio C.

Modalità Valutazione

L'esame orale, in cui sono discussi alcuni dei problemi e degli algoritmi trattati nel corso, è preceduto da una prova scritta in cui si chiede di scrivere i programmi in linguaggio C per la risoluzione dei problemi assegnati. La prova scritta può essere evitata superando le due prove di esonero in itinere.