Il concetto di algoritmo e di calcolatore
Problemi e soluzioni. Il calcolatore come esecutore universale di algoritmi. Proprietà di un algoritmo. Algoritmi, computazioni e funzioni calcolate.
Il progetto degli algoritmi
La risoluzione algoritmica dei problemi. Il progetto degli algoritmi: processo di risoluzione di un problema, dall'analisi del problema all'esecuzione di un programma, caratteristiche di un algoritmo (istruzioni e dati). Tecniche di rappresentazione degli algoritmi. Il linguaggio degli schemi a blocchi. Proprietà degli algoritmi. Esempi di algoritmi. Algebra di Boole.
I linguaggi e gli ambienti di programmazione
Paradigmi di programmazione. Il paradigma imperativo. Il concetto di astrazione (dati, controllo, procedurale). Tipi di dato, strutture di controllo, funzioni e procedure. Compilatori e interpreti. Linker, editor, debugger. Cenni ai paradigmi funzionale, logico e ad oggetti. Cenni ai linguaggi per il Web.
La codifica dell'informazione
Informazione e rappresentazione. Codici binari. Notazioni posizionali: notazione posizionale con base, conversioni, notazione binaria, ottale ed esadecimale. Codifica dei numeri naturali. Codifica dei numeri interi relativi: in valore assoluto e segno, in complemento. Codifica dei numeri razionali: in virgola fissa, in virgola mobile, il formato IEEE754. Esercizi sulla codifica dei numeri. Codifica di valori logici e caratteri. Codifica dei testi. Rappresentazione analogica e digitale. Codifica di suoni, immagini e sequenze video. Codici rivelatori e correttori (cenni). Compressione (cenni): compressione senza perdita, compressione con perdita.
L'architettura del calcolatore
Organizzazione macroscopica del calcolatore (modello di von Neumann). L'unità centrale: i componenti, il ciclo macchina, il funzionamento dell'unità centrale. La codifica delle istruzioni: il linguaggio macchina, il linguaggio assemblatore, esempi di istruzioni in linguaggio assemblatore MIPS. La memoria centrale. La memoria cache. La memoria di massa. La gestione delle periferiche: struttura e funzionamento dell'interfaccia di ingresso-uscita. Esempi di dispositivi di ingresso-uscita.
Il sistema operativo
Le funzioni di un sistema operativo. Organizzazione di un sistema operativo. Il gestore dei processi: il concetto di processo e di stato, lo scheduling, la gestione dell'interazione tra processi. Il gestore della memoria centrale. Il gestore delle periferiche. Il gestore degli archivi. L'interprete dei comandi.
I calcolatori in rete
Le reti di calcolatori: funzionalità e classificazioni. Reti commutate e broadcast. Reti locali: topologia e metodi di accesso. Il modello a livelli TCP/IP. Cenni alla rete Internet.
Introduzione al linguaggio C
Introduzione alla programmazione mediante l'utilizzo del nucleo elementare del linguaggio C. Tipi di dati elementari, array, matrici e struct. Strutture di controllo. Gestione dell'ingresso/uscita. Funzioni in C. Programmazione strutturata per raffinamenti successivi, programmazione modulare. Esempi ed esercizi di complessità crescente.