Fondamenti di Informatica I- Polo di Prato
Novità
- Il corso non è più disponibile.
- 6 Giugno 2010: aggiunta e modificata data esame
- 11 Maggio 2010: aggiunta data esame
- 17 Settembre 2008: aggiunti link di approfondimento delle lezioni
Date esame
Gli studenti interessati a sostenere l'esame devono iscriversi mandandomi un'email e sempre controllare data e ora sul sito del Polo didattico di Prato (link diretto: sezione prenotazione aule)
- Scritto: Giovedì 28 Giugno 2010, ore 17.00 (MICC, Firenze) - Orale: Venerdì 29 Giugno 2010, ore 16:00 (aula docenti, Prato)
- Scritto: Giovedì 14 Giugno 2010, ore 17.00 (MICC, Firenze) - Orale: Venerdì 15 Giugno 2010, ore 16:00 (aula docenti, Prato)
- Scritto: Lunedì 2 Novembre 2009, ore 9.30 (aula 218) - Orale: Martedì 3 Novembre, ore 10.00 (aula docenti).
- Scritto: Lunedì 23 Marzo 2009, ore 10.00 - Orale: Venerdì 27 Marzo, ore 15.30
- Scritto: Venerdì 16 Gennaio 2009, ore 10.00 - Orale: Lunedì 19 Gennaio ore 10.00
- Scritto: Martedì 16 Dicembre 2008, ore 10.00 - Orale: Giovedì 18 Dicembre, ore 10.00
- Scritto: Venerdì 12 Settembre 2008, ore 10.00 - Orale: Venerdì 19 Settembre, ore 10.00
Scritto: Venerdì 29 Agosto 2008, ore 10.00 - Orale: Lunedì 8 Settembre, ore 15.00Date annullate- Scritto: Venerdì 25 Luglio 2008, ore 14.30 - Orale: Venerdì 1 Agosto, ore 15.00
- Scritto: Venerdì 4 Luglio 2008, ore 15.30 - Orale: Mercoledì 9 Luglio, ore 9.30
Lucidi lezioni e materiale collegato
I collegamenti agli articoli di Wikipedia sono generalmente fatti alle versioni in inglese.
Introduzione al corso (6.7 MB), Wikipedia: linguaggio C (in italiano)
La rappresentazione dei dati (4 MB), articolo di Dr. Dobbs Journal sui tipi numerici, Wikipedia: floating point e IEEE 754, programma di esempio
Definizione di un linguaggio (500 KB), Wikipedia: Extended Backus-Naur Form, tutorial su BNF ed EBNF
Il compilatore C (600 KB), il preprocessore (dalla versione online del libro "The C Book, second edition" di Mike Banahan, Declan Brady and Mark Doran, pubblicato da Addison Wesley nel 1991), Compiler, Assembler, Linker and Loader: a brief story, IBM DeveloperWorks: Dissecting shared libraries e Anatomy of Linux dynamic libraries
Il linguaggio C: tipi, variabili e costanti (400 KB)
Il linguaggio C: puntatori e array (400 KB), tutorial su puntatori ed array
Il linguaggio C: istruzioni, funzioni, dati strutturati (450 KB), il passaggio dei parametri in Java 1, 2.
Strutture dati: le liste (450 KB), Wikipedia: Linked List, tutorial su linked list
Costo di esecuzione e complessità/ Algoritmi di ricerca: sequenziale e binaria (650 KB), Google Blog: Extra, Extra - Read All About It: Nearly All Binary Searches and Mergesorts are Broken, Wikipedia: Binary search
Algoritmi di ordinamento: Sequential sort, Bubble-sort, Quicksort (450 KB), Wikipedia: Bubble sort e Quicksort (con animazioni)
Algoritmi di ordinamento: Mergesort (400 KB), Wikipedia: Mergesort (con animazione)
Strutture dati: alberi binari (500 KB), Wikipedia: binary tree
Modalità di svolgimento dell'esame
L'esame si compone di una prova scritta e una orale.
La prova scritta consiste in alcuni elaborati di programmazione e nella discussione di contenuti del programma. La prova è organizzata "a batteria" in due parti di 45-60 minuti ciascuna: nella prima parte vengono date risposte a questioni di natura teorica, nella seconda viene svolto un esercizio di programmazione.
La prova scritta è svolta su carta, usando fogli in formato A4 (no fogli protocollo). Al termine, viene presentata e discussa la soluzione. Successivamente i candidati ricevono la fotocopia del loro elaborato.
Per accedere alla prova orale, il candidato deve correggere il proprio elaborato, riportando le correzioni in maniera visibile sulla fotocopia. Il candidato deve anche realizzare il programma corretto e funzionante che corregge l'elaborato e lo completa facendone un programma autocontenuto. Il candidato deve infine fornire una autovalutazione del proprio elaborato, in base al valore attribuito a ciascuna parte della prova, alla discussione della soluzione, all'esperienza acquisita nella correzione e realizzazione effettiva del programma.
La prova orale può essere sostenuta a partire dalla settimana seguente alla prova scritta, non oltre la prova scritta successiva.
La prova orale inizia con la discussione dell'elaborato, e prosegue con l'approfondimento di tutti i contenuti del programma.
Esempi di compiti sono disponibili sul sito del Prof. Enrico Vicario.
Ambienti di sviluppo/compilatori consigliati
Eclipse CDT (richiede l'installazione di Eclipse e di un compilatore come GCC) - multipiattaforma
Code::Blocks (disponibile in distribuzione che contiene il compilatore) - multipiattaforma
Compilatore per Windows: GCC nella distribuzione MinGW
Compilatore per Linux e OSX: GCC
Libro di testo
E. Vicario, "Fondamenti di programmazione - Linguaggio C, strutture dati e algoritmi elementari, c++", Società Editrice Esculapio, 2011
Libri consigliati
H.M. Deitel, P.J. Deitel, “C Corso completo di programmazione”, Apogeo, 2007
H. Schildt, “C Guida completa”, McGraw-Hill, 2000
Sedgewick Robert, “Algoritmi in C”, Pearson Education
Jon Bentley, “Programming Pearls”, Addison Wesley