IN110-ALGORITMI E STRUTTURE DATI
(obiettivi)
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).
|
Codice
|
20410336 |
Lingua
|
ITA |
Tipo di attestato
|
Attestato di profitto |
Crediti
|
9
|
Settore scientifico disciplinare
|
INF/01
|
Ore Aula
|
48
|
Ore Esercitazioni
|
42
|
Attività formativa
|
Attività formative di base
|
Canale Unico
Docente
|
MAIELI ROBERTO
(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)
- 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.
|
Date di inizio e termine delle attività didattiche
|
Dal al |
Modalità di erogazione
|
Tradizionale
|
Modalità di frequenza
|
Non obbligatoria
|
Docente
|
Onofri Elia
(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)
- 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.
|
Date di inizio e termine delle attività didattiche
|
Dal al |
Modalità di erogazione
|
Tradizionale
|
Modalità di frequenza
|
Non obbligatoria
|
|
|