- Docente: Mirko Viroli
- Credits: 9
- SSD: ING-INF/05
- Language: Italian
- Moduli: Mirko Viroli (Modulo 1) Mirko Viroli (Modulo 2)
- Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
- Campus: Cesena
-
Corso:
First cycle degree programme (L) in
Biomedical Engineering (cod. 0946)
Also valid for First cycle degree programme (L) in Electronics System Engineering for Sustainable Development (cod. 8612)
Learning outcomes
By the end of the course, students will have basic knowledge about computation, imperative, structured and OO programming, of data structures and algorithms. In particular, he/she will be able to: design basic algorithms to manipulate data structures, implement such algorithms and simple applications in Java and C
Course contents
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 e
il sistema operativo.
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.
Ricorsione e algoritmi ricorsivi per l'accesso alle
sequenze.
Il record di attivazione. Confronto fra algoritmi ricorsivi ed
algoritmi iterativi. La ricorsione tail. Assegnamento ed array: il
problema del side-effect.
La programmazione con strutture dati. La classe Java come
modulo. Oggetti, costruttori, metodi e campi. I tipi di dato e la
loro implementazione con gli oggetti. Implementazione di strutture
dati rilevanti in Java.
Costruzioni Algoritmi. Aspetti metodologici nella costruzione
degli algoritmi. Algoritmi base: ricerca, ordinamento, analisi
numerica.
La programmazione nel linguaggio C. Strutture dati e operatori
in C. Costrutti per la programmazione imperativa e per la
ricorsione. Array e puntatori. Input e Output.
Sviluppo di programmi C. Compilazione di programmi C. Librerie
per il linguaggio C. Costruzione di applicazioni in C.
Readings/Bibliography
Suggested only to deepen some topic:
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), can be downloaded through:
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
Teaching methods
Approximately 7 hours of lesson per week, typically 4/5 in the
teaching room and 2/3 in the lab
Assessment methods
Written test on Java and C programming in lab Quiz-based theory test on all the course topic
Teaching tools
Slides projected during the lessons, published on the web site Software: Java Development Kit, GNU C Compiler (GCC)
Links to further information
http://apice.unibo.it/xwiki/bin/view/MirkoViroli/
Office hours
See the website of Mirko Viroli