INGEGNERIA CIVILE E ARCHITETTURA (DICAR)Ingegneria Civile, Ambientale e GestionaleAnno accademico 2025/2026

1001000 - FONDAMENTI DI INFORMATICA A - Z

Docente: ALESSANDRO DI NUOVO

Risultati di apprendimento attesi

Obiettivi formativi del corso secondo i descrittori di Dublino:

In linea con gli obiettivi dell’Agenda 2030 per lo sviluppo sostenibile delle Nazioni Unite (https://www.un.org/sustainabledevelopment/), il corso promuove competenze digitali e analitiche che contribuiscono all’innovazione responsabile, all’inclusione digitale, alla qualità dell’istruzione (Obiettivo 4), alla crescita economica sostenibile (Obiettivo 8) e alla costruzione di infrastrutture resilienti e sostenibili (Obiettivo 9).

Modalità di svolgimento dell'insegnamento

Lezioni frontali alternate a esercitazioni al calcolatore da parte del docente. Il corso prevede anche esercitazioni pratiche svolte dagli studenti.

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al ne di rispettare il programma previsto e riportato nel syllabus.

Prerequisiti richiesti

Nessuno 

Frequenza lezioni

La frequenza è obbligatoria.

Contenuti del corso

Competenze Minime

Testi di riferimento

Materiale didattico


- Slide del docente
- Dispense del docente


- Libri di testo suggeriti per approfondimenti e migliore comprensione:

Possibili libri di testo sulla parte teorica:
- Introduzione ai sistemi informatici ( D. Sciuto, G. Buonanno, L. Mari, 6^ Edizione - McGrawHill )

- Informatica arte e mestiere ( S. Ceri, D. Mandrioli, L. Sbattella - McGrawHill )

Fondamenti di informatica per ingegneri civili, ambientali e gestionali (Massimiliano Salfi, McGraw-Hill )

Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione all’informaticadispense docente; testi consigliati
2La rappresentazione delle informazionidispense docente; testi consigliati
3l’elaborazione e la strutturazione dell’informazionedispense docente; testi consigliati
4i linguaggi per la formalizzazione dell’informazionedispense docente; testi consigliati
5 la trasmissione dell’informazionedispense docente; testi consigliati
6le infrastrutture hardwaredispense docente; testi consigliati
7le infrastrutture softwaredispense docente; testi consigliati
8le infrastrutture di retedispense docente; testi consigliati
9le applicazioni dispense docente; testi consigliati
10I fogli di calcolo per metodologie statistiche e calcolo delle probabilità.dispense docente; testi consigliati
11Programmazione al calcolatore dispense docente; testi consigliati

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame di profitto include due parti:

Le prove includono domande a risposta aperta e multipla su argomenti teorici e pratici quali fogli di calcolo e base di dati, implementazione di un programma in un linguaggio di programmazione (python o C).


La verifica dell'apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.

Esempi di domande e/o esercizi frequenti

La prova  consiste nella realizzazione di un programma in grado di gestire dati (inseriti dagli utenti o gia' memorizzati su file). La prova potrà includere inoltre esercizi riguardanti: La creazione di una base di dati e l'esecuzione di semplici query; Progettazione e gestione di fogli di calcolo.


Di seguito una lista (non esaustiva) di possibili domande teoriche - scritto a risposta multipla o aperta.

Capitolo 2 – L’informazione e la sua codifica

2.1 Descrivere le motivazioni che portano alla scelta della codifica binaria.

2.2 Quanti bit sono necessari per codificare in binario i numeri da 0 a 37?

2.3 Proporre una codifica per i giorni della settimana basata su un alfabeto di 3 simboli.

2.4 Codificare in binario i numeri in base dieci: 139, 8.25.

2.5 Codificare in base 3 i numeri in base dieci: 139, 230.

2.6 Codificare in complemento a due su 8 bit i numeri: −19, −38.

2.7 Eseguire in binario le operazioni tra interi positivi codificati su 8 bit: 21 + 13, 35 + 18, 129 + 131, segnalando eventuali condizioni di overflow.

2.8 Elencare vantaggi e svantaggi della codifica analogica e della codifica digitale.

2.9 Descrivere le principali tipologie di tecniche di compressione.

2.10 Descrivere i vantaggi della notazione esadecimale.

2.11 Si ipotizzi che in Italia circolino circa 20 milioni di veicoli; se la targa di ciascun veicolo fosse espressa da un numero (a) binario oppure (b) esadecimale, quale sarebbe la lunghezza minima (numero di cifre) di ciascuna targa? Indicare i passaggi logici con cui si arriva alla risposta, che può essere ricavata senza eseguire la conversione in binario del numero indicato.

2.12 Indicare qual è il significato della successione di cifre ‘1001001’ a seconda che sia interpretata (a) come un numero in base due; (b) come un numero in base dieci e (c) come un numero in base sedici.

2.13 Eseguire le seguenti operazioni utilizzando la codifica binaria in complemento a due su 8 bit: 35 + 18, 35 − 18, 101 + 51, 101 − 51, segnalando eventuali condizioni di overflow.

2.14 Per digitalizzare un segnale analogico è necessario eseguire le due operazioni di campionamento e di quantizzazione. Indicare quali sono i parametri che caratterizzano tali operazioni e spiegare in che modo tali parametri possono influenzare la qualità della codifica finale.

2.15 Codificare in complemento a due i numeri −191, −387 utilizzando (a) il numero minimo di bit necessari per la codifica; (b) 16 bit. Scrivere poi in ottale ed esadecimale i risultati così ottenuti.

Capitolo 3 – L’elaborazione e la strutturazione dell’informazione

3.1 Differenze e caratteristiche comuni tra algoritmo e programma.

3.2 Struttura e funzionamento della macchina di Turing.

3.3 Importanza della macchina di Turing universale.

3.4 Progettare una macchina di Turing per sommare due interi.

3.5 Conseguenze della tesi di Church–Turing.

3.6 Modello di Von Neumann e sua evoluzione rispetto alla macchina di Turing.

3.7 Descrivere le strutture dati presentate nel capitolo.

3.8 Costrutti principali nei diagrammi di flusso.

3.9 Differenze tra array (statici) e code FIFO (dinamiche), esempi e casi d’uso.

3.10 Differenze tra code FIFO e pile LIFO, esempi e casi d’uso.

3.11 Combinazione di strutture dati statiche e dinamiche (esempi: code di record, array di pile).

3.12 Diagrammi di flusso per: (a) Lettura di un vettore di n interi (con n fornito dall’utente); (b) Lettura di un vettore riutilizzando un sottoprogramma; (c) Divisione tra due interi (algoritmo manuale); (d) Conteggio e somma dei numeri pari in un vettore; (e) Conteggio degli zeri in una matrice n×m; (f) Conteggio dei numeri pari in una matrice n×m (usando il sottoprogramma del punto d); (g) Scambio di due colonne di una matrice (indici letti da utente).

3.13 Verificare l’equivalenza di espressioni booleane tramite tabelle della verità.

3.14 Diagramma di flusso per trovare il minimo in una sequenza di naturali (>0), con terminazione su input ≤0.

3.15 Diagramma di flusso per massimo, minimo e media di una sequenza di naturali (>0), con terminazione su input ≤0.

3.16 Diagramma di flusso per: (a) Lettura N; (b) Lettura di N numeri; (c) Calcolo e stampa di massimo, minimo e media.

3.17 Diagramma di flusso per: (a) Lettura giorno, mese, anno; (b) Calcolo dei giorni trascorsi dall’inizio dell’anno; (c) Gestione errori su valori fuori intervallo, giorni oltre il limite del mese e 29/02 in anno non bisestile.

3.18 Ricavare un’espressione booleana equivalente a una tabella della verità data (variabili a, b, c).

Capitolo 4 – I linguaggi per la formalizzazione dell’informazione

4.1 Criteri di classificazione dei linguaggi di programmazione (imperativi, a oggetti, funzionali, dichiarativi) e caratteristiche schematiche.

4.2 Confronto tra linguaggi imperativi e orientati agli oggetti: vantaggi/svantaggi, esempi d’uso preferenziale, relazioni tra categorie.

4.3 Confronto tra linguaggi funzionali e dichiarativi: vantaggi/svantaggi, esempi d’uso preferenziale, relazioni tra categorie.

4.4 Organizzazione dei dati nelle basi di dati relazionali.

4.5 Principi dei modelli entità–relazione.

4.6 Concetto di ipertesto e aspetti principali di HTML.

4.7 Concetti generali su cui si fonda XML.

4.8 Descrivere in pseudocodice gli esempi di algoritmo presentati nel Capitolo 3.

Capitolo 5 – La trasmissione dell’informazione

5.1 Fattori che limitano la capacità di un canale di trasmissione.

5.2 Vantaggi e svantaggi della trasmissione digitale rispetto a quella analogica.

5.3 Definizione di banda.

5.4 Definizione di modulazione.

5.5 Definizione di segnale e tre esempi diversi da quelli citati nel testo.

5.6 Definizione di ridondanza in un messaggio.

5.7 Descrivere e motivare l’uso del bit di parità.

5.8 Calcolare il numero di simboli al secondo con alfabeto a 6 bit e 2 bit di parità su canale da 10 kbit/s.

5.9 Calcolare la banda minima (kbit/s) per 10 ksimboli/s con 8 bit/simbolo e rilevazione errori.

5.10 Calcolare banda del canale e velocità della sorgente per un flusso multimediale: 100 kbit/s, blocchi da 100 bit, 2% dei blocchi corrotti e ritrasmessi.

Capitolo 6 – Le infrastrutture hardware

6.1 Architettura di Von Neumann.

6.2 Organizzazione del ciclo fondamentale del processore.

6.3 Struttura del data path del processore.

6.4 Elementi principali dell’unità di controllo del processore.

6.5 Fasi di esecuzione dell’istruzione OR R01, R02, R03 ed elementi attivi nello schema.

6.6 Pipeline a 5 stadi (MI 10 ns, LR 5 ns, AL 10 ns, MD 10 ns, SR 5 ns): miglioramento rispetto all’esecuzione senza pipeline e lunghezza di sequenza necessaria per triplicare la velocità media.

6.7 Parametri che caratterizzano le memorie.

6.8 Confronto tra soluzioni di cache: (a) L1 2 ns, successo 90%; (b) L1 2 ns (80%) + L2 4 ns (80%); (c) L1 2 ns (80%) + L2 5 ns (x%).

6.9 Come 6.8 ma con memoria centrale a 8 ns.

6.10 Principali accorgimenti tecnologici nei processori moderni.

6.11 Organizzazione delle memorie di massa.

6.12 Funzionamento del meccanismo di interfacciamento calcolatore–periferiche.

Capitolo 7 – Le infrastrutture software

7.1 Componenti fondamentali del sistema operativo.

7.2 Modelli organizzativi dei sistemi operativi.

7.3 Meccanismo di avvicendamento (scheduling) dei processi.

7.4 Ciclo di vita di un processo.

7.5 Analisi di uno schema degli stati di processo in time–sharing: eliminare transizioni impossibili o inutili ed esplicitare gli eventi.

7.6 Analisi di transizioni di stato tra processi in esecuzione/pronti/attesa; spiegare la memoria virtuale.

7.7 Calcolare la dimensione della tabella delle pagine per memoria fisica 2 GB, dimensione pagina 512 KB, memoria virtuale 1/2/4 GB.

7.8 Organizzazione e funzioni del file system.

7.9 Principi del modello client–server.

7.10 Concetto di virtualizzazione delle risorse.

7.11 Meccanismo di protezione dei processi.

7.12 Definizione di system call e modalità di invocazione.

Capitolo 8 – Le infrastrutture di rete

8.1 Classificare le reti di calcolatori (tipologia connessione, estensione, topologia).

8.2 Descrivere i mezzi trasmissivi (guidati e non guidati) e le loro caratteristiche.

8.3 Confrontare commutazione di circuito e commutazione di pacchetto.

8.4 Caratteristiche di ADSL e Wi‑Fi.

8.5 Vantaggi e svantaggi delle principali topologie di rete.

8.6 Principali apparati di rete (repeater, hub, switch, bridge, router, gateway).

8.7 Pile protocollari ISO/OSI e TCP/IP: livelli e funzioni.

8.8 Definire cosa sono i sistemi distribuiti e descriverne i vantaggi.

Capitolo 9 – Le applicazioni

9.1 Descrivere le tre componenti di un’applicazione (Interfaccia Utente, Logica Applicativa, Gestione Dati).

9.2 Commentare le fasi del ciclo di vita del software.

9.3 Classificare i tipi di interfaccia utente.

9.4 Descrivere e discutere l’organizzazione delle architetture software web‑oriented.

9.5 Descrivere le architetture software per dispositivi mobili.

9.6 Descrivere le architetture software orientate ai servizi.

9.7 Discutere i problemi principali inerenti la sicurezza nelle comunicazioni su rete.

9.8 Descrivere il funzionamento del protocollo HTTP.

9.9 Definire che cos’è un DBMS.

9.10 Vantaggi e svantaggi di un DBMS rispetto a file tradizionali.

9.11 Differenza tra server web e server di applicazioni.


English version