Il concetto di calcolatore e algoritmo
Problemi e soluzioni. I concetti di algoritmo e programma. Il calcolatore esecutore universale di algoritmi. Proprietà di un algoritmo, computazione e funzione calcolata. La risoluzione di problemi con il calcolatore. Il linguaggio degli schemi a blocchi per la descrizione di algoritmi. Schemi a blocchi strutturati. Equivalenza debole e forte tra schemi a blocchi.
Il calcolatore e la codifica dell’informazione
Elementi della macchina di von Neumann. Codifica dei numeri naturali, razionali, caratteri, immagini. Operazioni aritmetico-logiche. Organizzazione e componenti di un sistema di elaborazione. La memoria centrale. L'unità centrale. La gestione delle periferiche. Dispositivi di ingresso uscita. Memorie di massa. Il linguaggio macchina. Il linguaggio assemblatore. Indirizzi rilocabili. L'esecuzione delle istruzioni.
Concetti di programmazione
I linguaggi di alto livello. Astrazioni sui dati, sul controllo e sulle procedure. Principi di information hiding, less-coupling high-cohesion. Paradigmi di programmazione. Compilatori e interpreti.
Il linguaggio di programmazione C
La struttura di un programma C. Regole per la scrittura dei programmi. I tipi di dati in C. Le funzioni di stampa ed acquisizione dati. L'operatore di assegnamento e gli operatori aritmetici del C. Conversioni di tipo implicite ed esplicite. Operatori relazionali e logici. Le istruzioni condizionali IF, ELSE e SWITCH. Le istruzioni iterative WHILE e DO. L'istruzione iterativa FOR. Le istruzioni di salto BREAK e CONTINUE. Dichiarazione, indicizzazione e inizializzazione di vettori di variabili. Dichiarazione, indicizzazione e inizializzazione di matrici di variabili. Le variabili puntatori e l'aritmetica dei puntatori. Costanti e variabili stringa. Definizione e invocazione di funzioni. Passaggio per valore e per riferimento. Variabili locali, statiche e globali. Scope e durata di memorizzazione. Operazioni su sequenze di interi: stampa, ricerca, inserimento. Cancellazione, fusione. Ordinamento per inserimento diretto, per selezione, bubble-sort. Funzione ricorsiva. Stack di esecuzione del programma. Ordinamento quicksort e mergesort. Variabili struttura. Dichiarazione di strutture ed operatori per variabili strutture. Strutture utilizzate come argomenti di funzioni. Strutture ricorsive e vettori di strutture. Operazioni su sequenze di variabili strutture. Variabili unione e variabili di enumerazione.
Il sistema operativo
Evoluzione e tipologie di sistemi operativi. Le funzioni e l'organizzazione di un sistema operativo. Il gestore dei processi. Il gestore della memoria centrale. Il gestore delle periferiche.
I calcolatori in rete
Funzionalità e classificazioni. Il modello a livelli. Il modello TCP/IP. La rete Internet. Il modello client-server. I principali servizi Internet: il servizio di risoluzione dei nomi, la posta elettronica, il world wide web, il trasferimento di file. La sicurezza in Internet.