Sei sulla pagina 1di 52

21/02/2022

Lezioni registrate e disponibili sulla piattaforma moodle elearning.uniud.it, rimangono sempre

Fondamenti di informatica

1. Introduzione all’informatica
2. Rappresentazione dell’informazione
3. Architettura dell’elaboratore e sistemi operativi
4. Algoritmi, Programmazione
5. Informazione multimediale
6. Reti di calcolatori e WWW
7. Sicurezza digitale
8. Interfacce uomo-macchina
9. Basi di dati
10. I limiti della computazione

Modalità d’esame
Esame scritto: domande a risposta multipla (più risposte possono essere corrette oppure nessuna)
Penalità per chi “tira a caso”

Due prove intermedie  metà corso (indicativamente prima di Pasqua), e nella prima metà di maggio.
Sostituiscono l’esame finale. Puoi passarne uno e l’altro no, basta che la media sia più di 18
Frequentanti o no, vale lo stesso.

1- Introduzione

L’informatica è la scienza che studia l’elaborazione delle informazioni (scienza dei calcolatori o scienza
dell’informazioni?) Studia come elaborare delle idee, degli estratti del mondo reale. Non è una scienza
giovane, le prime tracce risalgono al 1890 con l’elaborazione di dati di Hollerith. Scopo  studiare il
concetto di informazione, sebbene nella sua definizione originale (inglese) ha a che fare con il calcolo. Il
calcolo elabora informazioni.

- La vera e propria informatica nasce nel 1936 (legata all’elaborazione di dati numerici), negli anni
70/80 ci fu una svolta dove viene scoperta l’interazione tra le persone(?)
- Primi computer 1943 (Uk,Usa, Ger)
- 1956, nobel per i transistor, scoperta di un dispositivo, particolarmente economico che ha consentito
ai computer, calcolatori di diventare più veloci ed efficaci.
- 1958, circuiti integrati, hardware, successo degli elaboratori elettronici, macchine da calcolo su
dispositivi piccoli con tecnologia economica
- 1969, ARPANET, mettere in comunicazione i dispositivi tecnologici
- 1973, nascita di internet
- 1976, Apple, ha reso possibili l’acquisto di calcolatori personali, non è più legato all’azienda, si
possono usare a casa. Oltre a portare il computer a casa, ha anche cambiato un po' la sua funziona,
prima erano semplici calcolatori, successivamente ha iniziato ad assumere rilevanza l’interfaccia,
perciò da un punto di vista grafico. BUGIA. Le immagini è possibile elaborarle solo se trasformate in
numeri. Immagine è una sequenza di numeri.
- 1981, pc di IBM
- 1984, Macintosh, interfaccia facile da utilizzare (quella del nostro cellulare)
- 1992, primo SMS
- 1993, WWW, World Wide Web
- 1996, Nokia 9000
- 1997, google.com (fermento sull’aspetto dell’intelligenza artificiale, e rendere l’uso di internet vasto
e ampio) e Deep Blue battle Kasparov (capacità di calcolo immense, riesce a battere il campione
mondiale di scacchi)
- 2004, Firefox
- 2006, Wii
- 2006, lancio di Twitter
- 2011, Watson vince Jeopardy (è un quiz basato su elaborazione i linguaggio naturale, elaborazione di
parole, concetti, la macchina deve comprendere la domanda e generare risposte (il milionario)

o L’informatica è la scienza degli algoritmi che descrivono e trasformano l’informazione: la loro teoria,
analisi, progetto, efficienza, realizzazione ed applicazione (ACM- Association for Computing
Machinery). Algoritmo trasforma le informazioni.

o Comunicazione, intesa come trasmissione dell’informazione. Aspetto tecnico della comunicazione.


Information and Communication Technology (ICT). Non è mai perfetta.

Cos’è l’informazione?
È qualche cosa che incrementa la conoscenza, che rende più ricca la conoscenza di qualche fenomeno. Notizia atta
a essere formalizzata in dati destinata a essere trattata da un sistema di trattamento automatico delle informazioni
(Zingarelli).
Qualcosa di non conosciuto.

Notizia: cognizione, conoscenza, estratti del mondo reale trasformati come ideali che possono essere applicate al
mondo digitale

Elaborazione delle informazioni

Perché elaborare informazioni?

Essenza dell’informatica: Rappresentare un’entità del mondo reale, fisiche o astratte e definire delle regole che
elaborano queste entità come nel mondo reale ma senza interagire realmente con questa entità o oggettiva.
Elaborare informazioni, estratte dal mondo fisico le info che ci servono per la soluzione di un problema

Ogni essere umano elabora (anche inconsciamente) grandi quantità di informazioni, ma ci sono almeno due motivi
per cui può trovarsi in difficoltà  Accade soprattutto quando l’elaborazione è molto complessa o quando
abbiamo bisogno di risposte rapide

Concetti principali

- Digitalizzazione delle informazioni, per poter elaborare le informazioni dobbiamo trasformarle in qualcosa
che il computer è in grado di elaborare.
- Hollerith, padre dell’informatica, a fine ‘800. Rappresentare le informazioni con le schede perforate,
all’interno dei quali ci sono specifiche informazioni. Le schede perforate venivano inserite nella
macchina, dove un circuito elettrico veniva acceso o spento dalla presenza o assenza dei buchi. Il
linguaggio delle parole umane veniva tradotto in perforazioni ("foro sì", "foro no"), che la macchina
leggeva elettricamente (acceso-spento).
Questo è un modo per elaborare le informazioni.

- Computer che memorizzano i programmi


- Transistor
- Circuiti integrati
- Computer personali
- Internet
- World Wide Web
- Sviluppo “a strati” di software

Hardware (cose dure) e Software (cose molli)

Software:
Programmi che adattano la macchina a scopi diversi. Rende adattabile la nostra macchina alla soluzione di diversi
problemi. Sono dispositivi adattabili e
È a un livello astratto. La parte logica. Costituita da due aspetti, sia gli algoritmi (le descrizioni delle elaborazioni)
ma anche i dati. Questi due concetti vivono nello stesso ambiente, vengono rappresentati dall’hardware. Sono
come “il cosa fare” e “come fare”.
Grazie al software i dispositivi possono adattarsi, cambiare.
Costituito da programmi (app).

Hardware:
Pezzi fisici del computer. Funzioni cablate (via cavo)
È implementato (reso concreto) con schede, chip, fili e transistor

24/02/2022

Algoritmo
È un modo di organizzare un’applicazione attraverso un procedimento che dica come i vari dati o interazioni
debbano essere elaborate. È un metodo preciso e sistematico per risolvere un problema.
Dato un problema, è necessario trovare un procedimento  composto da un numero finito di istruzioni da
eseguire per passi successivi, che porti a una soluzione del problema assegnato.

Esempio:
 Algoritmo per il calcolo delle 4 operazioni aritmetiche
 Algoritmo per risolvere equazioni di secondo grado
 Ricerca di un numero telefonico
 Scoprire se il mouse ha cliccato su un bottone

Astrazione
 Estrapolazione di un concetto base, un’idea. È fondamentale per l’informatica. Prosegue a livelli, da
livelli base a quelli più elevati.
Esempio:
la morale delle fiabe
 Solo alcuni aspetti sono importanti differenza con quelli inessenziali
 Serve a capire un concetto e trasferirlo ad altri casi

Generalizzazione
 Riconoscere gli aspetti comuni a più situazioni.
 Riassume un’idea, un concetto o un processo.
 Si applica a schemi ricorrente.
Esempio: verso di rotazione, vale per rubinetti, viti…

Sintonia operativa
Fenomeno per cui noi sappiamo applicare ciò che sappiamo sul funzionamento di un dispositivo per semplificarne
l’uso.

Calcolatore
 Macchina che esegue gli algoritmi (elaborando informazioni).
 Queste macchine sono in grado di memorizzare ed elaborare dati.
 L'elaborazione dei dati avviene eseguendo un algoritmo a cui sono forniti i dati.

Impieghi del calcolatore:


 elettrodomestici
 sistemi informativi aziendali
 sistemi informatici per la produzione individuale di: testi, grafica, archivi, statistiche
 automazione industriale
 comunicazioni di massa (editoria, cinema)
 ricerca scientifica (Arpanet-Internet)
 intrattenimento

Programma
 Un calcolatore per eseguire un algoritmo deve disporre di una descrizione dell’algoritmo in un
linguaggio che è in grado di interpretare (linguaggio di programmazione).
 Un programma per una macchina è una successione di istruzioni che tale macchina è in grado di
interpretare ed eseguire.
 Un programma è la traduzione di un algoritmo in un linguaggio di programmazione (sono una
concretizzazione degli algoritmi).
 Sono interpretabili dai calcolatori

Architettura di von Neumann


 Negli anni '40 è stato concepito da von Neumann (forse influenzato da Turing) un modello di una
macchina di "applicabilità generale" (general purpose), in grado di eseguire programmi.

 Per macchina di applicabilità generale intendiamo un dispositivo in grado di risolvere svariati problemi di
calcolo, purché opportunamente programmato, ossia dotato di programmi specifici, che risolvono i
problemi considerati

 Sia i dati che le istruzioni del programma da eseguire risiedono in memoria, da cui l'unità di elaborazione
preleva in sequenza le istruzioni da eseguire e i dati necessari.

 Caricando in memoria un nuovo programma lo si può eseguire, altrimenti bisogna costruire una nuova
macchina in grado di eseguirlo.

 Un calcolatore è una macchina a “programma memorizzato”, ovvero è in grado di svolgere un compito se


è dotato di un programma apposito

 Esistono dispositivi a “programma cablato” (si può solo fare quello per cui il dispositivo è predisposto).

Il primo calcolatore italiano


La calcolatrice Elettronica Pisana (CEP), costruita su suggerimento di Enrico Fermi negli anni ’50 del secolo
scorso.

Mini/Microcomputer
 I primi calcolatori sono realizzati con valvole termoioniche (1940-1955), con il miglioramento della
tecnologia elettronica, con transistor (1950-1965) e successivamente con circuiti integrati: il loro costo e
le loro dimensioni si riducono drasticamente, mentre le prestazioni aumentano.

 I primi calcolatori si trovano solo in alcuni laboratori di ricerca, poi si diffondono in grandi centri di
calcolo e, con l’introduzione dei mini/microcalcolatori (ad esempio, la serie PDP-VAZ della DIGITAL),
ogni ente/organizzazione ha un proprio calcolatore.

Personal Computer
 La nascita dei microprocessori negli anni Settanta del secolo scorso porta all’introduzione sul mercato dei
personal computer (PC).

 Anche il modo di usare i calcolatori cambia: con i grandi calcolatori (mainframe), il tipo di elaborazione
era di tipo "batch" (a lotti): l'utente (o chi per lui) lancia l'esecuzione del programma fornendogli i dati
necessari ed attende il risultato dell'esecuzione.

 Con i PC, l'uso dei programmi è principalmente interattivo, grazie anche ai sistemi operativi multi-
programmati, ai nuovi dispositivi di ingresso/uscita, alle interfacce grafiche.

 Apple II - Macintosh - PC IBM AT

Supercalcolatori
Nel 1982 venne sviluppato dalla compagnia CRAY il primo super computer multiprocessore: il CRAY X-MP. I
supercalcolatori sono utilizzati per applicazioni in cui è necessaria una grande potenza di calcolo (calcolo
scientifico, grafica, tridimensionale)

Legge di Moore
 Il numero di transistor per chip raddoppia ogni due anni
 Gordon Moore, Intel (1965)

Reti
 Lo sviluppo della tecnologia elettronica e delle telecomunicazioni ha portato a connettere più calcolatori
in una rete: si condividono informazioni, dispositivi (ad es. stampanti), servizi applicativi.
 Reti locali
 Reti geografiche
 Reti di reti (Internet)
 In molti ambienti le reti di calcolatori hanno rimpiazzato i grandi calcolatori (mainframe) e i
supercalcolatori.

Internet
 È la più grande rete di calcolatori del mondo. Nata tra gli anni '60 e '70 si è sempre più espansa
collegando insieme reti indipendenti.
 Collega insieme calcolatori (detti host) di istituzioni, università, aziende e privati.
 Fornisce le infrastrutture per usare e-mail, basi di dati, ipertesti e altre risorse per l’elaborazione di
informazioni.

World Wide Web


 Nato nel 1989 al CERN di Ginevra, il centro di ricerca internazionale di Fisica come strumento per la
condivisione di documenti scientifici, si è sviluppato rapidissimamente, come mezzo semplicissimo per la
diffusione e reperimento di informazioni di ogni genere (economico, scientifico, politico) su scala
mondiale.

 Questo sviluppo è stato possibile per la forte innovazione tecnologica dei PC e di Internet e allo sviluppo
di applicazioni con interfaccia grafica.

 Il web è un servizio disponibile su Internet per accedere alla “ragnatela mondiale ” di documenti detti
ipertesti (o pagine web, scritte in HTML). Si “naviga” sul web, ovvero si accede alle pagine web con un
browser (Firefox, Internet Explorer, Safari, Opera, Camino).

Un ipertesto è un documento contenente del testo ma anche contenuti multimediali, ha il concetto di


collegamento:
 immagini
 suoni
 filmati
 collegamenti ad altre pagine

Capitolo 5 - La rappresentazione dell’informazione


Salto tra l’informazione e la sua rappresentazione all’interno del calcolatore.

Operazione di digitalizzazione
È quella che consente di rappresentare l’informazione per mezzo di cifre (digits), per estensione o meglio ancora
simboli (non solo significato numerico).
Per digitalizzare l’informazione bisogna tradurre qualcosa dal mondo fisico in modo che sia elaborabile dal
calcolatore.

Quali simboli?
 Nel mondo logico ogni simbolo va bene, anche quelli del lettore CD
 Nel mondo fisico la forma di informazione più importante è la presenza/assenza di un fenomeno fisico
(carica elettrica, luce, etc…)
 Nel mondo logico: in concetti di vero o falso. La presenza può essere associata alla verità, l’assenza può
essere associato al falso.
Vantaggi della digitalizzazione
 Rappresentazione discreta, quello che noi distinguiamo è solo qualcosa che c’è o non c’è. Ci sono due
stati (presenza o assenza, non una via di mezzo). No ambiguità.
 Non ha importanza l’entità del fenomeno (quanta luce) ma solo la sua presenza o la su assenza. Misurare
il livello di specificità è più complesso.
 Non esiste una graduazione di valori

Esempio di rappresentazione
Presenza o assenza di vapore:
P: molto caldo.
A: non molto caldo

Rappresentazione PandA  (Presence and Absence)


(manca roba) vedi slide lezione dopo

Un sistema binario
 La rappresentazione con due soli simboli(presenza/assenza) è un sistema binario (a due valori)
 E di configurazioni di PandA
 L’unità base di PandA è il BIT  (binary digit)  Unità di base d’informazione

Sistema a due valori, dove ciascun valore corrisponde a una configurazione di presenza o assenza. L’operazione
che fa corrispondere l’assenza o la presenza di un fenomeno con uno dei due simboli scelti per la rappresentazione
binaria.

L’operazione di traduzione viene chiamata:


Codifica  è quella che ci consente di passare dalla presenza di un fenomeno fisico al simbolo che rappresenta
quella presenza o assenza.

PandA esempi:

Come rappresentare più di due cose?


Questo tipo di rappresentazione consente di essere combinata. Più elementi di informazione, più simboli, più stati
fisici.
Ciascun simbolo può essere combinato assieme in una sequenza di lunghezza arbitraria.

 Con un bit possiamo rappresentare solo ciò che può assumere due valori
 Una sequenza di bit rappresenta abbastanza simboli per codificare dati complessi
 Con sequenze di lunghezza n possiamo creare 2n simboli

Codifica del CD-ROM


Non sono più utilizzati. Sono dei dischi in cui l’informazione è codificata attraverso dei solchi. Il solco
rappresenta una presenza di qualche cosa che la luce…?
La luce viene riflessa con due velocità diverse dove c’è il solco, oppure no.
Tutto questo insieme di rappresentazioni ci serve per rappresentare delle informazioni attraverso questo sistema di
codifica dove misuriamo l’assenza o la presenza all’interno del nostro computer.

Il computer per lavorare ha bisogno di avere a disposizione due macro-entità:


 Il programma, il computer può essere flessibile, può essere adattato a diverse attività cambiando
programma e quindi le istruzioni che deve eseguire
 I dati
Entrambe le entità devono essere mantenute in una memoria (area di memorizzazione) che sia accessibile
direttamente dall’esecutore (da ciò che andrà ad eseguire effettivamente il programma sui dati presenti) in modo
da poter effettuare l’elaborazione.

La memoria del computer


 È organizzata con una sequenza di bit
 Ogni posizione registra la presenza o l’assenza di carica elettrica
 Ciascun bit è rappresentato da una carica elettrica, che se è presente vale convenzionalmente uno, se è
assente vale zero, che sia leggibile successivamente.

Rappresentazione dei dati in un calcolatore


 Le memorie (realizzate con qualsiasi tecnologia) di un calcolatore sono composte da unità di
memorizzazione in grado di ricordare due valori distinti, che rappresentiamo con le cifre binarie 0 e 1.
 Per poter memorizzare più di due valori dovremo usare più unità di memorizzazione: ad es., con due
unità si possono rappresentare quattro valori distinti, rappresentati dalle coppie 00, 01, 10, 11 dove la
prima cifra binaria rappresenta il valore della prima unità di memorizzazione, mentre la seconda cifra
rappresenta il valore della seconda unità.
I bit sono l’oggetto della memorizzazione sul nostro calcolatore. Sistema semplice.

Esadecimale
Cifre in base 16, rappresentano gruppetti da 4 bit.
A ciascuno cifra esadecimale può corrispondere un quartetto di 4 bit. 16 è un multiplo di 4 e con 4 cifre binarie
posso rappresentare 2^4=16 differenti sequenze.
Se prendo assieme 4 cifre binare, tutte le possibili combinazioni di 4 cifre binare le posso rappresentare con 16
simboli, ciascuno associato ad una singola sequenza.
Possono essere rappresentate dai 16 simboli delle sequenze di 4 bit.
Le cifre scelte nel sistema esadecimale sono: 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F.

La scelta di questo sistema convenzionale consente di rappresentare insiemi di sequenze di 4 bit attraverso un
unico simbolo. La codifica è una regola che ci dice come trasformare un’informazione in una informazione
equivalente, rappresentata in un altro sistema simbolico.
La codifica utilizzata è coerente con quello che è il significato numeri in decimale, almeno fino dove è possibile.
La rappresentazione di insiemi di sequenza viene riassunta da un simbolo.

Perché non utilizziamo la rappresentazione decimale?


Perché avremmo dei simboli che non saremmo in grado di rappresentare con le cifre decimali.
È un problema del fatto che il tipo di rappresentazione che utilizziamo è basato su una base 2, per cui i simboli che
rappresentiamo nella sequenza, sono corrispondenti a potenze di 2.
Le potenze di due sono:
- 2^0=1
- 2^1=2
- 2^2=4
- 2^3=8
- 2^4=16
Le operazioni di conversione sono importanti in questo contesto. Le più facili sono tra il sistema binario 
esadecimale. Meno agevole la traduzione tra binario  sistema decimale

La scelta di come codificare impone di rappresentare gruppi omogenei di 4 entità (bit). La conversione richiede di
suddividere il numero in gruppetti di 4 a partire da destra, dopodiché basta guardare la tabella di conversione. Si
aggiungono gli 0 quando non si riesce a “riempire” i blocchi da 4 cifre.

Perché usare le cifre esadecimali?


Per noi (programmatori) umani scrivere una sequenza di bit è:
 lungo
 noioso
 è facile commettere errori

La rappresentazione binaria si può utilizzare per:


- Per la codifica di numeri e di caratteri
- Anche per digitalizzare i suoni, i video, le immagini e altro (i segnali)

Digitalizzare il testo
Il testo è un insieme di simboli convenzionali. Per un elaboratore automatico è semplicemente la sequenza di
simboli senza il suo significato (senza una interpretazione che solitamente noi umani attribuiamo al testo), solo la
parte letterale.
Per decidere come digitalizzare il testo, quindi come trasformare il testo in qualcosa di elaborabile o
rappresentabile attraverso delle sequenze di bit, è necessario per prima cosa decidere qual è il nostro alfabeto, qual
è il nostro insieme di simboli, quali caratteri voglio decodificare.
Indipendentemente dai simboli scelti, c’è una regola generale nella codifica di simboli. Più simboli ho, più è lunga
la codifica in bit.

Quali caratteri codificare?


Più piccola è la lista dei simboli  meno bit necessari  minore il numero di bit  meno caratteri codificabili.
Codifica ASCII (American Standard Code for Information Interchange)
È la codifica alfabetica ancora più usata, sebbene in forma estesa.
L’idea di ASCII è di rappresentare i numeri con sequenze a 7 bit.
I caratteri da codificare
 95 caratteri (lingua inglese), per rappresentare 95 caratteri della lingua inglese, sono necessari 7 bit, con
sequenze di 7 cifre binarie rappresento fino a 128 stati.
 26 lettere minuscole e 26 maiuscole,
 10 cifre numeriche
 10 segni aritmetici
 20 segni di interpunzione (spazi inclusi)
 3 caratteri non stampabili (a capo, tabulazione, ...)

Ha alcuni limiti:
- 7 non è un multiplo di 8, ASCII usa la rappresentazione a 7 bit ma ne utilizza 8 (tutti i caratteri
rappresentati in codifica ASCII avranno uno 0 come ottavo bit, nonostante tutti gli altri vengano
utilizzati) per allineare, per avere qualche cosa che sia multiplo di una potenza di 2. Ci bastano 7 bit, ma
in realtà ne usiamo uno in più che non ci servirebbe, solo per allineare le cose.
- Non basta per rappresentare i caratteri dei linguaggi diversi dall’inglese. La codifica ASCII è focalizzata
sulla lingua inglese. Non è possibile rappresentare caratteri accentati, segni diacritici di altre lingue
occidentali, come: latino, lingue nordeuropee, lingue slave, alfabeto greco, ebraico, cirillico.

Versione aggiornata

Extended ASCII
Alcuni limiti sono stati risolti fino da subito (anni ’80), con una versione ASCII estesa, dove tuti gli 8 bit vengono
utilizzati. Con 8 bit, il numero di simboli rappresentabili sono il doppio, perciò 256. Ogni volta che viene aggiunto
un bit, raddoppiamo il numero di simboli rappresentabili.
Tutti i caratteri che hanno lo 0 nella MSD (Most Significant Digit,cifra più a sinistra della nostra
rappresentazione). Con uno 0 davanti sono caratteri ASCII originali, con un 1 davanti sono i caratteri estesi.

Vantaggi:
- Colma i divari verso i segni diacritici degli alfabeti occidentali e aggiunge altri simboli utili, ma,
nonostante ciò, non risolve il problema di rappresentare altri alfabeti (problema affrontato negli anni ’90).

Codifica UNICODE
Negli anni 90 sono state definite delle codifiche estese ulteriormente rispetto alla codifica ASCII.
Utilizza 32 bit (non più 7), siamo in grado di rappresentare 2^32 differenti simboli, fa 65.000 circa. È in grado,
perciò, di rappresentare i caratteri di alfabeti non europei (alfabeto arabo, asiatico, ebraico, cirillico).

Codifiche ridondanti
Servono per rappresentare l’informazione in modo che possa essere trasmessa e ricevuta in modo non ambiguo,
anche se ci sono degli errori o delle interferenze nella comunicazione nel mezzo.
Usa più simboli di quelli necessari per rappresentare il nostro sistema simbolico (il nostro alfabeto in questo caso).
 È il codice per le telecomunicazioni.
 L’idea è quella di rendere le lettere intelligibili anche in presenza di rumore (es. dover dettare il cognome
A come Ancona, S come Savona), questo funzionamento fa si che anche in presenza di interferenze nella
comunicazione, il ricevente possa capire di che lettera si tratta. Esempio: alfabeto NATO.
Per un simbolo uso una sequenza di simboli dettati (molto più lunga del simbolo stesso), questa sequenza
più lunga è in un certo senso ridondante. Se la comunicazione fosse precisa, non ci sarebbe la necessità di
usare tutti questi simboli, se l’interlocutore capisse direttamente “D”, non sarebbe necessario usare più
simboli per rappresentare quel dato.
 Questo tipo di codifica è necessariamente inefficiente, questa inefficienza ci serve perché vogliamo essere
sicuro che un simbolo, da parte del ricevente venga interpretato in modo corretto e non ambiguo.
UTF-8
Unicode Transformation Format, è una codifica di tipi adattivo
 La codifica non richiede necessariamente 32 bit, ma si limita al numero di bit necessari per la codifica.
Esempio: se devo codificare l’alfabeto latino uso 8 bit, greco 16 bit, arabo 32.
A seconda di quanti simboli sto usando nel mio testo si adatta
 Codifica di caratteri a lunghezza variabile

Differenza tra BIT e BYTE


BIT  sono l’unità di base d’informazione, vengono aggregati in sequenze di 8 bit.
BYTE  aggregazione di 8, quindi 8 bit rappresentano 1 BYTE.

Dato vs informazione

Dati:
Quello che rappresentiamo in memoria sono dati, ovvero dei valori  questi non hanno significato ulteriore
rispetto a quello che rappresentano, sono una componente sintattica della nostra informazione. Il testo scritto in
un libro come sequenza di lettere è la componente sintattica del libro, per dare significato a quella componente
sintattica, siamo noi che lo interpretiamo.
Esempio:
La sequenza di simboli A P E. Noi attribuiamo il significato di insetto. Sappiamo che quella sequenza di simboli
indica il nome dell’insetto.

*Il calcolatore lavora sul livello di astrazione basso, su quello dei valori, che non distingue se qualche cosa è
un’immagine, un testo o un numero*

Informazione:
Ha un significato.
Esempio:
21 è un dato, una sequenza di due cifre. Così com’è non ha un significato specifico tranne quello numerico.
21, a seguito di interpretazione diventa un’informazione. Supponendo che questa sia una temperatura, è una
temperatura primaverile se in °Celsius, se fosse in °Fahrenheit sarebbe una temperatura sotto lo 0.
Questo dimostra come lo stesso valore numerico, in due contesti simili (dove viene rappresentata la temperatura),
misurati però in scale diverse, ci da due informazioni completamente diverse.
In un altro contesto ancora, supponendo sia un voto, questo risulterebbero essere sufficiente ma non troppo alto, se
invece 21 lo interpretiamo come il piano di un grattacielo, questo sarebbe un piano intermedio di un grattacielo.
21 potrebbero essere gli anni dove in certi paesi designano la maggior età.

Quindi, lo stesso dato, per poter diventare informazione, ha bisogno di un contesto in cui noi interpretiamo il dato.

07/03/2022
Capitolo 6 – Rappresentare l’informazione multimediale
È possibile andare a tradurre e codificare anche altri tipi di informazione, come l’informazione multimediale.
Multimedia si intende un qualunque tipo di contenuto che non sia limitato a un solo medium, quindi in particolare
qualche cosa che integri ad esempio immagini e suono, ma anche al singolo media.
Immagini  sono costituite da elementi d’ immagine. C’è una parte di discretizzazione che viene fatta nel
rappresentare l’immagine attraverso una rappresentazione digitale,
Audio-suono 

Digitalizzare i colori
 Rappresentazione dei colori RGB (Red, Green, Blue)
 Un colore è specificato da tre componenti: rosso, verde e blu. Riusciamo a rappresentare qualsiasi
nuance di colore attraverso queste tre componenti.
 L’intensità di ogni colore è rappresentata da una quantità che va da 0 a 255.

Ogni intensità RGB è rappresentata da un byte (insieme di 8 cifre binarie).


L’intensità più bassa è 0000 0000
La più alta è 1111 1111

Sintesi dei colori


 Rappresentazione di tipo additivo  possiamo sommare i colori per ottenerne un altro.
Sommando verde, rosso e blu si ottiene il BIANCO.
Blu+rosso = magenta
Verde+rosso = giallo
Si utilizza in tutti i display

 Rappresentazione sottrattiva  viene sottratto uno tra i colori primari.


Utilizzata nella stampa, utilizza solo 4 colori: nero, ciano, magenta, giallo.

Nel sistema RGB, un’immagine viene scomposta in un insieme di punti. Ciascun punto ha la connotazione di
essere un quadrato  PIXEL (a seconda di quanto rosso, blu, verde emette, è in grado di emettere una
sfumatura).

Colori nero e bianco


 Il nero corrisponde all’assenza di colore
In tutti 3 i canali (verde, rosso, blu) l’intensità è al minimo, cioè spento, perciò il pixel è nero.(0000 0000)

 Il bianco corrisponde la massima intensità di tutti i componenti, rosso, verde, blu hanno l’intensità è al
massimo e il pixel da come risultato il bianco. (1111 1111)

Grigi
Un grigio corrisponde alla stessa intensità di tutti i componenti:

 Ogni byte corrisponde (152)10


 I colori con componenti RGB uguali sono il nero, il bianco e i grigi

Modificare un colore
Aumentare l’intensità con un’addizione binaria.

Esempio: se vogliamo schiarire un’immagina, basta incrementare i valori per avvicinarsi al bianco.
Perciò sommando delle quantità positive a ciascun canale, spostiamo il colore della nostra immagine. Per farlo
utilizziamo un’operazione di addizione

Addizione binaria
È simile all’addizione decimale  da destra a sinistra sommando le cifre nelle colonne
La somma di una colonna può:
- essere di una sola cifra: 1+0=1
- causare un riporto 1+1=10, 0 con riporto di 1
Overflow
I computer utilizzano sequenze di bit di dimensioni prefissate. Quando andiamo oltre i limiti di rappresentazione.
Errori di overflow: il computer segnala quando il calcolo in esecuzione genera un overflow error

EMETTERE UN SUONO

Un oggetto produce suono vibrando all’interno di un mezzo come l’aria. Onde di pressione sono emanate
dall’oggetto. Le vibrazioni si trasmettono nell’aria e hanno una componente che dipende dal tempo. Il suono non è
istantaneo, è qualcosa che si sviluppa nel tempo, a differenza dell’immagine che invece è statica. Il suono non può
essere misurato istantaneamente, ma deve essere raccolto in un intervallo di tempo.
Il suono comporta che ci sia una sorta di “tira e molla” della pressione dell’aria (è come se l’onda venisse tirata).
Le onde sonore sono rappresentate dalla pressione del suono.
La pressione è legata al volume del suono, suoni più forti fanno male perché tirano molto la nostra membrana
(timpano). Suoni più deboli, muovono la membrana del nostro timpano modo più leggero.
La frequenza ha a che fare con il tempo.

L’onda sonora ha 2 grandezze che la caratterizzano: tono(frequenza dell’onda) e volume(ampiezza dell’onda).


Ampiezza, è simile all’intensità dell’immagine
Frequenza (?)

Da analogico a digitale
Il suono è stato rappresentato per anni su supporti: i vinili. Il suono è rappresentato per mezzo di solchi. Analogica
perché non è rappresentato da numeri (come nel digitale)

Per digitalizzare informazioni continue, bisogna convertirle in bit

Esprimere con un numero l’ampiezza


Quando eseguire le misure?
Non possiamo registrare ogni punto dell’onda

Campionamento
 Consiste nel misurare l’ampiezza dell’onda non in ogni istante (perché non è possibile), ma a intervalli
regolari di tempo.
 Si divide il tempo in intervalli regolari, allo scadere dell’intervallo si misura la pressione del suono.
 Più sono piccoli gli intervalli, più la misura è precisa.
 L’onda non sarà mai come l’originale, proprio a causa di questa discretizzazione.
La frequenza di campionamento
 Frequenza di campionamento legata a quella dell’onda.
 Una frequenza troppo bassa (lenta) potrebbe perdere dettagli che “si infilano” tra un campione e l’altro
 Esistono dei limiti fisici in cui non ha senso andare.
Più fasce utilizziamo (quelle rosse) più si è precisi.

Regola di Nyquist
Se vogliamo essere accurati nella rappresentazione di un’onda sonora, la frequenza di campionamento deve
essere almeno il doppio di quella dell’onda da registrare.
Frequenza di campionamento:
- Almeno il doppio di quella dell’onda da registrare
- L’uomo può percepire suoni fino a 20.000Hz un campionamento di 40.000Hz è sufficiente
- La frequenza CD standard è 44.100Hz

Quanti bit per campione?


Quanto dev’essere accurato un campione?
I bit devono rappresentare i valori sia positivi che negativi: più bit ci sono, più è accurato il campione.

Campione CD
La rappresentazione digitale dei CD audio utilizza 16 bit, registra 65.536 livelli, la metà per i valori positivi e
altrettanti per quelli negativi.

Conversioni
Nel caso dell’audio di una registrazione…
L’onda sonora viene catturata da un opportuno sistema di traduzione (es. microfono  trasforma una grandezza
fisica in un’altra, ha una funzione simile a quella del nostro timpano, trasforma l’energia meccanica in energia
elettrica)
Rappresentazione analogica
Il segnale elettrico è analogico, trasforma l’informazione in digitale
Trasforma l’onda sonora

Compressione
È qualche cosa che ci aiuta nella rappresentazione di dati. È un’operazione di codifica, usiamo un altro sistema di
simboli per rappresentare il sistema di simboli originale. È trasformare qualcosa in qualche cosa che richieder
meno spazio di memorizzazione.
Di solito la compressione si usa per 2 cose: la memorizzazione e per la comunicazione (per trasmettere
l’immagine da un computer ad un altro).

Cambiare la rappresentazione usare un numero inferiore di bit


 Lossless: senza perdita di dati l’originale può essere ricostruito perfettamente. Non sempre è possibile.
Quanti meno bit utilizzo x rappresentar il mio dato multimediale (immagine o audio).

Compressione run-lenght
Si applica alle immagini.
Invece di descrivere un’immagini per mezzo di tutta la sequenza di valori dei pixel (1°immagine), la descrivo in
modo implicito (2°immagine). Quante volte di seguito un colore appare nell’immagine (quanto è lunga la
frequenza). La compressione run-lenght si basa sulla rappresentazione indiretta dell’immagine, è un modo
indiretto per definire un’immagine ed è anche questo un sistema di codifica.
Se l’andamento dell’immagine è orizzontale questa codifica funziona bene. Per un’ immagine rappresentata
verticalmente, non si ottiene lo stesso livello di compressione.


Rappresentazione standard  Compressione run-lenght

*Per descrivere la bandiera italiana cambia, perché le linee sono rappresentate in verticale. La regola è complessa.

 La compressione Lossy è quella che perde parte dell’informazione. Lossy: con perdita di dati l’originale
non può essere ricostruito perfettamente. La ricostruzione non è perfetta. Perdiamo dei dati
(dell’informazione.

Tecnica di conversione JPEG


Utilizzata per le immagini fisse
Fisiologia degli occhi:
- Non sono sensibili alle piccole variazioni di colore
- Sono sensibili alle piccole variazioni di luminosità
Descrizione meno accurata del colore
Compressione 20:1 senza variazioni percepibili

Compressione MPEG
Il video è rappresentato da un insieme di immagini che vengono campionate nel tempo. L’idea è quella di
utilizzare stessa idea di JPEG, ma applicata ai filmati. La compressione JPEG è applicata a “ogni frame”.
- In genere due immagini consecutive sono molto simili.
- Memorizza solo “la differenza” tra due fotogrammi consecutivi
- Un fotogramma completo (JPEG) ogni 5.

Principio del mezzo universale indifferente


 Le rappresentazioni sono agnostiche all’oggetto rappresentato, sono delle convenzioni che noi diamo per
trasformare un tipo di informazione in una sequenza di bit  i bit non hanno un significato intrinseco,
sono solamente dati.
 I bit possono rappresentare tutto, qualunque entità del mondo fisico, attraverso un calcolatore
 Ogni sorta di informazione discreta
 Una volta rappresentato può essere manipolato

Problemi del multimedia


 Latenza di trasmissione
 Tempo di trasmissione
 Limite minimo: velocità della luce
 Ampiezza di banda
 Quantità di dati per unità di tempo

09/03/2022
Capitolo 7- Come funzionano i computer

Possiamo distinguere i computer come:


 Dei sistemi costituti da più elementi. Dove distinguiamo alcune componenti rispetto ad altri, composti da
un’unità centrale (si occupa del calcolo vero e proprio, è l’essenza del computer), ad essa vengono
aggiunte altre entità periferiche.
 Monolitici, anche qui ci sono più elementi ma sono inglobati tutti assieme (lo schermo è insieme alla
tastiera, e agli altoparlanti). Tutti gli elementi sono integrati.

Schermo
Mostra l’interfaccio del nostro computer
Case

Bisogna creare un collegamento tra le entità periferiche e l’unità centrale. Nel sistema monolitico ...

Collegamenti (porte)
I collegamenti del calcolatore avvengono tramite il concetto di porta (presenti anche in quella monolitica), sono
delle interfacce (modi di comunicare) dall’unità centrale di elaborazione, verso il mondo esterno.
Sono collegamenti elettrici. Il comunicatore può comunicare con il mondo esterno.
Il mondo esterno è collegato al mondo interno attraverso le porte.

USB, WI-FI, sono dei collegamenti che stanno prendendo posto rispetto a quelli fisici.

Interfaccia  si intende insieme di strumenti con il quali vi è un’interazione tra il nostro computer e qualcos’altro.

Scheda madre
Circuito integrato complesso che ha diverse connessioni tra le diverse componenti funzionali del nostro
calcolatore. In particolare, i due aspetti fondamentali che collega la scheda madre sono:
 CIP (processore, elabora tutte le informazioni sul nostro computer. È il vero cuore
 SLOT MEMORIA, spazio nei circuiti che consentono di memorizzare i dati che devono essere elaborati
È la sorgente della comunicazione verso l’esterno. Grazie la scheda madre, ci si può connettere attraverso le porte
con i dispositivi esterni. È l’isola su cui si effettua la comunicazione.

Schede di espansione  espandono le funzionalità della scheda madre, ha una componente di calcolo. Manipola i
bit.

La memoria del nostro calcolatore è contenuta all’interno della scheda madre. La memoria è di tipo volatile
(indica non permanente, persistente), ha bisogno di corrente elettrica per funzionare. Questo di memoria è super
veloce. Poiché la memoria non è persistente, nella scheda madre ci sono degli ulteriori connettori verso altri tipi di
memoria.

La parte fondante in qualunque computer

CPU (Central Processing Unit)


Introdotti intorno al 1980. È il processore
 Esegue calcoli, programmi
 Le sue capacità sono di miliardi di operazioni al secondo.
 È costituita da un singolo chip. All’interno di un chip non c’è solo un CPU, ma ci sono più core(unità di
calcolo che sono capaci di svolgere miliardi di operazioni, a seconda del numero di core).
 Multicore

Si occupa di cosa fare, su che cosa viene mantenuto nella memoria

MEMORIA
La memoria è quell’aerea che contiene sia i programmi sia i dati necessari per l’elaborazione (modello di von
Neuman). Attraverso quei programmi adatta la funziona da svolgere.
La memoria prende il nome di RAM  Random Access Memory (memoria ad accesso casuale = diretto), è
volatile, ciò significa che ha bisogno di corrente elettrica per funzionare. Queste memorie lavorano alla stessa
velocità del processore.Il suo contenuto si perde in mancanza di corrente elettrica.

Contrapposta alla memoria sequenziale (non ne abbiamo più accesso, sono scomparsi) era tipico delle
videocassette.

Accesso alla memoria causale (o diretta)


Qualsiasi elemento può essere acceduto direttamente (esempio: libro in una libreria)
Acceso alla memoria sequenziale
Per accedere ad un elemento occorre scorrere tutti quelli memorizzati prima

Disco rigido (hard disk)


 Periferica di memorizzazione
 Memorizzazione permanente
 Memorizzazione di massa, inteso come grande quantità, rispetto alla memoria centrale è mille volte più
grande se non diecimila volte  I dati per essere elaborati devono passare prima attraverso la memoria
centrale prima di essere memorizzato in un sistema di memorizzazione di massa (disco rigido).
 Altissima capacità rispetto alla RAM
 Memorizza programmi e dati quando non in uso

Memorie di massa
 Chiavi USB, SSD (dischi a stato solido) e hard disk
 Funzioni inputo e output
 Archivio permanente di dati
 Differenza nella vita “attesa”
 La memoria a stato solido si deteriora

Altre periferiche
 Tastiera
 Mouse
 Stampante (periferica di uscita  output)
 Schermo (periferiche di uscita  output)
 Casse audio microfono
 Telecamera

Il resto sono delle periferiche di ingresso(input)


Salvare i dati da RAM a HD
La RAM è volatile, perde i dati quando si spegne

Processo di booting
Fa partire un programma iniziale che è in grado di far funzionare il computer. Il boot è ciò che fa partire il
processo.
 Booting: accensione del computer
 Rebooting: ri-accensione rapida del computer (riavvio)
 Istruzioni memorizzate in un microchip
 Chiamato “boot ROM”
 Deriva da “bootstrapping”
Ciclo macchina
È l’essenza del tipo di elaborazione che può fare un processore. Il ciclo macchina è il ciclo che compie la CPU
quando deve svolgere delle operazioni. Consiste di una serie di operazioni.

Caratteristiche della RAM


La RAM contiene il programma in esecuzioni e i dati su cui il programma stesso opera.
 Accesso Causale o diretto
 Il computer può accedere direttamente a qualsiasi locazione di memoria
 Ordine di grandezza: gigabyte (GB)
 Avere molta memoria è preferibile
 Evita problemi di spazio per i programmi e i dati

Locazione discrete
 Ogni locazione è di 1 byte
Indirizzi
 Univoco per ogni locazione (intero a partire da 0, normalmente espresso come esadecimale)
Valori
 Le locazioni di memoria memorizzano valori
Capacità finita
 Sia nel numero di locazioni sia nella capacità di ogni locazione.

Locazione da un byte

Ogni locazione contiene:


 Un carattere ASCII
 un numero di (0,255)
Parola di memoria
 blocchi di 8 byte (64bit) usati come singola unità

CPU
Ha due responsabilità specifiche:
 ALU, è la parte che fa effettivamente i calcoli, non solo aritmetico
 Controllo, controlla cosa gli viene chiesto di fare e si preoccupa di realizzare ciò che richiesto

CPU, implementa il ciclo macchina

14/03/2022

17/03/2022

Sistemi operativi
 Offrono le operazioni base per l’uso del computer
 Non supportate direttamente dall’hardware
I tre più usati per personal computer:
 Microsoft Windows
 Apple MAC OS X
 Linux (Unix)

GUI
È un tipo di interfaccia utente che consente l'interazione uomo-macchina in modo visuale utilizzando
rappresentazioni grafiche.
Sono “impacchettati” e forniti con l’OS.
 bordi delle finestre
 le barre di scorrimento
 i pulsanti
 i puntatori, ecc.

Caratteristiche dei Sistemi Oparativi

Mutitasking
 Può eseguire più processi per volta
 Gestione dei programmi in esecuzione
Multiuser
 Più utenti in “contemporanea”

Il sistema operativo ha una sua suddivisone, a seconda di quello che è il


suo nucleo operativo.
Kernel  è la parte che fornisce le funzionalità di base. Esempio:
consistono di caricare un programma in memoria.
Shell  è quello che noi vediamo nel sistema operativo. Coordina anche la
GUI. È spesso confuso con il sistema operativo.

Shell
 Interfaccia con l’utente
 Contiene anche la GUI
 Spesso viene confuso con il sistema operativo

Kernel è il nucleo del sistema operativo che controlla tutte le attività del sistema mentre la Shell è l'interfaccia che
consente agli utenti di comunicare con il Kernel.

Kernel

 Parte interna del sistema operativo


 Driver  si occupa di parlare con tutte le periferiche. Fornisce delle funzionalità che vanno a interagire
direttamente con l’hardware
 File manager
 Memory manager

Memory manager
 Gestisce la RAM e i processi in esecuzione
 Paginazione  questa tecnica consente di elaborare dati che sono più grandi rispetto alla capacità di
memoria della RAM. Non tutta la quantità di memoria è necessaria, perciò suddivide in pagine, in
blocchi e gestisce cosa ci deve stare in memoria in quel momento o ciò che può stare fuori e caricarli
quando serve.
 Memoria virtuale.

File manager
È un modo di organizzare i contenuti nella memoria di massa (hard disk), dove anche in quella memoria, i dati
sono organizzati con degli indirizzi e sotto forma di byte.
Virtualizza (far vedere in modo diverso, più organizzato) i file e ci permette di vederli. Fornisce anche altri
servizi: servizio di permessi di accesso.
 Gestisce i file nella memoria di massa
 Permessi di accesso
 Allocazione
 Icone

Gerarchia dei file

Questa rappresentazione viene chiamata albero. Ciascun contenuto è


caratterizzato da un percorso.
 Una directory, o cartella, è una collezione di file e altre
directory.
 Gerarchia delle directory
 Più in basso nella gerarchia significa nelle sottodirectory
 Più in alto nella gerarchia significa nelle directory che
racchiudono le altre

Il file system associa delle icone ai file, ma questa sono arbitrarie.


Estensioni (mp3, jpeg, ppt)

Capitolo 2- Il funzionamento delle reti

Cos’è la comunicazione?
Nella comunicazione è necessario che ci siano almeno due attori, un mittente e un ricevente, altrimenti la
comunicazione non c’è.
Deve avvenire tramite un canale di comunicazione, questo va a collegare le due entità che comunicano, le quali
possono essere distanti.

Comunicazione nel tempo


Sincrona  mittente e destinatario attivi contemporaneamente
Asincrona  invio e ricezione in momenti diversi (messaggi WhatsApp)

Quanti comunicano
 Broadcast (o multicast) una singola fonte e tutti gli ascoltatori. È più generale (esempio: radio)
 Multicast  una singola fonte e molti ascoltatori (ma selezionati)
 Point-to-point  una singola fonte e un singolo ascoltatore (telefonata tra due entità)

L’area di comunicazione che va a connettere tutti i dispositivi elettronici del mondo, prende il nome di
INTERNET (è una rete)  è qualche cosa che ha una struttura reticolare in cui ci sono delle connessioni tra dei
dispositivi, connessioni che avvengono tramite router o gateway  unità di comunicazione.

Comunicazione via internet


 Point-to-point asincrona  e-mail, invece della posta tradizionale (instagram, messenger)
 Point-to-point sincrona (simulata)  VoIP (Voice Other Internet Protocol), invece del telefono (teams,
skype)
 Multicasting  mailing list invece delle riviste specializzate
 Broadcasting  le pagine web possono sostituire radio e tv

Client-server (paradigma di comunicazione)


Compito: direzionare. Formato da atti comunicativi in cui c’è una richiesta, un’elaborazione di questa richiesta e
la risposta. Indica un'architettura di rete nella quale genericamente un computer client o terminale si connette ad
un server per la fruizione di un certo servizio
La comunicazione ha uno scopo in questo caso, quello di richiedere un servizio o un’elaborazione.
 Server  è il computer che memorizza la pagina web
 Client  è il computer che accede alla pagina web

Client server nel Web


Quando cliccate su un link (oppure scrivete un indirizzo nella barra degli indirizzi), il client invia la richiesta al
server e il server reagisce inviando la risposta.
Un server può gestire più client “contemporaneamente”.
(Instagram, Twitter sono delle applicazioni camuffate, in realtà sono delle pagine web).

Molte relazioni brevi


Molte richieste “contemporanee” di servizi anche migliaia al secondo, non conserva memoria delle connessioni 
stateless. Non c’è una storia delle interazioni. Non c’è stato di una connessione. Formate da richiesta e risposta.

L’illusione della connessione continua


 Cookie  memorizzati dal client. Sono necessari. Sono un modo per ricordare al server chi siamo. Un
server non ha memoria, ad una richiesta successiva è come se ci vedesse per la prima volta. Meccanismo
dei cookie serve per dire che questa è la risposta, ma la prossima volta ricordati di dirimi che tu sei
“A”. ??
Nei cookie c’è un’informazione di stato. Meccanismo nato per creare un’illusione di continuità
 Parametri URL  aggiunte all’URL durante la richiesta (lascia perdere)

Indirizzo IP (Internet Protocol)


È un indirizzo numerico, distinto in 4 valori interi, costituito da un byte ciascuno. Ciascun computer può avere più
indirizzi.
L’ indirizzo IP è un codice numerico usato da tutti i dispositivi (computer, server web, stampanti, modem) per
navigare in Internet e per comunicare in una rete locale. Un indirizzo IP costituisce quindi la base per una
trasmissione corretta delle informazioni dal mittente al ricevente. Mi servono per indicare a chi voglio
comunicare. Un modo univoco per identificare un determinato servizio. Identificare una macchina su una rete
internet, è un modo di dare un nome univoco
Consentono di indentificare ciascuna macchina sulla rete.

 Ogni computer connesso a Internet ha un indirizzo numerico univoco


 n.n.n.n  dove 0≤ n ≤255 (cioè un byte). Un indirizzo IP richiede 32 bit.
 Organizzati secondo una gerarchia

Nomi di dominio (servizio di traduzione)


 Nomi simbolici facilmente comprensibili agli esseri umani
 Organizzati secondo una gerarchia
 Servizio DNS

Domain Name System (DNS)


Scopo: se non sai, ti dico a chi chiedere.
 Crea la corrispondenza fra il nome e il servizio
 Nomi comprensibili agli esseri umani
 Indirizzi IP

Su internet ogni “host” ha un server DNS di riferimento.


 Tabella aggiornata nomi-indirizzi IP. Esiste una gerarchia di tabelle che gestiscono questa
corrispondenza.
DNS: Questo servizio viene erogato attraverso il protocollo client server.
I domini più importanti servono perché mantengono tutta la conoscenza sulle corrispondenze
DNS prova a chiedere chi è il responsabile del dominio “.org”, dopodiché può rispondere subito se lo sa
già, se non lo sa, ti dice a chi chiedere.
Informazione gererchizzata.

Protocollo TCP (Transmission Control Protocol) /IP (Internet Protocol)


Il modo in cui la trasmissione avviene è gestito dal protocollo TCP/IP  ci da l’illusione di creare un flusso di dati
tra due entità connesse nella comunicazione. L’informazione che voglio spedire, la trasformo.
Suddividere i documenti da spedire in frammenti (pacchetti) che sono di piccola dimensione.

Pacchetti IP
I documenti sono divisi in una sequenza di piccole unità di dimensione prefissata.
Ogni pacchetto contiene:
 Lo spazio per contenere un’unità di documento
 L’indirizzo IP del destinatario
 Un numero progressivo
 L’indirizzo IP del mittente

Invio dei pacchetti


I pacchetti sono inviati con Internet:
 Uno alla volta
 Con diversi itinerari tra i disponibili

Ogni pacchetto può seguire un cammino diverso


 Gestisce interruzioni di servizio e congestioni

Operazione di Route (di instradamento in italiano)

Tecnologia di internet
 Internet è fatta di sistemi elettrici, elettronici e ottici
 Utilizza linee telefoniche, dedicate, radio, ecc.
 Tecnologia indipendente dal protocollo
 la trasmissione di un documento può utilizzare diverse tecnologie

Internet
 Non è una rete, è la rete delle reti. Connette reti diverse.
 Costituita da una collezione di reti geografiche.
 Progettate per inviare informazioni tra località distanti

WAN - Wide Area Network


È la rete per eccellenza. Ci sono più entità coinvolte
 Rete ad estensione geografica (estesa a delle aree più vaste. Esempio: area regionale, nazionale)
 Può essere l’unione di reti locali, che formano delle sotto-reti.

LAN – Local Area Network


 È una rete ad estensione locale
 Computer abbastanza vicino da essere collegati fisicamente con un cavo
 Ethernet è la tecnologia più diffusa di queste reti
 Senza fili si utilizza Wi-Fi

Ethernet
È la tecnologia per le reti locali. Il modo di trasmettere è dato da un cavo fisico.
 Canale: cavo fisico
 Ogni computer è collegato al canale
 Può inviare un segnale rilevato da tutti i computer connessi al canale
 Il funzionamento è decentralizzato
 Ogni computer ascolta il canale e può trasmettere quando lo sente libero
Ha una trasmissione broadcast, proprio per il fatto che tutti i computer possono ascoltare. Non c’è sicurezza nella
comunicazione.

Reti senza fili


C’è un dispositivo che è collegato ad internet
 Un device (chiamato hub o base-station), fisicamente collegato a internet
L’hub trasmette broadcast in radiofrequenza:
 Riceve dai device collegati
 Agisce da gateway con la rete fissa
Anche i device mobili trasmettono e ricevono segnali

Collegamento con Provider


Agisce da tramite
 Forniscono collegamento a Internet
 L’utente collega il computer alla rete
 Computer di casa  comunica con il computer del provider

 Computer del provider


 Connesso a Internet, agisce da tramite per il cliente

World Wide Web


Non è internet, è il servizio più utilizzato di Internet. È un servizio fornito da internet. Caratterizzato da un
modello di interazione e da una serie di convenzioni, di protocolli che sono di più alto livello di una sorta di
divisione di livelli di astrazione  sono il modo in cui ……? . Il www. è alla base delle app moderne.
Servizio basato su due concetti particolari:
- Modo standard per trasferire i dati  http  indica che stiamo utilizzando un servizio web
- E un modo standard per linguaggio (?)  html

Web server:
 Programma che invia I file richiesti dai browser (modo per chiedere i servizi al www.), il server fornisce i
contenuti. La richiesta è mediata dal browser
 Eseguito su computer in Internet
 I web server e i loro file costituiscono il World Wide Web
 È un sottoinsieme di Internet

24/03/2022

URL
È il modo per identificare i servizi.
 Universal Resource Locator
 Protocollo: dice al computer o al browser come gestire il file.
 Nome del server: l’indirizzo del server (DNS)
 Percorso (o path) del file (opzionale)

Attraverso i percorsi si possono visualizzare non solo file ma anche servizi (servizio mail)

Descrivere una pagina web


 Server memorizza il file sorgente
- Descrive la pagina da visualizzare
 Il browser crea e visualizza l’immagine
- Partendo dal file che contiene la descrizione (file sorgente)
- Può adattare l’immagine alle caratteristiche del monitor, del dispositivo, della connessione, della
lingua (dichiarata) dell’utente

Il formato con cui si descrive un contenuto web è l’HTML (HyperText Markup Language)

È un linguaggio per descrivere la struttura del documento (non nasce come linguaggio grafico come riporta il
libro). Da delle indicazioni al browser su qual è la struttura, è compito del browser ricostruire il contenuto del….?
HTML, è fatto per la struttura. Da struttura.

 Descrive la struttura di pagine Web (non dovrebbe descriverne il layout)


 Tipo dei paragrafi (titolo, sottotitolo, ecc.)
 Liste, tabelle, blocchi
 Immagini, video e altri dati multimediali da incorporare

Ipertesto
 Documenti con organizzazione non sequenziale
- documenti non lineari
 Link o collegamenti
- permette di “collegare” le parti di un ipertesto

HTML (Hyper Text Markup Language)


Markup  la marcatura è qualcosa che noi facciamo costantemente quando scriviamo.
HTML è un linguaggio di marcatura, che ha a che fare con la struttura di un documento.

Seconda parte del corso

Capitolo 3- Introduzione a HTML5

 Il linguaggio fa parte delle tecnologie legate al www.


 Descrivono la struttura della pagina Web

Strutturare con i tag


 Per identificare la marcatura si usano le parentesi angolari  <>
 Le marcature si usano a coppie (apertura e chiusura)
Esempio: <title>/<title>

 Possono essere alternata nelle strutture più complesse.


 Lo standard prevede che i tag (sono le parole all’interno delle parentesi) siano scritti in minuscolo, i
browser potrebbero tollerare un tag maiuscolo.
 Ciascun elemento strutturale corrisponde a qualche cosa che i browser fanno per visualizzare questo
elemento.
 Esistono browser che leggono i contenuti della pagina (per i non vedenti)

Tag per grassetto e corsivo enfasi

 Enfasi: <em> </em>


<em>testo enfatizzato</em>

- testo enfatizzato
I browser lo rendono come corsivo, ma non è detto, ti dice che il testo deve essere distinto.
Corsivo: <i> </i>

 Più enfasi: <b> </b> <strong> </strong> <strong>testo enfatizzato</strong>

- testo enfatizzato

Grassetto: <b> </b>

 Enfasi multiple
Si possono applicare più enfasi contemporaneamente

- Veni, Vidi, Vici!

L’ordine dei tag


I tag devono essere nidificati (innestati) correttamente

Esempio: <em><strong>testo</strong></em>

Tag singoli

Ci sono tag singoli che non hanno chiusura, poiché non ha senso che contengano del testo al loro interno.

 <hr/> separazione fra parti del documento (riga orizzontale di separazione)


 <br/> interruzione di singolo capoverso (a capo forzato)

Alcune informazioni nella parte “head” sono obbligatorie, il “title”  titolo della pagina
Nel “body” non è obbligatorio nessuna informazione, può anche essere vuoto.

Informazioni obbligatorie  Il titolo è obbligatorio, il corpo può essere vuoto

Tag notevoli

 <!doctype html>
Indica al browser la versione del linguaggio

 <meta charset="utf-8" />


Specifica la codifica dei caratteri utilizzata nel documento (utf-8 è la codifica Unicode a lunghezza variabile)

Intestazioni
 HTML descrive la relazione tra le diverse parti di un documento.
 Indica anche il livello di gerarchia che andiamo a definire (es. gerarchia di un libro)

 Esistono 8 livelli, dall’h1 all’h8


Formattazione HTML
È il passaggio dall’esempio riportato sopra; la sua visualizzazione, è compito del browser
 Le righe del codice sorgente non corrispondono a quelle visualizzate (non WYSIWYG)
 Codice HTML dice al browser quale sia la struttura della pagina in base al significato dei tag non
all’aspetto del codice sorgente

Forma ben strutturata


HTML richiederebbe che i contenuti (tag) siano organizzati in una forma ben strutturata  è quella che per
ciascun tag di inizio ha un tag di fine corrispondente. (<p> </p>)

Il browser e gli spazi.


 Trasforma sequenze di più spazi in uno solo prima di elaborare il codice HTML.
 Unica eccezione:
il testo incluso nei tag <pre> e </pre> viene sempre visualizzato così come appare nel codice sorgente

Attributi dei tag

 Aggiungono ulteriori indicazioni al tag


 Sono all’interno delle parentesi angolari

Esempio: URL nei link, nome immagini

Caratteri speciali
Se la nostra pagina dovesse contenere una relazione matematica come 0< p>r, il browser interpreterebbe < p >
come tag visualizzando scorrettamente il testo.

Cascada Style Sheet


Attribuiscono proprietà ai tag della pagina.
Sono il modo formalmente e semanticamente corretto per descrivere il layout e la formattazione.

Esempio:
<style>
body {background-color:black; color:white}
h1 {color:red}
</style>

Separation of concerns  è un principio di progettazione per separare un programma per computer in sezioni
distinte. Tecnica di problem-solving generica. Separare gli ambiti, e di focalizzarsi un singolo.

Nomi dei colori


Capitolo 4 – Trovare informazioni sul Web
Creazione di motori di ricerca (Bing, Google). Sistema monolitico. Sono servizi web e risponde a un URL
specifico. I motori di ricerca sono composti da 2 entità fondamentali:

 Crawler  è un sistema automatico che simula l’interazione dell’umano sulla rete. Naviga per il motore
di ricerca sul web, recuperando le informazioni che sono accessibili attraverso il link. Ha come obiettivo
quello di creare un modello del contenuto del web, cerca di indicizzare le pagine in modo che poi la
rappresentazione interna del motore di ricerca….
È una sorta di esploratore del web, cerca di analizzare il contenuto di ogni pagine per aggiungerlo ad una
lista che poi verrà interpretata dal Query processor (?non sono sicura)
Costruisce una sorta di indice. Non c’è solo un Crawler
ma più macchine contemporaneamente che esplorano il
web.

 Query processor  È quel componente/servizio che cerca di interpretare il nostro bisogno


informativo (nella barra di ricerca) e sfruttando i modelli delle pagine del Crawler ci aiuta ad
indirizzarci nelle pagine più simili da noi richieste. Ha un insieme di contenuti da cui partire, una
sorta di database (URL) da cui iniziare il percorso di esplorazione del web (dato dal crawler).
È quel sistema con il quale noi interagiamo.
- Elabora richieste dell’utente  le richieste sono composte da token  i token sono ciò che
noi scriviamo. La query (richiesta) è scritta in linguaggio naturale (il nostro).
- Cerca nell’indice i token della richiesta  restituisce la lista delle pagine associate ai token

Ricerche con più parole


Operatori logici : AND, OR, NOT.
Esempi:
- Pasticceria Gorizia, tra pasticceria e gorizia c’è un “and” implicito. È una ricerca dove ci deve essere sia
la parola pasticceria sia gorizia.
- Gli altri operatori, come “or”, mostrano più opzioni  pizzeria ristorante (ti mostrerà sia pizzerie, sia
ristoranti, e probabilmente locali che offrono entrambi i servizi). Perciò basta che contenga uno dei due
termini.
- “Not”, per escludere i risultati  Pesca not frutto  andrà a ricercare l’azione

Ricerche avanzate:

AND

 Combinazione logica delle occorrenze di parole chiave.


 Operatore binario
 Dice al motore di ricerca di restituire solo le pagine che
contengono tutte le parole abilitazione AND volo AND
acrobatico

OR

 Operatore binario
 Dice al motore di ricerca di restituire le pagine che contengono almeno una delle
parole caramella OR fragola OR cioccolato

NOT

 Operatore unario
 Dice al motore di ricerca di restituire le pagine che
non contengono la parola
 Roma NOT calcio

Google Page Rank


 Utilizza un metodo più sofisticato.
 Ordina i link secondo la rilevaza
 Calcola il rank in base al numero di collegamenti che puntano una pagina, più link puntano una pagina,
più questa è importante

Capitolo 8- Pensare in modo algoritmico


È l’essenza di una procedura risolutiva. Non è un programma.
È un procedimento per ottenere un risultato preciso e sistematico. Il termine algoritmo deriva da un matematico
arabo/persiano.
È un procedimento per ottenere un risultato, ha delle caratteristiche per essere considerato tale.
Esempi:
- Riconoscimento click di un pulsante
- Conversione esadecimale/binario e viceversa

Algoritmi nella vita quotidiana:


- Li abbiamo imparati a scuola  le operazioni aritmetiche
- Li abbiamo ricostruiti da soli  la ricerca di un numero telefonico
- Li abbiamo letti ed eseguiti  istruzioni scritte di Ikea

Hanno qualcosa in comune ma anche delle differenze

Descrizione precisa
 Capacità  Quali operazioni svolgere
 Linguaggio  Descrizione non ambigua, non lasciano più interpretazioni.
 Contesto  Caratteristiche dell’input e ambiente di esecuzione

Gli algoritmi descrivono un modo per risolvere i problemi

5 proprietà degli algoritmi


 Input specificato
 Output specificato
 Determinato o definito, non ci devono essere passi ambigui
 Effettivo (può essere realizzato)
 Finito

Input specificato
 Dati trasformati per produrre l’output
 Specifica di:
- Tipo
- Quantità
- Forma

Output specificato
Come sarà il risultato atteso della computazione

Determinatezza
 Indipendenza dall’esecutore
 La sequenza delle operazioni dev’essere specificata
- Ogni passo dev’essere descritto in ogni suo aspetto
- Senza lasciare aspetti non definiti
- Quali operazioni eseguire e quando
Effettività
 L’esecutore può eseguire le istruzioni senza ulteriori informazioni
 Operazioni effettivamente eseguibili

Finitezza
 L’elaborazione deve giungere al termine in un tempo finito
 Con il compito completato
 Oppure con la segnalazione che non si può arrivare alla soluzione

Algoritmi e linguaggi
 Linguaggio naturale
 Utilizzato per comunicare fra persone
 Sviluppato nel corso del tempo
 L’ambiguità è parte dei linguaggi naturali
 Linguaggi di programmazione
 Linguaggi formali
 Progettati per esprimere algoritmi
 Hanno una definizione precisa
 Non presentano ambiguità

L’algoritmo per essere concreto ha bisogno di essere specificato in un linguaggio di programmazione. Gli
algoritmi sono scritti in un linguaggio di programmazione.

Programmi e algoritmi
La natura è la stessa, cioè sono dei procedimenti per risolvere dei problemi. La differenza sta nel livello di
astrazione.
Distinzione:
 Programmi  è un algoritmo espresso in un linguaggio artificiale, opera in un determinato contesto. Il
programma è un metodo specializzato. È la concretizzazione di un algoritmo espresso in un linguaggio di
programmazione. È concreto, realizzato per una specifica macchina
 Algoritmi  è un metodo generale. È a un livello di astrazione maggiore, è più astratto.

Effettuare una ricerca


I motori di ricerca devono risolvere alcuni problemi.
Problema di carattere generale dei motori di ricerca  Intersect an Alphabetized List (IAL)  Trovare gli
elementi comuni a più liste ordinate alfabeticamente.
Tecnica risolutiva  algoritmo in grado di risolvere il problema (IAL)
Intersezione (in senso insiemistico) si intende quegli elementi che sono in comune su tutte le liste (o insiemi).

Algortimo IAL
1. Inserisci un marcatore all’inizio della lista di ogni token
2. Se tutti i marcatori puntano allo stesso URL, salvalo
3. sposta il marcatore (o i marcatori) alla posizione successiva per gli URL che sono i primi, in ordine alfabetico,
tra quelli marcati
4. ripeti i passi 2 e 3 sino a che almeno uno dei marcatori supera la fine della sua lista; quindi, termina

Soluzione di carattere generale.


Se le liste sono ordinate, possiamo fare un ragionamento sofisticato  La tecnica si basa sul fatto che l’algoritmo
non può guardare le liste in generale, una alla volta a trovare tutte le combinazioni.
Le operazioni che può svolgere concretamente un algoritmo sono quelle di poter guardare un solo elemento di
ciascuno lista e confrontarlo con gli altri. Comparazione (2 a 2).
IAL, usa una serie di marcatori.

Intersezione è tipo un’insieme.

NO Alphabetized List (NAL)


Funziona anche per liste non ordinate alfabeticamente (è ancora più generale). Generalizzazione di tutte le
possibili combinazioni.
 Se le liste non sono ordinate molto meglio IAL (?)
 NAL ignora l’ordinamento.
 Funziona come un “contachilometri”.

Algoritmo NAL
 Inserisci un marcatore all’inizio della lista di ogni token
 Avanza il marcatore della lista più a destra passo-passo fino alla fine
 Verifica se c’è una corrispondenza dei marcatori
 Per ogni altra lista: verifica se il marcatore della lista immediatamente a destra è arrivato in fondo
- e il suo cursore no, avanza il cursore
- altrimenti riporta il cursore all’inizio della lista
 Termina quando tutti i cursori sono in fondo alle loro liste
Nella scrittura degli algoritmi  analizzare se un algoritmo va meglio di un altro, si cerca di farlo nel modo più
astratto possibile.

Confronto: 5 liste di 10 voci


 IAL  il marcatore di ogni lista avanza tante posizioni quante sono le voci della lista: 10+10+10+10-10
= 50 avanzamenti

 NAL  opera come un contachilometri a cinque cifre: 10 x 10 x 10 x 10 x 10 = 100.000 avanzamenti

Hanno un’efficienza diversa, ma quali dei due è meglio? IAL è meno generico, ha meno operazioni.

Un altro aspetto degli algoritmi


Algoritmi differenti possono risolvere lo stesso problema in modo diverso. le diverse soluzioni possono richiedere
diverso tempo

Ricerca di un valore
C’è un dato autore in una sequenza ordinata di n libri?
 Ricerca lineare
 Ricerca binaria

Ricerca dicotomica (binaria)


Sappiamo che c’è un ordine, andiamo al centro dello scaffale e guardiamo che lettera c’è al centro dello scaffale.
Capitolo 10 – Privacy e sicurezza

Definizione di privacy
Gli aspetti di privacy sono legati al fatto che l’informazione che viene trattata o comunicata riguarda anche gli
aspetti personali delle persone o di quelli coinvolti. È legata anche ad aspetti politici e sociali. Già emersa alla fine
dell’800 (con le foto).
È un concetto di carattere generale che ha a che fare con:
 Le persone
 I nostri corpi intesi come immagine
 I luoghi che noi frequentiamo
 Le informazioni che ci riguardano
 Le comunicazioni personali

 Con i moderni dispositivi è possibile violare la privacy delle persone senza che se ne accorgano
 Nel 1890, Brandeis scrisse che gli individui meritano “protezione sufficiente contro la circolazione
impropria” delle loro immagini

Definizione più precisa:


Il diritto di una persona di scegliere liberamente in quali circostanze e fino a che punto rivelare agli altri:
 Sé stessa
 Il proprio atteggiamento
 Il proprio comportamento

Social network
Noi abdichiamo alla nostra privacy già dal momento in cui ci iscriviamo in un social network (quando accetto i
termini e le condizioni).
 Riduzione volontaria della propria privacy
 La rete non dimentica mai, per essere distrutti, bisognerebbe tutte le copie dei contenuti.
 Utilizzati regolarmente anche per le assunzioni

Chi minaccia la nostra privacy?


 Gli organi governativi (?)
 Aziende commerciali (I nostri atteggiamenti sono particolarmente utili per fare politiche di marketing da
parte delle aziende commerciali)
 Spionaggio
 Malavita

Cookie
Siamo sottoposti all’abuso che viene fatto di questa tecnologia, a causa di questo abuso, ogni volta che ci
attacchiamo ad un sito web e dobbiamo dare un consenso esplicito all’uso di questa tecnologica, questi sono i
cookie.
Sono una minaccia alla privacy, non sono pensati per essere qualche cosa da utilizzare per spiare il
comportamento. Anzi, fine meritorio ( comunicazione client/server, è senza memoria, significa che l’atto di
comunicazione del client/server non viene ricordato, una richiesta ad un server è sempre come se fosse la prima
volta. Per gestire una sorta di memoria, nelle tecnologie legate al web per il server, si è introdotto il concetto di
cookie).
Il concetto di cookie è qualche cosa che il server manda insieme alla risposta (al client), in modo che il client, a
successive richieste ricordi (richieste con il biscottino). Grazie a questo biscottino il server è in grado di
riconoscere che quella richiesta arriva da qualcuno che mi ha già contattato prima.
Il fatto che mi arrivi un cookie, e poi tutte le richieste successive abbiano questo cookie, consente di “marcare”
/identificare tutta la sequenza di richieste come un qualcosa di univoco, come una storia  sessione  serie di
richieste successive che sono identificabili grazie al cookie.

Esempio:
Il client chiede di effettuare l’operazione di login, il server dice “ok sei tu”, mandandogli user e password.
C’è l’illusione che il server si ricordi del client, quando in realtà non è vero, perché è il client che ricorda al server,
attraverso il cookie che era lui e che era stato autorizzato a fare delle cose.
È stato creato per evitare che ci sia questa mancanza di memoria.

Cookie:
 Un piccolo file che contiene sette campi di informazione
 Identificare univocamente una sessione
 Il cookie è memorizzato sul computer client
 Lettura e scrittura solo dal sito che si sta visitando

Third Party Cookie


Senza i cookie non si potrebbero avere i servizi di autenticazioni, servizi posta sul web, social network, tutti i
servizi che conosciamo oggi. Utilizzo malevole. Modo per tracciare le persone che stanno visitando un
determinato sito da parte di terze parti (venditori di pubblicità). Meccanismo basato su un aspetto dei contenuti
web, in particolare sul fatto che un contenuto web non sia monolitico, ma che contiene dei riferimenti esterni
(sottoforma di immagini) ad altri siti. Attraverso questi riferimenti vengono installati i cookie di terza parte, che
poi vengono utilizzati per tracciare.
Sono indispensabili, non c’è modo per non averli.
Quello che non è indispensabile è l’uso sbagliato di questa tecnologia, attraverso i Third Party Cookie.

Essi non sono cookie legittimi, tecnici, quelli per realizzare l’interazione, per tenere traccia del login, del carrello,
ecc…
Sono un meccanismo subdolo. Il client accetta biscottini solamente dal server con il quale sta interagendo. Quello
che mi arriva con la risposta non è solo un cookie, ma è anche un contenuto html (contenuto della pagina, ad
esempio, home page). In quelle pagine, c’è un tag che si chiama IMEG ha un attributo SRC, con URL, il server in
risposta mi dice, questa è la pagina con le news, in questo punto c’è un’immagine, ma per visualizzare questa
immagine devi andare a questo URL.

 Venditori di pubblicità presenti come “esterni” (third party) su un sito web


 Connessione con il computer del cliente durante il caricamento della pagina
 Se l’utente raggiunge un’altra pagina su un altro sito con lo stesso Third Party, il cookie può essere
riconosciuto e utilizzato per dedurre informazioni

Proteggere la privacy
 Aggiornare il software antivirus
 Configurare la gestione dei cookie
 Fare sempre attenzione ai messaggi di possibili “phishing”
 Scaricare file solo da siti affidabili
 Mantenere sempre un sano scetticismo
 Mantenersi aggiornati sulle tecniche di attacco alla privacy

Accesso
 Coppia login-password
- Identificazione univoca dell’utente (login)
- Firma elettronica

L’autenticazione è fatta dalla password (l’utente è effettivamente lui)

 Il ruolo delle password


- Limitare l’accesso a un computer
- Identificare chi accede
- Identificarne anche le azioni

Login e password
Il meccanismo di login e password è un meccanismo che può essere attaccato con un algoritmo, il quale è
sufficiente per trovare tutte le combinazioni possibili.

 Provare ad accedere a un computer senza password


 Si possono provare tutte le combinazioni possibili fino a trovare la password corretta
 Il software in genere limita il numero di tentativi

Dimenticare la password:
 Le password sono criptate e registrate (CRITTOGRAFIA  è una tecnica che nasconde il contenuto
trasformandolo in un contenuto che non è immediatamente intellegibile, ma che in qualche forma ci
consente di tornare indietro.
Il modo in cui viene memorizzata la password, è particolare, è un tipo di crittografia che funziona in un
solo senso, non in senso inverso. Perciò, dalla password criptata, non riesco a ritornare a quella originale.
 L’amministratore del sistema non può ricostruire una password dimenticata, può solo cancellarla o
sostituirla

Una buona password


 NO: qualcosa che si può facilmente indovinare (es. data di nascita, nome proprio, nome figli) o che ha un
collegamento ovvio con la vostra persone (indirizzo, matricola, nomignolo)
 SI:
- Essere almeno di sei caratteri (la lunghezza dipende dal sistema);
- Un mix vero (lettere maiuscole, minuscole, numeri, punteggiatura (se permessa))
- Una parola che non è nei dizionari, che resiste all’attacco del dizionario

Generare una password


 Scegliete un argomento che vi interessa
 Partite da una frase anziché da una singola parola

Codificate la frase in modo personale:


 Abbreviandola (es. acronimo TVUMDB)
 Sostituendo lettere o sillabe con caratteri alternativi (es. A→ 4/T→7/I→1/O→0)
 Scegliendo lettere particolari (es. Ç à, §)

Cambiare password
Una password dovrebbe essere cambiata periodicamente, infatti molti sistemi impongono un cambiamento
periodico

Sicurezza
 Malware
 Protezione

Virus
 È un programma che ne "infetta" un altro attaccandogli una copia di sé stesso.
 Quando il programma infettato viene eseguito, il virus crea ulteriori copie di sé e infetta altri programmi
ancora

Worm
È un programma indipendente che copia se stesso e viaggia sulla rete

Trojan
 È un programma che si nasconde all’interno di un altro programma utile, esegue operazioni all’insaputa
dell’utente
 I trojan possono registrare le battute dei tasti o altri dati dell’utente o keylogger
 Mandare in esecuzione programmi dannosi

Exploit
 È un programma che sfrutta la vulnerabilità del software
 La backdoor permette l’accesso al computer e ne riconfigura il comportamento da remoto
Virus per e-mail
Non aprite quell’allegato:
- Conosco il mittente di questo messaggio?
- Il contenuto è coerente con la nostra ultima conversazione?
- È plausibile che il mittente voglia dirmi delle cose?
- C’è una buona ragione per includere un allegato?

Virus per altre vie


- Copia di file da un computer infettato
- Scambio peer-to-peer di file (fonti insicure)
- Installazione di programmi
- Ogni software è una fonte potenziale di infezione
- La maggior parte dei distributori di software prende tutte le precauzioni

CRITTOGRAFIA

È una serie di sistemi, protocolli, algoritmi, che consente di rendere sicura la comunicazione (non può esser
intercettata) e di rendere privata la registrazione delle informazioni.
L’idea alla base della crittografia è la cifratura.
Modalità per mantenere un certo grado di sicurezza nella comunicazione  crittografia  modo per nascondere
l’informazione che viene trasmessa.
Un sistema di crittografia consiste in due fasi: cifratura(crittografia) e decifratura (decrittografia).
La crittografia è nata per ovviare i problemi del fatto che i canali di comunicazione possono essere pubblici.

Terminologia:
 Cifratura  rende la rappresentazione incomprensibile. È una trasformazione di rappresentazione,
con lo scopo di renderla incomprensibile, non a tutti, ma solamente alle persone alle quali questa
informazione non è rivolta.
 Sistema di crittografia  per la cifratura e la decifratura
 Testo in chiaro  l’informazione prima di essere cifrata. Contenuto originale
 Testo cifrato  l’informazione cifrata
 Crittografia monodirezionale (usata per le password)  non può essere facilmente decodificato. Noi
abbiamo una regola per passare dal nostro testo in chiaro, al nostro testo cifrato, ma non abbiamo una
regola per tornare indietro, o facilmente indietro.
 Crittografia bidirezionale  abbiamo qualche cosa che dal testo in chiaro va al cifrato, e dal cifrato al
testo in chiaro.
 Decifratura  operazione inversa della cifratura. Rendere comprensibile.

Crittografia simmetrica
Usiamo una chiave crittografica, che può essere utilizzata sia nella crittografia monodirezionale, sia in quella
bidirezionale. La chiave è un parametro del nostro sistema crittografico, ci consente di specificare la regola.
La chiave è un modo ulteriore per raggiungere un livello di sicurezza anche in sistemi crittografici semplici.
Gli schemi crittografici tipicamente usano un ulteriore parametro
 Stessa chiave segreta
- Cifrare
- Decifrare

Esempio: singolo lucchetto con due chiavi

XOR- OR esclusivo
La crittografia simmetrica si basa su un operatore XOR, è un operatore binario particolare, prende dei numeri
binari e li trasforma con una regola. La cosa buona di questo operatore è che se lo riapplichiamo, ci restituisce il
risultato originale; mischia e poi se facciamo un’operazione, nasconde il contenuto che c’era prima, ma se lo
riapplichiamoci fa ritrovare il risultato originale.

Operatore binario, ⊕
 0⊕0⇒0
 1⊕0⇒1
 0⊕1⇒1
 1⊕1⇒0

XOR e crittografia
 Facilita l’applicazione di una chiave a un testo in chiaro (la chiave è una sequenza di bit)
 Per ottenere di nuovo il testo in chiaro basta riapplicare la stessa chiave
 Il risultato dello XOR non cambia se la chiave è a destra o sinistra dell’operatore

Questo operatore è particolarmente utile, di solito uso delle chiavi che sono almeno di 16 bit, ma anche più lunghe
fino a 256 bit, per garantire una certa sicurezza.

Per cifrare con questa tecnica ci sono alcune fasi:


 Decidere qual è la chiave, resa disponibile ad entrambi gli attori della comunicazione
 Tradurre il testo nella sua rappresentazione binaria
 Usiamo l’operatore XOR, tra il messaggio e la nostra chiave.

Esempio:
La chiave, 16 bit, è: 00010111 00101101
 Usiamo rappresentazione ASCII del messaggio
 XOR, bit per bit, tra il messaggio e la chiave
 Ripetendo la chiave per la lunghezza necessaria

Proprietà cifratura simmetrica


È una cifratura di base, funziona bene se il canale di comunicazione è un canale pubblico. La sua sicurezza si basa
sul fatto che la chiava sia inizialmente scambiato su canali sicuri.
Significa ad esempio che Alice e Bob, prima che comunichino su internet, si devono vedere di persona e decidere
quale chiave utilizzare per la comunicazione, scambiandoselo in luogo dove non possono essere visti, a cui
nessuno può accedere. Se qualcuno ha accesso alla stessa chiave di Alice e Bob, può ricostruire interamente
l’informazione.
Il punto cardine è quello di avere una chiave che è stata condivisa tra i due attori della comunicazione, se questa
viene condivisa in modo non sicuro, tutta la costruzione della crittografia cede.
Basa la sua sicurezza e tutto il meccanismo di affidabilità, sul fatto che le chiavi siano conosciute solamente dagli
interessati e da nessun’altro, e che se la scambino su canali sicuri.
 Canale di comunicazione “pubblico”
 Scambio chiave tramite canali sicuri
 Una chiave per ogni coppia di utenti
 100 utenti 4’950 chiavi => ognuno 99 chiavi
 Problema “rimozione” (Alice e Carla non vogliono più parlare con Bob, ma ormai non c’è nessun modo
per rimuovere Bob dalla comunicazione)
 Ripudiabile  Alice può dire che non è stata lei a comunicare, non può essere dimostrato

Ci sono altri schemi crittografici che cercano di evitare questi problemi, al fatto di avere una chiave per almeno
ogni coppia di utenti, al problema della rimozione e quello della ripudiabilità.
Infrangere il codice
È possibile, tuttavia, che attraverso delle proprietà statistiche dei testi, di infrangere il codice. La persona che
intercetta la nostra comunicazione può usare delle tecniche statistiche, sulla frequenza delle lettere, per ricostruire
il testo originario.
 Più è lungo il testo più è facile decodificarlo
 Si notano quali sequenze di bit compaiono più frequentemente
 Ci si basa sulla conoscenza delle lettere più comuni nel linguaggio in cui è stato scritto il messaggio

Sistemi a chiave pubblica (RSA)


Per ovviare a molte di queste limitazioni, il sistema (chiave simmetrica), può essere gestito, utilizzare un insieme
di chiavi  meccanismo in cui la chiave non è perfettamente simmetrica.
L’infrastruttura si basa in particolare su due chiavi, che vengono utilizzate per scopi diversi; quindi, abbiamo delle
coppie di chiave per ciascun utente. C’è una chiave pubblica che è accessibile a tutti  vengono pubblicate in
delle banche dati (sicuri, gestiti da enti governativi) ed è un primo frammento di informazione che ci serve per il
processo di codifica (xor o altri).
Ciascuno ha la sua chiave segreta (Alice ha due frammenti di informazione, una pubblica, l’altra segreta). Queste
chiavi sono indipendenti. Non deducibili l’una dall’altra (chiave pubblica). Una cifra, l’altra decifra (chiave
segreta).
Le due chiavi vengono utilizzate in modo asimmetrico, una viene usata per cifrare, l’altra per decifrare la
comunicazione.

 Le persone pubblicano una chiave che i


mittenti devono usare per cifrare i testi
 La chiave è tale che solo il destinatario
legittimo possa decifrare il testo

Limiti
 Nessuna autenticazione sender
 Ripudiabile  Non c’è nessuna indicazione di chi ha emesso il messaggio, pertanto quest’ultimo è
ripudiabile.
 Integrità del messaggio non verificabile

Per ovviare al problema dell’integrità e per rafforzare il meccanismo della comunicazione a chiave pubblica, si
usa il concetto di firma, complicando un po' il protocollo, ciò nonostante, questo garantisce di andare ad ovviare a
tutte e tre queste limitazioni, a garantire perciò la non ripudiabilità.

Funzione hash
Per aggiungere questo ulteriore livello di sicurezza, si usano delle funzioni di “hash” (polpettone che ci trita e ci
restituisce un riassunto del contenuto originale in lunghezza fissa). Queste funzioni di hash sono le stesse della
crittografia monodirezionale, funziona in un verso. Dal testo originale otteniamo una sorta di riassunto del testo. È
una funzione di riassunto, di trasformazione.
Basta alterare di poco il testo originale e noi otteniamo una firma diversa.
Le funzioni hash hanno delle caratteristiche:

 L’input è di lunghezza qualsiasi


 L’output ha lunghezza fissa
 Piuttosto semplice da calcolare
 È “unidirezionale” (es. uova strapazzate)
 È “senza” collisioni

Firma digitale
Attraverso la firma digitale, ovviamo al problema della ripudiabilità.

Alice fa un’operazione aggiuntiva (per essere sicuri dell’integrità), usa la


sua chiave segreta per codificare il messaggio. Le due chiavi funzionano
in modo asimmetrico  io posso usare la chiave pubblica di Bob per
rendere questo messaggio leggibile solo da Bob, ma posso anche usare la
mia chiave segreta e questo messaggio sarà leggibile solo attraverso la
chiave pubblica di Alice.
Questo restituisce il contenuto originale.

Meccanismo: Il messaggio viene crittografato con la chiave pubblica di Bob, è apribile solo da Bob con la sua
chiave segreta, con questa ricostruisco il contenuto.
Funziona anche all’inverso, se io codifico un contenuto con la mia chiave segreta, quel contenuto potrà essere
aperto solo con la mia chiave pubblica.
Le due chiavi devono essere utilizzate entrambe, una in un verso, l’altra nell’altro, ma entrambe hanno la
possibilità di crittografare o di decrittografare (non è prescritto un compito preciso a ciascuna di esse).
Noi otteniamo un qualcosa che può essere aperto da tutti (basta avere la chiave pubblica di Alice), ma siamo sicuri
che sia Alice ad averlo generato.
Con questo meccanismo evitiamo il problema della non ripudiabilità.
Usiamo queste due chiavi, in un verso o nell’altro. Questo, crea una copia del messaggio, che è criptata, così
siamo sicuri che sia stata solo Alice.
Questo messaggio per farlo leggere solo a Bob, uso la sua chiave pubblica per trasformarlo, perché quello che
ottengo è un messaggio doppiamente criptato. La chiave criptata di Bob serve solo per decriptare qualcosa che è
stato criptato con la sua chiave pubblica.
Con questo aspetto però, non abbiamo ancora risolto il problema dell’integrità  perché se qualcuno conoscesse
la chiave segreta di Alice e manipolasse il messaggio, questo sarebbe possibile.

Per garantire anche l’integrità del messaggio, tipicamente i sistemi di … digitale, fanno un ulteriore passo
Prendono e mettono insieme non solo il documento, ma anche la firma digitale (riassunto del messaggio).

Caso di non ripudiabilità: Bob deriva questo testo inviato da Alice (è il cattivo), supponiamo che sia un contratto e
che lui modifichi il prezzo dicendo “questo è quello che mi hai inviato tu”, Alice non può dire di non essere stata
lei, non c’è prova.

Affinché ci sia questa prova, il testo viene incorporato a questo riassunto.

Firma digitale (con hash)

Proprietà firma digitale


 Unicità
 Integrità
 Non ripudiabilità
 Confidenzialità
 Segretezza
 Autenticità

Attacchi di “forza bruta”


 Efficaci contro qualsiasi algoritmo
 Chiave di n bit ⇒ 2n possibili chiavi

Lunghezza della chiave

Busta digitale
Meccanismo crittografico.
Quando i contenuti sono più di uno, è più efficiente utilizzare il sistema a chiave simmetrica (ha il vantaggio che
prima di effettuare la comunicazione bisogna scambiarsi la chiave).

Protocollo https
L’idea alla base del protocollo https è quella di usare la tecnica di
criptazione a chiave pubblica e privata (simmetrica), come un modo per
scambiarsi una chiave in modo sicuro.

Concetto di busta digitale  con l’infrastruttura della chiave pubblica, è


una chiave usa e getta, che userò nelle prossime comunicazioni. Se la
scambiano il client e il server nella prima delle comunicazioni che
avvengono con chiave pubblica del server e chiave pubblica del client.
In questa prima comunicazione, che è criptata con chiave pubblica e
privata, i due si cambiano una chiave (questo scambio di chiave, avviene in
modo sicuro). Questa prima operazione, fa si che solo Bob (il client) sia in grado di trarre la chiave che verrà
utilizzata poi nelle comunicazioni successive.
Queste comunicazioni che seguono, usano questa chiave (che è conosciuta sia dal client sia dal server) per criptare
con il sistema a chiave simmetrica (più semplice).
Il primo passo è indispensabile, perché lo scambio della chiave avvenga in modo sicuro ed è quello che usa la
tecnica più complessa.
Attraverso il meccanismo di chiave pubblica, è come se io mettessi in una busta digitale la mia chiave.
Tutto questo è alla base di https e tutta una serie di protocolli sicuri, in cui c’è bisogno di efficienza, data dalla
crittografia simmetrica (costa meno). La sicurezza è data dalla struttura della chiave pubblica e privata.

Autenticazione
Tutta l’infrastruttura di chiave pubblica e privata, si basa sulla reputazione di quel registro, noi ci fidiamo di quel
registro (ci fidiamo di WhatsApp, è lui che tiene le nostre chiavi pubbliche). Ci dobbiamo fidare di quel registro,
ed è la reputazione di quel registro che fa funzionare tutta l’infrastruttura.

Esempio: se qualcuno sostituisce le chiavi pubbliche o se ci da delle chiavi false, tutta l’impalcatura crolla.

Tenere centralmente tutte le chiavi pubbliche è impossibile, si utilizza una sorta di distribuzione, uno schema
piramidale per la distribuzione delle chiavi, attraverso le autorità di certificazione.
 Autorità di certificazione AC (Certification Authorities)  Sono quelle che tengono le chiavi
pubbliche e sono non una sola, ma distribuite. Quindi abbiamo dei livelli. Garantiscono che le nostre
chiavi pubbliche siano realistiche.
 Terza parte fidata
 Certificati digitali  è qualche cosa che identifica queste chiavi pubbliche assieme alla nostra identità
(SPID). Il certificato digitale di ciascun individuo contiene la chiave pubblica del soggetto e altre
informazioni:
- Nome del soggetto
- Chiave pubblica del soggetto
- Numero di serie del certificato
- Date di rilascio e di scadenza
- Informazioni ulteriori
- Firma digitale della CA che rilascia

PKI (Public Key Infrastructure)


Le chiavi pubbliche, quindi, queste autorità di certificazione, formano una infrastruttura che viene chiamata PKI
 infrastruttura di chiavi pubbliche  garantisce la sicurezza della comunicazione. Rete di CA che si
riconoscono a vicenda.

Caratteristiche:
 Efficace per i messaggi su Internet
 Inutile contro gli impiegati malfidati
 Nessuna garanzia che l’utente del computer sia la persona del certificato
 Nessuna garanzia che il computer della controparte sia sicuro
 Le CA sono società private

Capitolo 14- I limiti della computazione

Analizzare che cosa non siamo in grado di fare con i calcolatori


Una prima cosa che non siamo in grado di fare è avere delle macchine che sono veramente intelligenti.
Intelligenza artificiale nasce negli anni ‘50/’60

Test di Turing (uno dei padri dell’informatica)


 Un giudice
 Due concorrenti: una persona e una macchina
 Collegamento al giudice solo in remoto (terminale)
 Chi è la macchina? (o la persona?)

Test, modo per caratterizzare il comportamento di una macchina.


Abbiamo un giudice esterno che deve giudicare chi è la persona e chi la macchina, 2 concorrenti (nascosti, si può
interagire solo da remoto, scatole nere, una persona e una macchina).
Caratterizzazione del significato di intelligenza. Secondo Turing, una macchina è intelligente se è in grado di
dialogare con un umano in modo sufficientemente intelligente, in modo da rendere la sua interazione
indistinguibile da quella di un umano.

ELIZA
Per certi tipi di interazioni limitate e con un tipo di colloquio molto generico e
strutturato, un esempio di interazione stile Turing è stato proposto negli anni
’70, attraverso un sistema che si chiama Eliza.
Eliza mimava l’interazione fra un utente e uno psicanalista, in questa
configurazione particolare, lo psicanalista pone delle domande più che delle
risposte.
Eliza aveva questo tipo di interlocuzione a domande, cercando di sviare
l’argomento (perché è limitato da delle regole), individuazione di parole
chiave (es. depressione).

Uno dei primi tentativi per realizzare questo tipo di interazione, non passa il
test di Turing, in quanto un giudice è in grado di capirlo.

Al tempo, è stato un modo per caratterizzare gli sforzi che sono stati fatti nell’intelligenza artificiale.
Scopo di creare delle machine che sapessero interagire con gli umani.

Interazione subsimbolica
Accanto a questo tipo di intelligenza artificiale, quindi quello legato all’interazione (Turing), esiste un ulteriore
tipo di intelligenza artificiale, quella che attualmente ha il sopravvento, si tratta di quella subsimbolica. Questo
sub, ha il significato di elaborare un qualcosa che non è ancora un simbolo, è una percezione (es. visione,
comprensione del parlato, percezione tattile o pseudo). Questo tipo di intelligenza artificiale, va a un livello
sottostante, non costruisce dei simboli, costruisce qualche cosa che noi umani sappiamo fare molto bene.

Esempio:

Noi umani riusciamo a capire che nello spazio bianco c’è scritto qualcosa.

Per insegnare ad una macchina di vedere è qualcosa di molto problematico, attualmente l’intelligenza artificiale
subsimbolica che va sotto il nome di “machine learning”  è quella che equipaggia i droni, la guida automatica,
quello che è incorporata nei nostri telefoni (Siri, Google), Alexa  cercano di effettuare un ascolto e
un’elaborazione di quello che noi diciamo; è basata su uno strato piuttosto subsimbolico, da un certo punto di
vista mima quello che faceva Eliza. Funziona bene per la guida automatica.
Questo tipo di intelligenza si occupa della percezione, dando poco spazio al simbolo (al ragionamento).

Principio dell’universalità (Turing)


Ci sono altri aspetti relativi alla computazione che sono stati studiati da Turing, sono degli aspetti fondazionali
dell’informatica.

Il primo (anni ’30) è:

 Qualsiasi elaboratore può simulare il comportamento di qualsiasi altro, utilizzando un numero


estremamente ristretto di istruzioni. Le caratteristiche tecniche di un computer, di un processore o di
un’architettura di calcolo, rendono più veloce o agevole risolvere dei problemi, ma i problemi che
possono essere risolti da un qualunque calcolatore, sono gli stessi che possono essere risolti da qualunque
altro. C’è perciò una sorta di equivalenza, o universalità del calcolo.
Questo principio di universalità si basa sul fatto che tutti i processori, i computer, ecc.. possono essere
ridotte ad un’essenza di operazioni, istruzioni ristrette.
Si basa sul fatto che tutti i processi di calcolo possono essere ridotti a qualche cosa che opera su una
rappresentazione del calcolo più di base possibile  si chiama macchina di Turing (macchina astratta)
 è la macchina calcolatrice che svolge le operazioni più essenziali e semplici possibili. Costituita da un
nastro infinito (su cui possono esserci scritti dei simboli, che possono essere neri o bianchi, la testina può
leggere questo simbolo, può spostarsi da una parte o dall’altra e può modificare questo simbolo con un
altro).
Questo tipo di macchina è concettualmente quella con il numero minimale di istruzioni, può leggere
qualcosa, può spostarsi, ha un programma che le dice cosa fare, è programmabile perciò, ma il tipo di
cose che può fare sono veramente semplici: leggi, sposta, scrivi.
È possibile dimostrare, grazie al principio di universalità, che qualsiasi processore, anche il più moderno,
è riconducibile o è simulabile da questa macchina così semplice. Una sorta di unificazione di ciò che
possono fare le macchine, se tutte possono essere simulate da questo sistema di calcolo (che il più
semplice), allora tutte possono fare esattamente le stesse cose e non di più.

 Processori universali di informazione.

Computazioni trattabili
Un altro aspetto fondazionale del calcolo ha a che fare con uno degli aspetti che abbiamo visto parlando di
algoritmi.
Gli algoritmi che abbiamo presentato (ricerca, intersezione di liste, ricerca di un libro in uno scaffale), hanno la
caratteristica di trovare un risultato, in realtà è possibile caratterizzare ulteriormente i processi di calcolo a seconda
di quanto tempo richiedano per trovare il risultato.
Le computazioni trattabili sono relative a dei problemi, per i quali esistono degli algoritmi che restituiscono il
risultato corretto in un tempo ragionevole.
La trattabilità viene definita come ragionevolezza del tempo che stiamo ad aspettare, se le dimensioni
crescono, noi ci aspettiamo che il tempo per effettuare l’operazione di ricerca, cresca di conseguenza in maniera
proporzionale ad un polinomio della dimensione del nostro scaffale.
Polinomio  n, dove “n” è la dimensione dei nostri dati e “” la nostra costante. -

 Calcolo eseguibile in tempo “ragionevole” anche su grandi quantità di dati


 Ragionevole ≡ tempo polinomiale

Calcoli non eseguibili


Viceversa, esistono dei problemi per i quali non è possibile trovare un algoritmo che abbia questo tipo di
connotazione in crescita di tempo di calcolo. Questi problemi sono “difficili”.

Esempio: problema del commesso viaggiatore (TSP), supponiamo di avere un insieme di città, noi per andare da
una città all’altra, mi imbatterò in un tempo di percorrenza. Ho delle città da visitare, devo cercare di visitarle
facendo la minor strada possibile, devo cercare un percorso che tocchi tute le città e che faccia meno strada.
Dato un insieme di città, e note le distanze tra ciascuna coppia di esse, trovare il tragitto di minima percorrenza
che un commesso viaggiatore deve seguire per visitare tutte le città una ed una sola volta e ritornare alla città di
partenza.

Per questo tipi di problemi, se ho “n” città, i numeri di possibili percorsi è dato da questa formula  n-1!
(fattoriale)/2.
Ad oggi non esistono metodi che ci garantiscano di trovare una soluzione al problema del commesso viaggiatore
che sia sicuramente la migliore possibile.

Esempio:
Se io ho 10 città, il numero di possibili percorsi è 180.000. Solo con 10 città, per il problema del commesso
viaggiatore, ho 362.880/2, circa 180.000 possibili percorsi diversi.

 Esecuzione eccessivamente lunga, richiederebbe anni o secoli


 Problema Non Calcolabile (NP) indipendentemente dalla tecnologia
 Non si conosce un metodo risolutivo

Esempio: intelligenza artificiale

Computazioni intrattabili
Sono quelli in cui l’esecuzione sarebbe eccessivamente lunga anche per dimensioni del problema limitate (10-15
città). I problemi non trattabili vengono chiamati problemi della famiglia NP  I problemi sono intrattabili
indipendentemente dalla tecnologia che abbiamo a disposizione, anche se miglioriamo la nostra tecnologia. È
indipendente dai progressi tecnologici.
Caratteristica dei problemi intrattabili è quella di crescere o di avere insieme di possibilità particolarmente elevato.
Calcolo eseguibile in tempo più che polinomiale.
Le computazioni intrattabili hanno la caratteristica che il calcolo è eseguibile in tempo più che polinomiale,
richiedono un tempo non ragionevole

Esempio:
- permutazioni di caratteri
- n caratteri ⇒ tempo K * n!

Altro esempio di problema non trattabile che è simile a questo, i problemi non trattabili hanno la caratteristica di
crescere o di avere un insieme di possibilità particolarmente elevato.
Problema di calcolare l’esito di questa è partita:

Albero possibilità
Gli alberi sono una struttura concettuale per rappresentare una serie di
possibilità, si basano sul fatto che rappresentiamo ciascuno stato
(della nostra scacchiera), con un nodo dell’albero (è un punto), altri
nodi corrispondo ad altre situazioni.
È una rappresentazione di situazioni, può anche rappresentare le scelte
della prossima città da raggiungere. In questo albero, richiede una
mossa dell’avversario. Nella situazione iniziale, tutte le mosse sono
possibili e anche le risposte dell’avversario. Da una situazione
singola, siamo arrivati a 4 soluzioni.

In questa situazione invece, è possibile verificarla, simulando le mosse con tutte


le possibili combinazioni, come una situazione completamente vincente da parte
del rosso (?)

L’albero delle possibilità è un esempio di computazione intrattabile, non è


possibile risolvere il problema del commesso viaggiatore usando questa strategia
perché il numero di possibilità cresce.

Computazioni trattabili
Esempi:
 Contare valori in una tabella (database) n record ⇒ tempo lineare K*n
 Ordinare una serie di valori n valori ⇒ tempo K *n*log2(n)

Creatività
Un altro aspetto legato ai limiti di quello che possono fare è legato alla creatività.
Esiste un movimento artistico  arte degenerativa  cerca attraverso degli algoritmi di creare degli artefatti
artistici, tuttavia, in un algoritmo, la creatività non è del calcolatore ma è del programmatore che ha programmato
l’algoritmo per insegnare al calcolatore di generare.

Mondrian, Pollock  esempi di contenuti creati da un algoritmo, in cui la


creatività non sta nell’algoritmo ma nel fatto un programmatore ha
insegnato attraverso un algoritmo, a generare qualche cosa che è ispirato a
creazioni artistiche di autori famosi.
Attraverso alcuni aspetti non deterministici di caos, è possibile che
l’algoritmo stesso si inventi qualcosa di nuovo che possa anche dare una
sensazione estetica piacevole.
La creatività però è nascosta nell’ambito di chi ha scritto il software per
poter generare le informazioni artistiche.

Rilevatore di cicli
Abbiamo visto alcuni concetti relativi ai problemi suddividendoli in:
 Trattabili (per cui esiste un algoritmo che richiede tempo ragionevole)
Esempio: ricerca di un libro in uno scaffale, intersezione di liste, commesso viaggiatore (???????)
 Intrattabili (sono quelli per cui non c’è un algoritmo che richiede tempo ragionevole)
l’intrattabilità non ha a che fare con il fatto che non esista un algoritmo per risolversi, esiste,
ma richiederebbe troppo tempo

o Questa suddivisione si applica a dei problemi per il quale siamo in grado di trovare o determinare un
algoritmo che è in grado di risolverli  problemi calcolabili  esiste un algoritmo per risolverli, sono
suddivisibili a loro volta in queste due famiglie (trattabili, intrattabili)

o Esistono un insieme di problemi che non hanno questa caratteristica, per il quale è possibile dimostrare
che non esistono nessun algoritmo per risolverli  problemi non calcolabili  per questi problemi che
hanno un’essenza molto filosofica,

o Turing aveva individuato dei problemi che non possono essere effettivamente risolti tramite un algoritmo 
risultato oppure se continuerà a ciclare senza restituirci nessun
valore (in informatica ciclare significa continuare).

Interfaccia uomo-macchina (Capitolo 1.7-1.12)

Graphic User Interface (GUI)


Sono il modo in cui noi interagiamo con il calcolatore
 L’interazione con il calcolatore avviene tipicamente per mezzo di una interfaccia grafica o GUI
(Graphical User Interface)
 Desktop
 Finestra
 Icone
 Pulsanti
Tipi di menù
 Menu a tendina  si aprono “scendendo giù” dalla barra
 Menu pop-up  compaiono nella posizione del cursore  click con il bottone destro del mouse

Modelli per l’interazione


HCI (Human Computer Interaction), ha come ingredienti base. Comunicazione che avviene tra queste due entità.
Deve essere espressa in modo diversa tra altre entità. Trattandosi di due entità diverse, la comunicazione avviene
tramite uno strato, che viene chiamata interfaccia. Lo scopo dell’interfaccia è quello di tradurre che cosa vuole
fare l’utente. Tradurre un bisogno in azioni concrete. Concetto del sistema (a seguito del pulsante di invio) è
quella di scatenare tutta quella serie di operazioni necessarie per poter recapitare quel messaggio al destinatario
 Ingredienti base:
- L’utente
- La macchina
 Interazione: ogni comunicazione tra utente e computer, può essere diretta o indiretta
 La comunicazione avviene attraverso l’interfaccia.
 Poiché la comunicazione possa avere successo, l’interfaccia deve tradurre i concetti dell’utente in quelli
del sistema (macchina).

Terminologia dell’interazione
Nell’interazione, il focus è che cosa fanno le varie componenti dell’interazione. Gli obiettivi non sono del tutto
generici, sono stanziati in un determinato dominio applicativo (messaggistica, editing di testi, contabilità). Gli
obiettivi dell’utente non sono generici, ma hanno un contesto applicativo.

 L’utente usa il sistema interattivo per raggiungere i suoi obiettivi, nell’ambito di un certo dominio
applicativo
 Obiettivo: quello che l’utente vuole raggiungere
 Dominio: area applicativa oggetto dello studio
 Descrive concetti, competenze e conoscenze
 Intenzione: sequenza di azioni generiche che portano al raggiungimento dell’obiettivo. È il cosa voglio
ottenere.
 Compito o azione: traduzione dell’intenzione in azioni specifiche. È l’azione di questa intenzione
generica

Questo tipo di suddivisione è dovuta a Norman, che ha condensato l’interazione in un modello molto semplice,
comprende tutti i tipi di azione.

Modello di Norman
Il suo focus di analisi è sull’utente, rispetto ai modelli precedenti che erano concentrati sulle macchine. Su chi e
su quello che la persona percepisce dell’interazione.

 In questo modello l’attenzione è incentrata maggiormente sulla visione che l’utente ha della interazione
 È basato su di un ciclo di esecuzione/valutazione

Secondo il modello di Norman, l’interazione si basa su un ciclo.


Un sistema viene chiamato ciclo di valutazione/esecuzione.

Ciclo di valutazione/esecuzione
Abbiamo 2 entità: utente e sistema, l’utente ha un obiettivo (cosa voglio fare). Perché l’interazione sia ricca e
utile, c’è bisogno che l’interfaccia ci restituisca qualche informazione. L’azione è quella successiva, guardando il
messaggio che compare ad esempio nella nuvoletta su WhatsApp, l’utente osserva che è cambiato qualcosa
nell’interfaccia, che comunica all’utente il risultato dell’azione e se questo risultato è corrispondente al suo
obiettivo oppure no. A seconda di quello che è accaduto può determinare delle azioni successive oppure no.

 Esecuzione  l'utente ha un obiettivo, formula un piano d'azione e lo esegue mediante l'interfaccia


 Valutazione  l'utente osserva l'interfaccia per valutare, rispetto all’obiettivo, il risultato dell’esecuzione
determina le azioni successive.

Interfaccia come traduttore


L’interfaccia (è un traduttore, tra due diversi linguaggi) esegue “traduzioni” tra due
linguaggi:
 Linguaggio dei compiti (mentale) (task): usato per descrivere l’utente, i
suoi obiettivi, le sue azioni, etc...
 Linguaggio di base (core): usato per descrivere il sistema, il suo stato, le
sue capacità etc...

Golfi
 Golfo dell’esecuzione  differenza tra le azioni formulate dall' utente per raggiungere l'obiettivo e le
azioni permesse dal sistema. Più distante è ciò che l’interfaccia ci consente per descrivere le azioni che
abbiamo in mente, più lontani siamo dal risultato.
 Golfo della valutazione  differenza tra la rapresentazione dello stato del sistema e le aspettative
dell'utente. Cosa avviene quando ci viene dato del feedback. Golfo di valutazione ampio se non abbiamo
un feedback.

L’interfaccia è un ponte gettato sul golfo (i golfi sono intesi come due zone che sono in qualche forma sono
distinte, separate). Il golfo misura quanto è difficile per noi formulare un piano.

Esempio:
Versione vecchie di power point, non si capiva se veramente avessimo salvato, in quanto non c’è un feedback.

Errori: sviste e sbagli


 Svista (slip)
- Corretta formulazione dell’obiettivo
- Corretta formulazione dell’intenzione
- Azione sbagliata
 Sbaglio (mistake)
- Obiettivo o intenzione sbagliato

Come rimediare?
 Svista: migliorare interfaccia
 Sbaglio: bisogna fornire all’utente una migliore comprensione del sistema; riprogettazione radicale
dell’interfaccia

Progettare per l’usabilità


L’esito degli utenti ha dato con il tempo delle indicazioni su come l’interfaccia, e su come progettare l’interfaccia.
Obiettivo: garantire l’usabilità  facilità d’uso, immediatezza, minimizza gli errori fornendo delle metafore
 Principi  non sono obbligatori, hanno una certa consistenza, ma hanno comunque un certo livello di
prescrizione, è bene seguirli
 Standard  sono prescrittivi, vanno seguiti
 Linee guida
 Euristiche
 Design Pattern  sono dei semi-lavorati, non sono delle regole vere e proprie

Le ultime tre sono regole che non sono così prescrittive, sono delle regole di buonsenso, regole empiriche nate
dall’osservazione nella progettazione e nell’interazione con l’interfaccia, hanno la caratteristica di guidarci ma
non obbligarci a fare qualcosa.

Regole di design
Sono delle regole che hanno come obiettivo non quello di normare una cosa, quindi irrigidire il progettista su certi
modelli di scrittura dell’interfaccia utente, bensì di guidarlo nelle scelte progettuali (scelta del colore, di un’icona).
Sono regole basate su dei principi che sono stati condensati nel tempo, in 50 anni di studio.
Guidano il progettista non con lo scopo di limitarne la creatività, bensì di dargli la consapevolezza che
determinate scelte possono essere fallimentari, e che perciò a volte è bene aderire a certe regole.
La verifica empirica viene fatta attraverso sia degli aspetti informatici (esempio: posso realizzare certi tipi di
interazione solo se il sistema me lo consente, su certi tipi di pc in cui lo schermo non è tattile, non posso usare
un’interazione tattile, ma dovrò trovare un altro modo, ad esempio il mouse  perciò si può dire che le mie
opzioni sono limitate dal sistema)
 Le regole di design forniscono ai progettisti la capacità di stabilire le conseguenze sull’usabilità delle loro
decisioni di progetto
 Servono per limitare la gamma di opzioni di design tra cui scegliere (aspetto informatico spiegato sopra)
 Ci sono altri aspetti invece, che sono relativi alle scienze sociali. Servono per applicare la teoria
(psicologica, ergonomica, sociologica, informatica) alla pratica di progettazione (senza che il
progettista sia esperto della teoria)
Le regole di design si differenziano in base a:
 Autorità (prescrittività):
- Obbligo (alta)
- Suggerimento (bassa)
 Generalità:
- Campo di applicabilità:
o In tutte le situazioni (alta) o
o Solo in alcune (bassa)

 Livello di astrazione:
- Vicino (basso) o lontano (alto) al dettaglio di progetto
- Varia inversamente alla specificità

In base a questa tassonomia, le regole vengono anche definite in modo diverso, sottoforma di principi (non
obbligatori, sono guide), di solito derivano da logiche computazionali.

 PRINCIPI  bassa autorità, alta generalità, astratte

Derivano dalla conoscenza di teorie psicologiche, computazionali, sociali e sono indipendenti dalla tecnologia

 STANDARD  alta autorità, limitata applicabilità, specifiche. Sono delle regole assolutamente
prescrittive, sono necessarie per uniformare l’interfaccia, non nel senso assoluto, ma in senso relativo al
sistema (IOS). Obiettivo  fornire qualcosa di omogeneo

Ci si può limitare ad attenervisi

 LINEE GUIDA  bassa autorità, alta generalità, specifiche. Regole con basso livello di prescrittività

Orientate alla tecnologia. Poiché generali, è importante conoscere il fondamento teorico

Principi per l’usabilità (PRINCIPI)

 Apprendibilità: grado di facilità con cui l’utente novizio impara e diventa produttivo. Il sistema
dovrebbe consentire all’utente di diventare produttivo, di imparare ad usarlo in modo efficace. Che il
sistema sia autoesplciativo.
 Flessibilità: molteplicità dei modi con cui l’utente e il sistema si scambiano informazioni.
 Robustezza: livello di supporto fornito all’utente nel raggiungere e valutare gli obiettivi. Quando
previene gli errori. (es. salva con nome, se noi salviamo un file con lo stesso nome, il sistema ci avverte
che ce ne uno già presente)

Ciascuno di questi principi, fondamentali per la progettazione, sono principi che poi si stanziano in linee guida,
standard, design pattern, sono a loro volta suddivisibili in ulteriori specifiche.
Esempio: un sistema è attendibile se ha tutte o alcune di queste caratteristiche:

APPRENDIBILITÀ

 Predicibilità (ha aspetti in comune con la coerenza). Aspettative


- Determinare effetto azione futura in base al passato
 Sintetizzabilità
- Effetto delle operazioni passate sul presente
 Familiarità
- Applicare conoscenze di altri domini
 Generalizzabilità
- Estendere conoscenze di una interazione ad altre (Copia-incolla/taglia-incolla)
 Coerenza
- Similarità di comportamento in situazioni simili. È la sorpresa a non avere avuto un comportamento
simili in situazioni analoghe. La prevedibilità è il contrario, io mi aspetto che se nel mio modello
mentale ho una serie di azioni, e l’ho già fatto prima, almeno parte di quella serie di azioni sia coesa.

Predicibilità
Ci sono 2 aspetti della prevedibilità che sono legati sia alla capacità di prevedere cosa avverrà quando faccio
un’operazione. Altro aspetto oltre quello di esecuzione (prevedibilità delle azioni eseguite), anche quello di
valutazione (feedback).
 L’utente non risponde bene alle sorprese
 Un’ interfaccia è prevedibile se:
- La conoscenza della storia delle precedenti interazioni è sufficiente per stabilire il risultato delle future
interazioni
 Vari livelli:
- Contingente: data la schermata attuale
- Storica: date altre schermate precedenti
 Principio centrato sull’utente: la macchina è sempre deterministica
 Due forme:
- Capacità di prevedere l’effetto delle azioni
- Visibilità delle operazioni: capacità di individuare quali azioni sono consentite

Sintetizzabilità
È la capacità che l’utente ha di stimare delle azioni che non ha mai fatto.
 Capacità dell’utente di stimare l’effetto delle operazioni precedenti sullo stato corrente
 Serve alla creazione di un modello mentale della UI (Interfaccia Utente)  Trasparenza  fornire un
rapporto informativo visibile del cambiamento di stato della macchina
 Può essere:
- Immediata (Es. spostamento file in interfacce WIMP)
- Differita (Es. spostamento file in interfacce a linea di comando) (aspettare il risultato)
Esempio: login, il sistema deve farmi vedere che il login è avvenuto, non deve darmi la stessa interfaccia di prima

Familiarità
Ha anche a che fare con la familiarità, la differenza è il contesto di riuso delle conoscenze o del modello mentale.
Ha a che fare con l’analogia.
 Anche i neofiti hanno esperienze di interazione in domini diversi:
- Col mondo reale
- Con altre interfacce
 La familiarità  misura la correlazione tra la conoscenza precedente e la conoscenza necessaria per
iniziare l’interazione  presumibilità
 Sfrutta l’analogia (Es. word processor è familiare a chi ha esperienza con la macchina da scrivere)
 Le metafore generano interfacce familiari

Metafora del desktop


È come stare ad una scrivania (archiviare lavori, organizzare gli archivi in raccoglitori, usare applicazioni)
Somiglia ad oggetti reali (p.e. calcolatrice)
Programmi per specifici computer

Affordance
La familiarità non è un concetto che si applica solo tra uomo e macchina, è un concetto più generale che si
chiama affordance  proprietà di un oggetto di fare o suggerire come utilizzarlo, ci fa sapere già da sé come
interagire o manipolarlo, di solito è legato ad un oggetto fisico (maniglia della porta).
L’idea dell’affordance è quella che l’oggetto abbia una forma che suggerisce già come interagire con l’oggetto.
 La familiarità è collegata alla nozione di affordance: proprietà intrinseche di un oggetto che suggeriscono
come manipolarlo  interagire
 L’aspetto dell’oggetto stimola familiarità con il suo comportamento
 “La forma segue la funzione”

Generalizzabilità
 Generalizzabilità  è la misura in cui la conoscenza acquisita per il raggiungimento di un obiettivo
passato è applicabile al raggiungimento di un nuovo obiettivo contingente.
 La generalizzazione è una caratteristica naturale dell’uomo (ragionamento induttivo)
 Può essere presente: all’interno della stessa applicazione interattiva o tra applicazioni simili (esempio.
taglia e incolla)

Coerenza
È ciò che sarebbe richiesta all’interfaccia, è una coerenza interna. Elementi che si comportano in modo simile.
 Modello concettuale (o metafora)
 Esperienza passata del mondo reale (familiarità)
 Esperienza passata con lo stesso sistema o simili (generalizzabilità)
 Non è un principio ben definito, qualcuno lo vorrebbe porre su un
livello diverso (meta principio)
 È il principio: più menzionato, più pervasivo, quindi difficile da
definire
 Gli elementi dell’interfaccia come i pulsanti o gli slider sono utilizzati in modo coerente: aspetto e
funzionamento sono simili

FLESSIBILITÀ
Un sistema è flessibile se mi da modi diversi per interagire con il sistema che sto considerando
 Iniziativa di dialogo
- Chi guida l’interazione
 Multi-threading
- Più di un compito alla volta, capacità del sistema di svolgere più azioni contemporaneamente, si può
ritenere flessibile, più ha questa capacità, più è flessibile
 Migrablità dei compiti
- Compiti che può svolgere il computer/o l’utente.
 Sostitutività
- Equivalenza di valori in input e output che io do al sistema, a seconda del contesto generale
 Personalizzazione
- Modificabilità dell’interfaccia. Quanto io posso adattare l’interfaccia alle mie esigenze

Iniziativa di dialogo
Il dialogo è qualche cosa che si differenzia in 2 macrocategorie.
 Interazione come dialogo tra partner
 Quale partner ha l’iniziativa dell’interazione?
 Si differenzia tra:
- System pre-emptive (preamption  significa poter terminare un’attività senza che questa sia finita). Il
sistema decide “non vado avanti con l’attività che stavo facendo” (es. l’utente chiede di salvare un file,
non c’è più spazio su disco, il programma non salva il file, quindi non realizza l’azione che stava
facendo, ma da un messaggio di errore). Il system pre-emptive è dato dal fatto che l’azione non è
terminata, è il sistema che l’ha bloccata perché non poteva eseguirla.
o Rigidità (non posso salvare)
o Sicurezza garantita

- User pre-emptive  l’utente sta facendo una operazione che richiedete tempo (scaricare un file da
teams), non sappiamo quando è stato caricato perché l’interfaccia rimane uguale, l’utente, che si è
stufato annulla l’operazione che stava facendo.
o Flessibilità (però se mi dimentico che non ho finito di scaricare il file e interrompo l’azione, il
risultato non sarà quello atteso
o Aumenta la probabilità che l’utente si dimentichi dei compiti che sono stati iniziati e non ancora
completati
Entrambi gli stati di dialogo è un’iniziativa che non porta necessariamente il dialogo al compimento dell’azione
che era prevista, proprio per queste 2 possibilità di poter interrompere l’azione, entrambi le interruzioni hanno i
lor pro e i loro contro.

Multi-threading
Ha a che fare con il fatto che più compiti sono fattibili simultaneamente (vedere un video e chattare allo stesso
tempo). Sebbene il sistema stia facendo 2 cose contemporaneamente,
 Thread (filo): interazione dedita ad un solo compito
 Multithreading: capacità di supportare interazioni relative a più compiti nello stesso momento
 Concorrente
 Comunicazione simultanea riguardante compiti separati (es. bip della posta mentre uso powerpoint)
 Interfogliato (interleaved)
 Sovrapposizione temporale dei compiti, ma in ciascun istante uno solo è attivo (es. Finestre WIMP) 
Multimodalità

Mirabilità dei compiti


 Possibilità di trasferimento di compiti tra sistema e utente
 Un compito “interno” ad uno dei due partner può diventare interno all’altro oppure condiviso
Esempio: controllo ortografico

Sostitutività
Ha a che fare con la sfaccettatura con cui la stessa informazione verrà visualizzata all’utente. L’interfaccia
sostitutiva mi consente di giocare con questa natura dell’informazione in modo distinto.

Richiede che valori equivalenti possano essere sostituiti l’uno con l’altro
 Si definisce rispetto:
- All’input
o Unità di misura
o Formule invece di valori
- All’output ( molteplicità delle rappresentazioni)
o Flessibilità nella presentazione dello stato (esempio. grafico + numero)
 Pari opportunità: si perde la distinzione tra input e output: “se riesci a vederlo, lo puoi usare”
Esempio: Foglio elettronico

Personalizzabilità
Ha a che fare con il fatto di modificare l’interfaccia, è qualche cosa che è richiesto da programmi molto complessi
ed evoluti (lightroom).
 Modificabilità dell’interfaccia: da parte dell’utente (adattabilità) o del sistema (adattività)

ROBUSTEZZA
È il principio per cui il sistema risponde in modo coerente a possibili errori o sviste, a possibili mal
funzionamenti, non necessariamente un errore dell’umano ma anche del sistema.
 Osservabilità
- Valutare lo stato interno dall’output
 Ripristinabilità
- Correzione errori
 Velocità di risposta
- Velocità di comunicazione
 Conformità dei compiti
- Le funzionalità sono adeguate al compito

Osservabillità
 Permette all’utente di valutare lo stato interno del sistema tramite la sua rappresentazione percettibile
fornita dall’ l’interfaccia. valutazione esecuzione
 Fase di valutazione del ciclo di Norman
 Può essere ottenuta attraverso altri principi:
- Visibilità dell’operazione (già vista)
- Navigabilità
- Default
- Raggiungibilità
- Persistenza

Navigabilità  consente all’utente di esaminare lo stato interno del sistema tramite la visualizzazione parziale che
ne fornisce l’interfaccia
 Lo stato interno del sistema è complesso: una visualizzazione globale non avrebbe senso
 Una buona navigabilità è ottenuta munendo l’interfaccia di comandi di visualizzazione relativi al compito
che si sta svolgendo

Default  assistono l’utente informandolo dello stato del sistema con un ricordo passivo
Di due tipi:
 Statico: i valori di default vengono fissati in inizializzazione e non cambiano più
 Dinamico: i valori possono cambiare

Raggiungibilità  possibilità di visitare (raggiungere) tramite la UI tutti gli stati osservabili del sistema

Persistenza  la durata dell’effetto di un atto comunicativo e la capacità dell’utente di usare quell’effetto


Esempio. notifica con: segnale visivo (persiste) o suono (non persiste).

Ripristinabilità
Capacità di raggiungere l’obiettivo desiderato dopo un errore
 Due direzioni di ripristino:
- Forward
o Accettazione dello stato corrente
o Negoziazione dello stato verso l’obiettivo desiderato
- Backward  abbiamo fatto un’azione che non volevamo fare
o Rifiuto della situazione attuale
o Annullamento all’indietro delle operazioni effettuate fino ad uno stato sicuro
 Principio di sforzo proporzionato: se è difficile annullare un’azione, dovrebbe essere altrettanto difficile
eseguirla

Velocità di risposta (legata all’osservabilità)


 Misura la rapidità di comunicazione tra sistema e utente
 Tempo di risposta: intervallo di tempo necessario perché il sistema manifesti i cambiamenti di stato
 Sono desiderabili durate brevi e tempi di risposta immediati
- Per tempi di risposta non immediati, necessari feedback informativi
 Stabilità del tempo di risposta: tempi di risposta costanti a parità di risorse computazionali impegnate dal
compito

Conformità dei compiti


 Misura in cui i servizi offerti dal sistema supportano i compiti utente
 Ha a che fare con la fase di esecuzione del ciclo di Norman
 Completezza dei compiti
 Il sistema implementa tutti i servizi necessari ai compiti previsti? valutazione esecuzione
 Adeguatezza dei compiti
 Lo fa come lo intende l’utente?
 Grado di comprensione che l’utente ha dei servizi

STANDARD
 Sono stabiliti da organismi nazionali e internazionali
- Sono relativi ad:
o Hardware:
 Intersecano fisiologia, ergonomia
 Producono dettami ben precisi, applicabili
o Software:
 Intersecano psicologia, scienze cognitive
 Producono dettami vaghi, non facili da interpretare
 Agenzie:
- BSI (British Standard Institution)
- ISO (International Organization for Standardization)
- IEEE

Esempio: ISO9241, specifica d’usabilità:

 L’efficacia, l’efficienza e la soddisfazione con cui utenti specifici raggiungono determinati obiettivi in
particolari ambienti:
- Efficacia: la precisione e la completezza con cui utenti specifici possono ottenere determinati
risultati in particolari ambienti
- Efficienza: le risorse impiegate rispetto alla precisione e alla completezza degli obiettivi raggiunti
- Soddisfazione: la comodità e l’accettabilità del sistema di lavoro per i suoi utenti e altre persone
influenzate dal suo uso

LINEE GUIDA
 Vengono incontro alla difficoltà di produzione di standard di costruzione di prodotti software
 Rappresentano la maggior parte delle regole di design per i sistemi interattivi
 Coinvolgono tutte le fasi della progettazione dell’interazione
 Le linee guida più astratte servono per i documenti dei requisiti
 Le linee guida più specifiche servono per la progettazione dettagliata
 Definiscono, tra l’altro, gli stili di interazione

Esempio: linee guida di Apple:


- Le applicazioni efficaci sono coerenti sia al loro interno che l’una con l’altra
- Ordine “nome-verbo”: prima si selezione l’oggetto (nome) e poi l’azione da compiere (verbo)
- L’utente, non il computer, inizia e controlla tutte le azioni

Le regole d’oro e le euristiche


 I principi e le linee guida enunciati sinora richiedono un certo impegno al progettista per tenere traccia
delle linee guida o interpretare i principi.
 Alternativamente, si possono usare una serie di euristiche (lista di controllo, sintesi di consigli):
- Norman, 7 principi
- Shneidermann, 8 regole
- Nielsen, 10 euristiche

7 Principi di Norman
1. Bisogna usare sia la conoscenza presente nel mondo sia la conoscenza mentale
 Conoscenza incorporata in attività, processi, relazioni sociali, artefatti fisici (affordance) del
mondo reale
 Modello mentale
2. Si deve semplificare la struttura dei compiti
 Per evitare carico cognitivo e STM
3. Si rendano le cose visibili: colmare i golfi di esecuzione e valutazione
4. Le corrispondenze vanno chiarite (fornire corrisp. naturali)
 Quale interruttore accende quale luce?
5. Si sfrutti il potere dei vincoli
 Eseguire solo l’azione corretta nel modo corretto
 Fisici, logici, culturali
6. Bisogna progettare per gli errori
7. Quando tutto il resto non ha successo, si creino degli standard
 Se le corrispondenze sono arbitrarie, vanno standardizzate
Le 8 regole d’oro di Schneiderman
 Preservare la coerenza in sequenze di azioni, formato, terminologia, uso dei comandi e così via
 Consentire agli utenti abituali di usare comandi rapidi , come abbreviazioni, speciali sequenze di tasti
e macro
 Offrire un feedback informativo per ogni azione dell’utente, a un livello adatto all’estensione
dell’azione
 Progettare dialoghi provvisti di chiusura, in modo che l’utente sappia quando ha finito un compito
 Offrire una prevenzione e una gestione semplice degli errori , in modo che si impedisca la nascita di
errori, e, se li fanno, si offrano loro istruzioni chiare per correggerli
 Permettere un’inversione semplice delle azioni per tranquillizzare l’utente e controllare il sistema, che
risponde alle sue azioni
 Supportare il controllo interno in modo che sia l’utente a controllare il sistema, che risponde alle sue
azioni
 Ridurre il carico della memoria a breve termine mantenendo semplici le visualizzazioni, sfruttando le
visualizzazioni multi-pagina e fornendo all’utente il tempo necessario per imparare la sequenze delle
azioni

10 euristiche di Nielsen
1) Rendere visibile lo stato del sistema
2) Creare relazioni tra il sistema ed il mondo reale
3) Abilitare il controllo dell’utente e lasciargli libertà
4) Essere coerenti e seguire gli standard
5) Aiutare l’utente a riconoscere, diagnosticare e correggere gli errori
6) Prevenire gli errori
7) Aiutare il riconoscimento piuttosto che il ricordo
8) Garantire flessibilità ed efficienza d’uso
9) Adottare un design esteticamente accattivante e minimalista
10) Fornire aiuti ed istruzioni

I pattern di interazione
 Sono dei metodi per poter trasformare i casi di successo in processi ripetibili
 Estraggono i dettagli essenziali dai progetti di successo in modo che possano essere applicati in nuove
soluzioni
 Un pattern è:
- Una soluzione parzialmente specificata a un problema ricorrente all’interno di un contesto
specifico
- Tratta un problema che i progettisti incontrano spesso e fornisce un “inizio di soluzione”

Progettare per l’esperienza


Non basta che l’utente possa usare il sistema, egli deve volerlo usare.
Esperienza  Molti siti internet consentono di fare acquisti on- line,
ma questo è veramente shopping? Quali sono gli elementi
dell’esperienza dello shopping che gli acquisti on-line non riescono a
replicare?

Flow experience
 The concept of Flow Experience (Csikszentimihalyi, 1990) originated in studies of happiness, enjoyment,
and play.
 "A holistic sensation present when we act with total involvement."
 Flow arises from a balance of ability and responsibility, control and uncertainty, skill and challenge.
 Consciousness is greater in flow than in panic (challenge > skill) or boredom (skill > challenge). In both
panic and boredom, consciousness reverts to automatic or automatized actions.
 Flow emerges in circumstances which are perceived as both problematic and soluble.
Italiano:
- Il concetto di Flow Experience (Csikszentimihalyi, 1990) ha origine negli studi sulla felicità, il
divertimento e il gioco.
- "Una sensazione olistica presente quando agiamo con totale coinvolgimento."
- Il flusso nasce da un equilibrio di abilità e responsabilità, controllo e incertezza, abilità e sfida.
- La coscienza è più fluida che nel panico (sfida > abilità) o nella noia (abilità > sfida). Sia nel panico
che nella noia, la coscienza ritorna ad azioni automatiche o automatizzate.
- Il flusso emerge in circostanze percepite come problematiche e solubili.

Elements of Flow include:


- Personal transcendence. sense of self as separate is gone, little distinction between self and
environment or self and activity
- Intrinsic rewards. Activities are done for their own reward, not goal-oriented.
- Involvement. There is full involvement in the present moment and activity.

Italiano:
- Trascendenza personale. il senso di sé come separato è svanito, poca distinzione tra sé e ambiente o
sé e attività
- Ricompense intrinseche. Le attività vengono svolte per la propria ricompensa, non per obiettivi.
- Coinvolgimento. C'è un pieno coinvolgimento nel momento e nell'attività presenti.

Zone of proximal development (Zona di sviluppo prossimale)


 Vygotsky (1978) called "zone of proximal development" (ZPD) the difference between what a child can
do with help and what he or she can do without guidance.
 ZPD is the set of knowledge that the learner has the ability to learn currently but does not yet understand:
things that are "just out of reach".
 ZPD has also been expressed as the area in which students are challenged to learn, but learning is not too
difficult nor too easy.
Italiano:
 Vygotsky (1978) ha definito "zona di sviluppo prossimale" (ZPD) la differenza tra ciò che un bambino
può fare con l'aiuto e ciò che può fare senza guida.
 ZPD è l'insieme di conoscenze che lo studente ha la capacità di apprendere attualmente ma non ancora
comprende: cose che sono "appena fuori portata".
 ZPD è stato anche espresso come l'area in cui gli studenti sono sfidati ad apprendere, ma l'apprendimento
non è né troppo difficile né troppo facile.

Design emozioanle (Norman)


 Le emozioni sono parte del processo cognitivo
 Soggetti privi del sistema emozionale sono incapaci di
prendere decisioni (A. Damasio)
 Gli oggetti rappresentano per l’umano qualcosa di più della
funzione pratica (utilità)
 Un oggetto usabile non è necessariamente piacevole da usare
 Il progettista, fatta salva la usabilità, si deve concentrare
anche sulle emozioni che l’oggetto suscita.

Gestione del valore


 Un utente userà un sistema (o un oggetto) se il valore (percepito) che ricava dall’uso supera il costo
 Valore e costo non necessariamente monetari:
- Valori: tempo, funzione, ecologia, etica sociale, divertimento, ...
- Costi: tempo, sforzo per apprendere, fatica, ...
 Le abitudini costituiscono un’eccezione

Potrebbero piacerti anche