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. Verranno forniti gli strumenti metodologici per risolvere algoritmicamente un problema e le tecniche della programmazione strutturata. Gli studenti saranno in grado di sviluppare autonomamente un programma in linguaggio C con particolare riferimento alla gestione di strutture dati complesse (biblioteche, archivi, etc.).
Lezioni frontali, esercitazioni e laboratorio.
Non sono richieste specifiche conoscenze o abilità in ingresso
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.
Persistenza dei dati
I File: file di testo e file binari.
Dispense del docente.
Il materiale didattico utilizzato a lezione e in laboratorio sarà reso disponibile su Studium.
Esame pratico, con svolgimento di un programma in C, ed esame orale sugli argomenti di teoria.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Esempi di esercizi e prove di laboratorio sono disponibili su http://studium.unict.it