Fondamenti di Informatica A 2008/2009
pagine
InformationQuesta porzione del sito è chiusa! Accedere alla versione dell' a.a. 2009/2010
News
- A breve saranno pubblicati anche i temi d'esame teorici dell'anno accademico 2008-2009
- Testo e soluzione di tutti gli appelli pratici sono publicati al seguente link
- Esercizi su C e OO disponibili qui: link
- Pubblicate tutte le slide
- Pubblicate le date degli appelli della prima sessione (si veda sotto)
Ricevimento
Vedere la homepage di Mirko Viroli
Esami
- Si consultino le regole relative all'esame presso il seguente link
- Testi e soluzioni degli esami già sostenuti link
- Sessione invernale (Gen-Feb)
- Primo appello, esame pratico: 13/1/2009, ore 9-18 link
- Primo appello, esame teorico: 16/1/2009, ore 9-13
- Secondo appello, esame pratico: 27/1/2009, ore 9-18
- Secondo appello, esame teorico: 3/2/2009, ore 14-18 (Nuovo orario!)
- Terzo appello, esame pratico: 24/2/2009, ore 9-18
- Terzo appello, esame teorico: 27/2/2009, ore 9-13
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
- Informatica Teorica. Il concetto di elaboratore elettronico e computazione algoritmica. Le grammatiche formali come strumento per la descrizione sintattica di dati e programmi. I principali risultati della 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 di Java, stringhe ed array, e loro operatori. Schemi di compilazione ed interpretazione. Abstract Syntax Tree, typing e valutazione di una espressione.
- La programmazione funzionale. L'astrazione di funzione: motivazioni, sintassi Java e principali aspetti di typing e valutazione. Ricorsione e algoritmi ricorsivi per l'accesso alle sequenze. Ingegneria delle funzioni: analisi e progetto. Progetto della signature, funzionalità di test, schemi implementativi: la ricorsione e la composizione.
- La programmazione imperativa e strutturata. I concetti di assegnamento, variabile, e statement. I costrutti di programmazione strutturata. Principali aspetti di sintassi, typing e esecuzione. Algoritmi iterativi per l'elaborazione di 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 procedurale e modulare. La classe Java come modulo. Variabili globali e inizializzazione. I modificatori di accesso. I package e l'utilizzo della libreria di Java. Il framework di Java ed il Java Development Kit.
- Algoritmi e complessità. Algoritmi per l'ordinamento e l'accesso diretto alle sequenze. Teoria della complessità. Algoritmi di calcolo numerico.
- La programmazione con gli Abstract Data Types. Gli oggetti di Java: costruttori, metodi e campi. Sintassi, typing, valutazione. Gestione a run-time. I tipi di dato astratto e la loro implementazione con gli oggetti. Implementazione di strutture dati rilevanti in Java.
- Elementi di programmazione Object-Oriented. Classi, oggetti, metodi e campi. Ereditarietà. Le librerie di Java.
- La programmazione nel linguaggio C. Strutture dati in C. Array e puntatori. Input e Output. Compilazione di programmi C.
testi / bibliografia
- 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
- Programmazione:
- “Algoritmi+Strutture Dati=Programmi”, Niklaus Wirth, Tecniche Nuove, 1987
metodi didattici
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
— a.a.
2008/2009
— crediti
9
— livello
laurea
— lingua
chi
— professore
— altri docenti
— tutori
— università
Alma Mater Studiorum-Università di Bologna
— campus
Bologna
— dipartimento / facoltà / scuola
Ingegneria CE (0031)
— laurea
0946 Ingegneria biomedica
URL & ID
— ID corso
15305