Informatica
Docente
- Prof. Fabio Alessi
Indirizzo e-mail
alessifabio_02@yahoo.com
Indirizzo Pagina Web Personale
http://www.dimi.uniud.it/alessi
Crediti
12 CFU
Finalità
Oltre a fornire una prima “alfabetizzazione informatica”, il corso ha come scopo principale quello di sviluppare nello studente la sensibilità per l’aspetto “computazionale” dell’attività scientifico-matematica, e di acquisire gli elementi sufficienti per padroneggiare un linguaggio di programmazione di alto livello.
Programma
- Preliminari matematici: elementi di combinatoria, algebra e statistica. Principio di induzione. Approccio ricorsivo alla soluzione di problemi.
- Elementi di teoria della complessità computazionale. Big O notation.
Introduzione al linguaggio C. I tipi fondamentali: (long) int, char, float, double. Rappresentazione dei numeri e aritmetica dei computer.
- Variabili e array. Programmazione strutturata. If, While, For statements a test. Paradigma iterativo e paradigma ricorsivo. Cicli annidati.
- Array multidimensionali. Funzioni. Chiamata per valore e per riferimento.
Strutture e puntatori.
- Algoritmi di ordinamento.
- Metodi di Montecarlo e loro applicazioni per risolvere problemi di analisi e di fisica.
- Tecniche di programmazione rivolte all'efficienza: memoization e programmazione dinamica.
- Strutture dati astratti: code, pile, liste e alberi, e qualche loro applicazione.
- Grafi e principali algoritmi di esplorazione: DFS, BFS, Minimum Spanning Tree. Applicazioni.
Bibliografia
Deitel & Deitel: C Corso Completo di Programmazione, Edizioni APOGEO.
Cormen, Leiserson, Rivest, Stein: Introduzione agli Algoritmi e strutture dati, Edizioni Mc Graw Hill.
Modalità d'esame
L'esame consiste in una prova scritta comprensiva di domande di teoria, esercizi e stesura di programmi.
Sono possibili (la scelta è facoltativa) approfondimenti da parte degli studenti concordati con il docente.