Universita' di Firenze, Facolta' di Ingegneria

Corso di Laurea in Ingegneria Meccanica

Fondamenti di Informatica I

Programma del Corso - A.A. 2010/2011 (270)

M. Baroni - A. Fantechi

1 programma dell'insegnamento

Il calcolatore come oggetto che permette di fare operazioni su oggetti

Concetto di algoritmo

La notazione dei diagrammi di flusso per la descrizione degli algoritmi

Concetto di variabile

Struttura a livelli di un calcolatore

L'algebra booleana

Rappresentazione posizionale di numeri interi in una base qualsiasi

Sistemi di numerazione in modulo

Rappresentazione binaria

Rappresentazione di numeri negativi

Rappresentazione di numeri reali in virgola fissa e in virgola

Rappresentazione di testi e altre informazioni

Rappresentazione delle istruzioni – linguaggio assembler

Linguaggio macchina

L'architettura di un calcolatore

Linguaggi di programmazione

Il processo di compilazione e link

Il linguaggio e ambiente di programmazione C

Sintassi e semantica: cenni a grammatica EBNF

Tipi predefiniti del linguaggio C e istruzioni dichiarative

Istruzioni di ingresso/uscita (scanf, printf)

Struttura generale di un programma C

Espressioni nel linguaggio C

Istruzioni di selezione e iterazione.

Sottoprogrammi

Passaggio di parametri a una funzione C

Regole di visibilita' e durata degli identificatori

Variabili globali , Effetti laterali

Puntatori e Passaggio di parametri per indirizzo

Strutture dati: vettori, stringhe, matrici, tipi strutturati

Algoritmi ricorsivi, strutture dati a pila, system stack

Liste lineari: rappresentazione mediante strutture collegate

e operazioni di inserimento, ricerca e cancellazione.

Cenni agli alberi binari di ricerca

Considerazioni sulla complessita' degli algoritmi

Algoritmi di ricerca: ricerca esaustiva, ricerca binaria

Algoritmi di ordinamento: per selezione, a bolle, cenni a quick-sort.



2 risultati di apprendimento previsti

Capacita' di distinguere, nell'utilizzo di un calcolatore, i livelli in cui un calcolatore e' strutturato, e i concetti di base su cui si basa il suo funzionamento, anche in relazione con la determinazione delle cause di possibili malfunzionamenti.

Padronanza di una terminologia corretta per quanto riguarda i concetti base dell'informatica

Capacita' di progettazione e realizzazione di algoritmi e strutture dati elementari

Capacita' di scrivere semplici programmi C.

3 eventuali prerequisiti

I requisiti essenziali sono l'interesse, la capacita' di ragionamento logico, la attitudine ai processi di conoscenza deduttivi, la capacita' di attenzione e applicazione ai problemi. Molte di queste cose si apprendono nello studio della matematica, che e' utile nel formare il metodo e fornire strumenti specifici. Chi ha esperienza nella programmazione, tipicamente gli studenti che provengono da istituti tecnici, e' inizialmente facilitato. Il corso e' comunque disegnato per studenti che non abbiano alcuna precedente conoscenza in materia di informatica.

4 testi di riferimento

Per la prima parte le dispense fornite dal docente, disponibili all'indirizzo: http://www.dsi.unifi.it/~fantechi/APPintNO_IME.html

Per la parte relativa alla architettura di un calcolatore preso ad esempio, e per l'introduzione al linguaggio C, il testo:

E. Vicario

Fondamenti di programmazione – linguaggio C, strutture dati e algoritmi elementari

Ed. Progetto Leonardo - Bologna

Alcuni approfondimenti sul linguaggio C seguono quanto riportato nel testo:

M. Baroni

Fondamenti di programmazione in linguaggio C

Ed. Aracne

5 organizzazione della didattica

Prevalentemente lezioni in aula con presentazione alla lavagna tradizionale o luminosa, a volte con l'ausilio di un PC portatile collegato a proiettore. Alcune lezioni finalizzate alla esercitazione presso il laboratorio di informatica.


6 calendario delle prove di esame

I Sessione : 2 Febbraio, 16 Febbraio, 2 Marzo 2011

II Sessione : 16 Giugno, 30 Giugno, 14 Luglio.

III sessione: 8 Settembre.

Le prove si svolgeranno alle ore 9:30, in un'aula del Centro Didattico di viale Morgagni.

Gli studenti devono iscriversi alla prova di esame per via telematica sul sito : http://stud.unifi.it:8080/prenot .

7 metodi di valutazione (prova scritta, orale, ecc.)

Prova scritta sugli argomenti trattati a lezione, compresi alcuni esercizi di programmazione in linguaggio C. Solo su richiesta, gli studenti che hanno superato lo scritto possono sostenere una

prova orale.

In casi particolari, dietro preventiva autorizzazione dei docenti, l'esame può essere superato con la preparazione di un elaborato svolto autonomamente dallo studente a cui segue una prova orale.

8 curricula scientifici del docente responsabile e degli eventuali altri docenti coinvolti

Il corso e' tenuto in codocenza dal Prof.Alessandro Fantechi e dalll'Ing. Maurizio Baroni .

Alessandro Fantechi ha ricevuto la laurea in Scienze dell'Informazione all'Universita' di Pisa, nel Novembre 1978, conseguendo nel contempo il Diploma di Licenza della Scuola Normale Superiore.

Dal Dicembre 2007 e' Professore Ordinario presso la Facolta' di Ingegneria dell'Universita' di Firenze, dove e' stato Professore Straordinario dal Dicembre 2005 e Professore Associato dal Novembre 1995.

In precedenza, e' stato Professore Associato presso la Facolta' di Ingegneria dell'Universita' di Pisa dal 1992, e Ricercatore dell'IEI - CNR, Pisa, dal 1983.

Attualmente tiene presso l'Universita' di Firenze il corso di Fondamenti di Informatica per il Corso di Laurea di Ingegneria Meccanica, il corso di Informatica Industriale per i Corsi di Laurea di Ingegneria Elettronica, ingegneria Informatica e Ingegneria delle Telecomunicazioni, e il corso di Informatica Industriale II per il Corso di Laurea Specialistica in Ingegneria Informatica.

E' associato alla ricerca dell'Istituto di Scienza e Tecnologie dell'Informazione ". Faedo" del CNR (precedentemente, IEI), Pisa dal 1992.

Alessandro Fantechi si occupa principalmente di applicazioni di metodi formali di specifica e verifica, con particolare riguardo alle tecniche di model-checking, e alle loro applicazioni in ambito industriale.

I suoi interessi di ricerca hanno compreso, oltre alle tecniche di descrizione formale, la logica temporale, la programmazione e modellazione di sistemi distribuiti, e l'applicazione di tecniche di elaborazione del linguaggio naturale all'ingegneria dei requisiti.

Ha pubblicato piu' di 70 articoli su riviste o a conferenze internazionali.

Ha svolto l'attivita' di coordinatore di unita' in diversi progetti nazionali di ricerca (COFIN - SALADIN, COFIN - QUACK) ed internazionali (ESPRIT - LOTOSPHERE).

Ha partecipato all'organizzazione di diverse conferenze internazionali, tra cui FMOODS'99, ICSM2001, FME 2003, ed e' stato membro del comitato di programma di diverse edizioni delle conferenze internazionali TACAS, FMOODS, FORTE. E' stato Program Co-chair della conferenza FMICS 2008. Dal Novembre 2008 e' coordinatore del gruppo FMICS - Formal Methods for Industrial Critical Systems dell'ERCIM.

Ha svolto numerose attivita' di trasferimento tecnologico verso importanti imprese nazionali dedite a produzione di sistemi embedded e safety-critical, in particolare nei settori del segnalamento ferroviario e dei sistemi avionici.

Maurizio Baroni ha conseguito la Laurea in Ingegneria Elettronica indirizzo Biomedico presso l'Universita' di Firenze nel 1977, votazione 110/110.

Dal 1978 al 1981 e' stato borsista CNR del Progetto Finalizzato Tecnologie Biomediche, collaborando alla progettazione di un sistema computerizzato dedicato al trattamento dei dati del cateterismo cardiaco.

Dal 1982 e' Ricercatore Universitario, inizialmente nel raggruppamento disciplinare F07C - fisiologia clinica, e successivamente nel settore K06X, attualmente denominato ING-INF06, bioingegneria elettronica e informatica. Dal 1982 ha lavorato presso l'Istituto di Patologia Medica e Metodologia Clinica della Facolta' di Medicina, Universita' di Pisa; dal 1985 presta servizio presso il Dipartimento di Elettronica e Telecomunicazioni, Universita' di Firenze.

L'attivita' didattica consiste in supplenze di vari corsi: Fondamenti di Informatica (dal 1993, per i corso di laurea in Ingegneria Elettronica, Telecomunicazioni e Meccanica); Diagnostica per Immagini e (dall'a.a. 2003/2004 ad oggi) Elettronica Biomedica per il corso di laurea in Tecniche Ortopediche, in collaborazione tra Facolta' di Medicina e Ingegneria; Ingegneria Clinica per il corso di laurea in Ingegneria Meccanica, orientamento biomeccanica; Tecnologie Biomediche 1 per il corso di laurea in Ingegneria Elettronica; Bioingegneria Elettronica per il corso di laurea in Elettronica, curriculum biomedico.

L'attivita' scientifica verte su elaborazione e analisi di immagini mediche, prevalentemente in applicazioni cardiovascolari e oculistiche. E' autore di almeno 70 pubblicazioni, tra riviste, congressi e libri. E' membro del Gruppo Nazionale di Bioingegneria e svolge attivita' di referee di riviste internazionali (Medical Science Monitor e Neuroimage). Ha partecipato a progetti di ricerca di interesse nazionale ed e' stato responsabile di molti progetti di ricerca finanziati dall'ateneo di Firenze.

9 orari di ricevimento dei docenti

Alessandro Fantechi : Lun. 17.00 - 18.00

Ven. 9.30 - 10.30

Maurizio Baroni : Martedì 11 - 13

Facolta' di Ingegneria, Via S. Marta 3, II piano.

Gli orari sono soggetti a cambiamenti in base all'orario delle lezioni.