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
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.
A. Bellini, A. Guidi, "Linguaggio C", quarta edizione, McGraw-Hill, 2009.
M. Liverani, "Programmare in C", seconda edizione, Esculapio, 2013.
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
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.
A. Bellini, A. Guidi, "Linguaggio C", quarta edizione, McGraw-Hill, 2009.
M. Liverani, "Programmare in C", seconda edizione, Esculapio, 2013.
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.