FONDAMENTI DI INFORMATICA

Anno accademico 2020/2021 - 1° anno
Docente: Mario Massimiliano SALFI
Crediti: 9
SSD: ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Organizzazione didattica: 225 ore d'impegno totale, 138 di studio individuale, 42 di lezione frontale, 45 di esercitazione
Semestre:

Obiettivi formativi

Al termine del corso, lo studente acquisirà familiarità con i concetti fondamentali dell’informatica, con la codifica delle informazioni, l'architettura di un elaboratore, i sistemi operativi e gli applicativi software. Possiederà, inoltre, una conoscenza globale su internet e sulle reti di computer, sulla teoria delle basi di dati. Sarà in grado di scrivere software basato su shell di testo, o GUI, attraverso il linguaggio di programmazione C, inoltre possiederà le conoscenze minime di teoria degli algoritmi. Infine, sarà in grado di progettare documenti di testo e fogli di calcolo, utilizzando Word ed Excel.


Modalità di svolgimento dell'insegnamento

Lezioni teoriche e pratiche svolte in aula, assegnazione e relativa correzione di esercitazioni pratiche al computer da svolgere in aula, sotto forma di laboratorio, e fuori aula, sotto forma di homework.

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


Prerequisiti richiesti

Nessuno.


Frequenza lezioni

Obbligatoria.


Contenuti del corso

1. Introduzione all’informatica
1.1 La macchina di Babbage
1.2 La macchina di Touring
1.3 La nascita della macchina di Von Neumann
1.4 Hardware e Software

2. Codifica e rappresentazione delle informazioni
2.1 Segnali analogici e segnali digitali
2.2 Digitalizzazione dei segnali analogici
2.3 Campionamento
2.4 Quantizzazione
2.5 Interpolazione
2.6 Il bit e il byte
2.7 Codice ASCII e codice UNICODE
2.8 Il sistema decimale
2.9 Il sistema binario
2.10 Il sistema ottale
2.11 Il sistema esadecimale
2.12 Conversione da base b a base 10
2.13 Conversione da base 10 a base b
2.14 Rappresentazione dei numeri interi con e senza segno
2.15 Rappresentazione in modulo e segno
2.16 Metodo del complemento a due
2.17 Operazioni con i binari
2.18 L'overflow

3. Algebra di Boole
3.1 Variabili e funzioni booleane
3.2 Le tavole di verità
3.3 Le porte logiche fondamentali: AND, OR e NOT
3.4 Le porte logiche derivate: NAND, NOR, XOR e XNOR
3.5 Circuiti digitali combinatori
3.6 Mintermini e maxtermini
3.7 Prima e seconda forma canonica
3.8 Proprietà d'identità, assorbimento, inverso, idempotenza e doppia negazione
3.9 Principio di dualità
3.10 Proprietà commutativa, associativa e distributiva
3.11 Teoremi di De Morgan e dell'assorbimento
3.12 Mappe di Karnaugh
3.13 Minimizzazione di funzioni booleane

4. Architettura dei calcolatori
4.1 La macchina di Von Neumann
4.2 Schema a blocchi di un elaboratore
4.3 Il processore
4.4 CPU, FPU e ALU
4.5 I registri
4.6 Il segnale di clock
4.7 La tempistica delle istruzioni
4.8 Time sharing
4.9 La tempistica delle istruzioni
4.10 Time sharing
4.11 Organizzazione delle memorie
4.12 Le memorie principali: la RAM, la ROM e la CACHE
4.13 Definizione di algoritmo
4.14 Il ciclo FETCH-DECODE-EXECUTE
4.16 Le memorie di massa
4.17 I dischi magnetiche: dai floppy disk agli hard disk
4.18 Organizzazione fisica dei dati nei dischi magnetici
4.19 Il tempo di accesso ai dati
4.20 I dischi ottici: CD, DVD e blu-Ray
4.21 Le flash memory: NOR flash e NAND flash
4.22 Nastri magnetici e backup
4.23 La gerarchia di memorie: costo, velocità e dimensione
4.24 Le periferiche di I/O
4.25 Tastiere, sistemi di puntamento, microfoni, webcam
4.26 Caratteristiche dei monitor e risoluzione grafica
4.27 La tecnologia CRT
4.28 Gli schermi LCD e gli LDC con retroilluminazione a LED
4.29 Le matrici di LED
4.30 Le stampanti ad aghi
4.31 Le stampanti a getto di inchiostro a testina termica ed a testina piezoelettrica
4.32 Le stampanti laser
4.33 Le porte

5. Sistema Operativo e applicativi software
5.1 Funzionalità di un Sistema Operativo
5.2 Classificazione dei Sistemi Operativi
5.3 La fase di bootstrap
5.4 Shell testuali e GUI
5.5 La gestione dei files
5.6 Il File System
5.7 Il software applicativo
5.8 I traduttori: interpreti e compilatori
5.9 Codice sorgente e codice oggetto
5.10 Tipologie di licenze d'uso
5.11 Il software open source

6. Reti di calcolatori ed Internet
6.1 Tipologie di reti
6.2 Reti LAN, MAN, WAN e GAN
6.3 Caratteristiche delle reti locali e delle reti geografiche
6.4 I sistemi di interconnessione
6.5 Il doppino telefonico, il cavo coassiale e le fibre ottiche
6.6 Il modem tradizionale ed il modem ISDN
6.7 Collegamento dedicato e commutato
6.8 Reti multipunto e reti punto a punto
6.9 I protocolli di comunicazione
6.10 Internet
6.11 I livelli del modello TCP/IP
6.12 Indirizzamento IP
6.13 I protocolli TCP/IP
6.14 I domini Internet
6.15 Domain Name Server
6.16 Il servizio www
6.17 Indirizzi URL
6.18 Navigare in rete
6.19 Il servizio www
6.20 Ipertesti
6.21 Il servizio di posta elettronica
6.22 Il protocollo FTP
6.23 I motori di ricerca
6.24 Il metalinguaggio HTML e gli Ipertesti
6.25 La sicurezza in rete
6.26 Il protocollo HTTPS
6.27 Cybercrime, hackers e crackers
6.28 Tipologie di attacchi informatici
6.29 I malware
6.30 Classificazione per tipologia di attacco
6.31 I software antivirus
6.32 La gestione delle password
6.33 Regole di condotta generale
6.34 Alcuni aspetti legali: profili fake e furto di identità
6.35 Cyberbullismo
6.36 La legge n.71 del 29 maggio 2017
6.37 Il sexting
6.38 Revenge porn
6.39 La legge 19 luglio 2019 n. 69 ed il codice rosso

7. Introduzione alle basi di dati
7.1 Sistema organizzativo e sistema informativo
7.2 Sistema informatico e automazione
7.3 Il dato come risorsa aziendale
7.4 La gestione delle informazioni
7.5 La semantica dei dati
7.6 I DBMS
7.7 La condivisione dei dati: ridondanza ed incoerenza
7.8 Organizzazione dei dati in un database
7.9 Schemi e istanze
7.10 Record e campi
7.11 Definizione di chiave primaria
7.12 Le viste di dati
7.13 Le relazioni 1 ad 1, 1 a molti e molti a 1
7.14 Le transazioni
7.15 Il linguaggio SQL
7.16 CREATE TABLE, SELECT, DELETE, UPDATE e INSERT INTO
7.17 Microsoft Access: progettazione di tabelle, maschere, query e report
7.18 Microsoft Excel: progettazione di fogli di calcolo
7.19 Microsoft Word: la gestione avanzata dei testi elettronici

8. Algoritmi e strutture dati
8.1 Il ruolo degli algoritmi nelle strutture dati
8.2 Insertion sort
8.3 Divide et impera
8.4 Heap: definizione e costruzione
8.5 L'algoritmo heapsort
8.6 L'algoritmo quicksort
8.7 Strutture dati elementari
8.8 Stack
8.9 Code
8.10 Liste concatenate
8.11 Tavole hash
8.12 Alberi binari di ricerca
8.13 Alberi rosso-neri
8.14 Strutture dati complesse
8.15 B-alberi
8.16 Grafi

9. IL LINGUAGGIO DI PROGRAMMAZIONE C
9.1 Programmazione strutturata
9.2 Teorema di Böhm-Jacopini
9.3 Teorema di Böhm-Jacopini
9.4 I diagrammi di flusso
9.5 Integrated Development Environment (IDE)
9.6 Struttura di un programma C: Hello, world!
9.7 I tipi di dato
9.8 Dichiarazione di variabili
9.9 Definizione di costanti
9.10 Le librerie standard
9.11 I commenti all'interno del codice
9.12 Operatori di assegnamento
9.13 Operatori artimetici
9.14 Operatori logici
9.15 Operatori di confronto
9.16 Istruzione if-else
9.17 Blocchi di istruzioni
9.18 Istruzioni annidate
9.19 Variabili locali e variabili globali
9.20 Istruzione switch-case
9.21 Il ciclo for
9.22 Operatori di incremento e decremento
9.23 Il ciclo while
9.24 Il ciclo do-while
9.25 L’operatore virgola
9.26 Le istruzioni break, continue ed exit
9.27 Le variabili strutturate
9.28 Indici e lunghezza degli array
9.29 Gli array multidimensionali
9.30 Dichiarazioni e chiamate di funzioni
9.31 Passaggio di parametri
9.32 Le shell grafiche
9.33 Progettazione di un form
9.34 Gli oggetti button, textbox, label, checkbox, option button, listbox e combobox
9.35 Proprietà ed eventi associati agli oggetti


Testi di riferimento

Luca Mari, Giacomo Buonanno, Donatella Sciuto
Informatica e cultura dell'informazione (seconda edizione)
McGraw-Hill.

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
Introduzione agli algoritmi e strutture dati
McGraw-Hill.

Slides del docente

Alessandro Bellini, Andrea Guidi
Linguaggio C (quinta edizione)
McGraw-Hill.



Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione all’informaticaLuca Mari, Giacomo Buonanno, Donatella Sciuto - Informatica e cultura dell'informazione (seconda edizione) - McGraw-Hill. 
2Codifica e rappresentazione delle informazioniLuca Mari, Giacomo Buonanno, Donatella Sciuto - Informatica e cultura dell'informazione (seconda edizione) - McGraw-Hill. 
3Algebra di BooleSlides del docente. 
4Architettura dei calcolatoriLuca Mari, Giacomo Buonanno, Donatella Sciuto - Informatica e cultura dell'informazione (seconda edizione) - McGraw-Hill. 
5Sistema Operativo e applicativi softwareLuca Mari, Giacomo Buonanno, Donatella Sciuto - Informatica e cultura dell'informazione (seconda edizione) - McGraw-Hill. 
6Reti di calcolatori ed InternetLuca Mari, Giacomo Buonanno, Donatella Sciuto - Informatica e cultura dell'informazione (seconda edizione) - McGraw-Hill. 
7Introduzione alle basi di datiSlides del docente. 
8Algoritmi e strutture datiThomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - Introduzione agli algoritmi e strutture dati - McGraw-Hill. 
9Il linguaggio di programmazione CAlessandro Bellini, Andrea Guidi Linguaggio C (quinta edizione) McGraw-Hill. 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

Assegnazione di esercizi, su parti teoriche e pratiche, da svolgere a casa e consegnare al docente per email, al fine di valutare l'apprendimento sui temi svolti. La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.


Esempi di domande e/o esercizi frequenti

  1. Convertire in binario i numeri decimali 27 e 16 e sottrarli tra loro.
  2. Descrivere in dettaglio il processo di digitalizzazione di una grandezza analogica (ad esempio il suono) necessaria per poter trattare lati segnali in un elaboratore. Supportare quanto esposto con grafici.
  3. Descrivere il ciclo fetch-decode-execute ed entrare nel dettaglio di un esempio.
  4. In Excel, con quale simbolo è necessario iniziare una formula, all’interno di una cella?
    1. :
    2. =
    3. *
  5. In Word, quale delle seguenti procedure consente di creare più istanze di uno stesso documento, sostituendo in esso alcuni valori presi da un database?
    1. La revisione.
    2. La formattazione.
    3. La stampa unione.
  6. In Access, quale funzione svolge il pulsante Ʃ?
    1. Mostrare le funzioni di raggruppamento dati nella struttura Query.
    2. Attivare il correttore testi.
    3. Verificare gli errori di inserimento nelle tabelle.
  7. In Excel, quale funzione è svolta dal simbolo $?
    1. Rendere assoluta una coordinata.
    2. Trasformare un numero in una valuta estera.
    3. Non svolge alcuna funzione.