- Docente: Mirko Viroli
- Crediti formativi: 9
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Moduli: Mirko Viroli (Modulo 1) Sara Montagna (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Cesena
- Corso: Laurea in Ingegneria biomedica (cod. 0946)
Conoscenze e abilità da conseguire
Al termine del corso, lo studente possiede le conoscenze di base dei concetti di computazione, di programmazione imperativa, strutturata, e ad oggetti, e di strutture dati e loro algoritmi. In particolare, lo studente è in grado di: - progettare algoritmi base per la manipolazione di strutture dati - realizzare tali algoritmi nei linguaggi di programmazione Java e C - costruire semplici applicazioni Java
Contenuti
Introduzione. Il concetto di elaboratore elettronico e
computazione algoritmica. I principali risultati delle teoria della
computazione classica: automi, funzioni ricorsive primitive, tesi
di Church, incompletezza di Goedel. I linguaggi di
programmazione.
La valutazione delle espressioni. I concetti di valore, tipo
di dato, operatore ed espressione. I tipi primitivi, stringhe ed
array, e loro operatori. Schemi di compilazione ed interpretazione.
Abstract Syntax Tree e valutazione di una espressione.
La programmazione imperativa e strutturata. I concetti di
assegnamento, variabile, e statement. I costrutti di programmazione
strutturata. Principali aspetti di sintassi, e esecuzione.
Algoritmi iterativi per l'elaborazione di sequenze.
La programmazione funzionale. L'astrazione di funzione. Il
record di attivazione. Confronto fra algoritmi ricorsivi ed
algoritmi iterativi. La ricorsione tail. Assegnamento ed array: il
problema del side-effect.
Programmazione procedurale e modulare. La classi
di Java come moduli. Java Development Kit.
Costruzioni Algoritmi. Aspetti metodologici nella
costruzione degli algoritmi. Algoritmi base: ricerca, ordinamento.
Elementi di complessità computazionale.
La programmazione nel linguaggio C. Strutture dati e
operatori in C. Array e puntatori. Input e Output.
Compilazione di programmi C. Elementi di sistemi operativi e
gestione dei file in C.
Testi/Bibliografia
Consigliati solo come approfondimento:
Informatica teorica e Programmazione
* Ceri, Mandrioli, Sbattella. “Informatica: arte e
mestiere”, McGraw Hill * Aho, Ullman. “Fondamenti di
Informatica”, Zanichelli, Ghezzi, Mandrioli. *
“Informatica Teorica”, CLUP, Milano, 1989
Java
* “Java2: i Fondamenti”, McGraw-Hill (Sun
Microsystems Press), 1999 * “Java Language
Specification”, McGraw-Hill (Sun), scaricabile al sito
http://java.sun.com/docs/books/jls/index.html *
Goodrich, Tamassia, "Strutture dati e algoritmi in Java",
Zanichelli
C:
* Bellini, Guidi. "Linguaggio C: guida alla
programmazione", McGraw-Hill * Deitel, Deitel. "C:
How to Program", Pearson International Edition
Metodi didattici
Approssimativamente 7 ore di lezione alla settimana, di norma 4/5 in aula e 2/3 in laboratorio
Modalità di verifica e valutazione dell'apprendimento
Prova scritta su programmazione Java e C in laboratorio Prova teorica su tutti gli argomenti del corso in laboratorio, tramite quiz
Strumenti a supporto della didattica
Slide proiettate a lezione e pubblicate sul sito del docente in anticipo Software: Java Development Kit, Compilatore C Gnu (GCC)
Link ad altre eventuali informazioni
http://apice.unibo.it/xwiki/bin/view/MirkoViroli/
Orario di ricevimento
Consulta il sito web di Mirko Viroli
Consulta il sito web di Sara Montagna