15305 - FONDAMENTI DI INFORMATICA A

Scheda insegnamento

  • Docente Mirko Viroli

  • Moduli Mirko Viroli (Modulo 1)
    Mirko Viroli (Modulo 2)

  • Crediti formativi 9

  • SSD ING-INF/05

  • Modalità didattica Convenzionale - Lezioni in presenza (Modulo 1)
    Convenzionale - Lezioni in presenza (Modulo 2)

  • Lingua di insegnamento Italiano

  • Campus di Cesena

  • Corso Laurea in Ingegneria biomedica (cod. 0946)

Anno Accademico 2012/2013

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 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.

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