Il corso ha la finalità di fornire conoscenze: - sulla rappresentazione dell’informazione nei calcolatori, sull’architettura dell’elaboratore, sul software di base, sul sistema operativo, sugli algoritmi, sui linguaggi di programmazione, su compilatori e interpreti e sulle reti di calcolatori - sulla programmazione strutturata e sulla programmazione in linguaggio C. Sviluppo di programmi in C per la gestione di strutture dati complesse (biblioteche, archivi, etc.).
Lezioni frontali, esercitazioni e laboratorio.
Non sono richieste specifiche capacità in ingresso
E' richiesta la frequenza obbligatoria
Introduzione: Algoritmi e Programmi
Elaborazione automatica dell'informazione. Algoritmi e programmi. Un linguaggio di programmazione. Il progetto di un programma. La programmazione strutturata. Diagrammi di flusso e pseudocodice.
Rappresentazione dell'informazione
Sistemi di codifica. Sistemi di numerazione e algoritmi di conversione. Aritmetica intera e in virgola mobile. Rappresentazione di dati multimediali.
Architettura di un sistema di elaborazione
La struttura di un elaboratore: memoria centrale, unità centrale, funzionamento elementare dell'elaboratore (ciclo macchina). Dispositivi periferici e memorie di massa. Classificazione dei sistemi di elaborazione.
Reti di Calcolatori e Internet
Generalità sulle reti di calcolatori. Reti locali. Reti geografiche. I protocolli di rete. Cenni su Internet e sulle più diffuse applicazioni di rete.
Software di base e Sistemi Operativi
Traduzione ed esecuzione di programmi. Ambiente di Programmazione. Compilatori vs. interpreti. Architettura e funzionalità del Sistema Operativo. Gestione dei processi. Gestione della memoria. Gestione del file system.
Il linguaggio di programmazione "C": sintassi e semantica
Istruzioni di Assegnazione. Strutture di controllo. Tipi di dato in C: tipi semplici (int, char, float, double) e
strutturati (array e stringhe, strutture). Il tipo puntatore. Le funzioni. Campo d'azione degli identificatori.
Algoritmi di ordinamento e ricerca
Ricerca sequenziale e binaria. Algoritmi di ordinamento.
Strutture dati
Strutture dati dinamiche. Allocazione dinamica della memoria. Liste, Pile, Code ed Alberi. Primitive e relative
implementazioni in C. Esempi di programmi.
Dispense e slide del docente disponibili su http://studium.unict.it
Argomenti | Riferimenti testi | |
1 | Informazione e sua codifica | Libro 2: Capitolo 2 |
2 | Problemi e algoritmi | Libro 2: Capitolo 3 |
3 | Linguaggi per la formalizzazione dell’informazione | Libro 2: Capitolo 4 |
4 | Teoria della Computabilità | Dispense del docente |
5 | Infrastruttura Hardware | Libro 2: Capitolo 6 |
6 | Infrastruttura Software | Libro 2: Capitolo 7 |
7 | Infrastruttura di Rete | Libro 2: Capitolo 8 |
8 | Introduzione ANSI C: Tipi di dati, istruzioni di assegnazione e strutture di controllo. | Libro1: Capitoli 1, 2 e 11 |
9 | ANSI C: Istruzioni interative | Libro 1: Capitolo 3 |
10 | ANSI C: Tipi di dati strutturato: array e stringhe, strutture | Libro 1: Capitoli 4 e 6. Dispense del docente |
11 | ANSI C: Funzioni, ricerche, ordinamenti e fusioni | Libro1: Capitoli 5 e 7 |
12 | ANSI C: Puntatori e gestione dinamica della memoria | Libro1: Capitoli 9 e 12 |
13 | ANSI C: File e strutture dati | LIbro1: Cpitolo 13 e 14 |
L'esame consiste in una prova (individuale) da svolgere in laboratorio divisa in due parti per una durata di 2 ore: la prima parte di teoria (tramite test a risposta multipla al pc o esame orale) sugli argormenti affrontati nel corso e la seconda parte di programmazione in C.
L'esame è superato quando entrambe le prove sono state superate.
E' prevista inoltre una prova in itinere, che, se superata, sostituirà la prova di teoria.
Esempi di compiti riguardanti la prova di teoria e di laboratorio sono disponibili su Studium.