Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione all'Informatica: Architettura del Calcolatore, Algoritmi e Reti, Appunti di Elementi di Informatica

Una panoramica introduttiva all'informatica, coprendo concetti fondamentali come l'architettura del calcolatore, gli algoritmi, le reti informatiche e i sistemi informativi. Esplora i diversi tipi di reti, le topologie di rete e i livelli di astrazione dei database. Anche concetti di visione artificiale e deep learning, fornendo una breve introduzione alla regressione lineare e alla calibrazione.

Tipologia: Appunti

2024/2025

Caricato il 01/04/2025

filippo-zanangeli
filippo-zanangeli 🇮🇹

2 documenti

1 / 27

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Informatica
Architettura calcolatore
L’informatica è la scienza che studia il trattamento automatico dei dati tramite computer. I dati in
ingresso sono definiti input mentre quelli in uscita (post trattamento) sono definiti output e sono
stati elaborati tramite un algoritmo, ovvero un insieme di istruzioni prestabilite che permettono,
seguendo un ordine dato, di arrivare al risultato voluto.
Il computer è un rapido esecutore di algoritmi prestabiliti ed è composto da due componenti: -
Hardware, gli elementi fisici -Software, insieme di istruzioni per farlo funzionare.
Macchina di Von Neumann
È l’architettura teorizzata più simile ad un computer moderno e si costituisce da tre parti:
-CPU (central processing unit) che gestisce comandi istruzioni tra cui il prelievo di esse (Fetch). Essa si
compone di due componenti; l’unità di controllo che gestisce la sequenza delle operazioni tramite un
clock che regola la frequenza delle operazioni in un secondo (è un segnale sincronizzante del sistema
misurato in Hz). L’altra componente è l’unità aritmetica logica (ALU) che esegue operazioni
matematiche
-MEMORIA dove i dati sono organizzati in celle in modo monodimensionale (ogni dato ha una cella
con indirizzo). Le operazioni possibili sono di lettura (non distruttiva cella) e scrittura (distruttiva in
quanto il vecchio contenuto si distrugge).
Essa è divisa in due parti:
-principale (RAM), memoria volatile nella quale il tempo di accesso è indipendente da dove i dati
sono salvati. In essa sono caricati i programmi in esecuzione e si resetta con lo
spegnimento del calcolatore. In essa rientrano anche i registri.
-secondaria, costituita per i dati permanenti (memoria non volatile) ed i più comuni sono elementi
come l’Hard Disk o la penna USB
-INPUT/OUTPUT che corrispondono alle odierne periferiche che gestiscono le porte interfaccia con
l’utente
Rappresentazione dati calcolatore
Esistono diversi sistemi numerici tra cui quelli non posizionali (num, romani), nei quali l’ordine in cui
scrivo i valori è indipendente dal valore finale, oppure a numerazione posizionale in cui il valore della
cifra cambia in base alla posizione.
Vengono definite delle basi per rappresentare i sistemi di numerazione posizionali, quella utilizzata
dal calcolatore è 2, ovvero il formato binario. La codifica per i caratteri (codice ASCII) avviene tramite
base ottale, mentre gli indirizzi di memoria vengono definiti tramite base esadecimale.
L’unità atomica del calcolatore è il bit, una sequenza di 8 bit è detta byte.
Supponendo di aver a disposizione 4 byte (bit indicati da 0 a 31 da destra a sinistra poiché la cifra
significativa importante è quella a sinistra) il primo bit viene utilizzato per definirne il segno e i
restanti 31 per codificare il modulo del numero.
Per cercare una sola rappresentazione dello zero in codifica binaria si è creato il “completamento a
due” nel quale la rappresentazione di un num intero viene svolta tramite 3 passaggi (1. Forma binaria
numero 2. Inversione di tutti i bit 3. Addizione valore 1)
Le operazioni tra num binari vengono svolte nello stesso modo tenendo a mente la base 2
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b

Anteprima parziale del testo

Scarica Introduzione all'Informatica: Architettura del Calcolatore, Algoritmi e Reti e più Appunti in PDF di Elementi di Informatica solo su Docsity!

Informatica

Architettura calcolatore

L’informatica è la scienza che studia il trattamento automatico dei dati tramite computer. I dati in ingresso sono definiti input mentre quelli in uscita (post trattamento) sono definiti output e sono stati elaborati tramite un algoritmo, ovvero un insieme di istruzioni prestabilite che permettono, seguendo un ordine dato, di arrivare al risultato voluto. Il computer è un rapido esecutore di algoritmi prestabiliti ed è composto da due componenti: - Hardware, gli elementi fisici -Software, insieme di istruzioni per farlo funzionare.

Macchina di Von Neumann

È l’architettura teorizzata più simile ad un computer moderno e si costituisce da tre parti: -CPU (central processing unit) che gestisce comandi istruzioni tra cui il prelievo di esse (Fetch). Essa si compone di due componenti; l’unità di controllo che gestisce la sequenza delle operazioni tramite un clock che regola la frequenza delle operazioni in un secondo (è un segnale sincronizzante del sistema misurato in Hz). L’altra componente è l’ unità aritmetica logica (ALU) che esegue operazioni matematiche -MEMORIA dove i dati sono organizzati in celle in modo monodimensionale (ogni dato ha una cella con indirizzo). Le operazioni possibili sono di lettura (non distruttiva cella) e scrittura (distruttiva in quanto il vecchio contenuto si distrugge). Essa è divisa in due parti:

  • principale (RAM), memoria volatile nella quale il tempo di accesso è indipendente da dove i dati sono salvati. In essa sono caricati i programmi in esecuzione e si resetta con lo spegnimento del calcolatore. In essa rientrano anche i registri.
  • secondaria , costituita per i dati permanenti (memoria non volatile) ed i più comuni sono elementi come l’Hard Disk o la penna USB -INPUT/OUTPUT che corrispondono alle odierne periferiche che gestiscono le porte interfaccia con l’utente

Rappresentazione dati calcolatore

Esistono diversi sistemi numerici tra cui quelli non posizionali (num, romani), nei quali l’ordine in cui scrivo i valori è indipendente dal valore finale, oppure a numerazione posizionale in cui il valore della cifra cambia in base alla posizione. Vengono definite delle basi per rappresentare i sistemi di numerazione posizionali, quella utilizzata dal calcolatore è 2, ovvero il formato binario. La codifica per i caratteri (codice ASCII) avviene tramite base ottale, mentre gli indirizzi di memoria vengono definiti tramite base esadecimale. L’unità atomica del calcolatore è il bit, una sequenza di 8 bit è detta byte. Supponendo di aver a disposizione 4 byte (bit indicati da 0 a 31 da destra a sinistra poiché la cifra significativa importante è quella a sinistra) il primo bit viene utilizzato per definirne il segno e i restanti 31 per codificare il modulo del numero. Per cercare una sola rappresentazione dello zero in codifica binaria si è creato il “completamento a due” nel quale la rappresentazione di un num intero viene svolta tramite 3 passaggi (1. Forma binaria numero 2. Inversione di tutti i bit 3. Addizione valore 1) Le operazioni tra num binari vengono svolte nello stesso modo tenendo a mente la base 2

Per rappresentare un numero razionale si può utilizzare la notazione a virgola fissa decidendo quante cifre per la parte intera e per la parte decimale, tale metodo non garantisce precisione in calcoli scientifici. Sì utilizza quindi la notazione in virgola mobile. Dato un numero reale V viene definita una base B e un numero naturale n e si rappresenta V come somma di due contributi. In un calcolatore viene utilizzata una forma approssimata la quale mantiene solo la parte V=m x Be eliminando il resto (frazione troncata). Si toglie il resto perché il numero di cifre deve essere noto e fisso al calcolatore. È stato istituito uno standard IEEE-754 , nel quale si utilizza il formato floating point con 32 bit ( segno, 8 esponente, 23 mantissa)

Tabella ASCII

Rappresentazione dei caratteri tramite un byte per ogni carattere con 256 combinazioni possibili ( alla otto).

Memoria elaboratore

Anche l’indirizzo di memoria di un dato è codificato in binario ed a seconda della lunghezza di esso capisco se il dispositivo ha più o meno memoria. La minima unità di memoria indirizzabile è detta parola e solitamente sono 4 o 8 byte.

Dispositivi input-output

Permettono interazione tra utente e macchina, l’input coincide con l’immissione dei dati ad esempio da tastiera, mentre l’output è l’emissione dei risultati come una stampante. I dispositivi hanno almeno 3 componenti:

  • parte visibile, -controller, coordina trasferimento dati tra cpu, memoria e dispositivo -driver, parte software (sistema operativo) Le componenti comunicano tra loro tramite dei bus, dei quali ne esistono 3 categorie: -dei dati (bidirezionale) -degli indirizzi (unidirezionale) per indicare alla memoria dove leggere i dati -di controllo (bidirezionale) per coordinare operazioni e inviare comandi alla memoria

I programmi

Il programma cablato è un’unità di esecuzione che svolge un unico compito specifico, mentre il programma memorizzato viene caricato (dati e istruzioni) momentaneamente sulla memoria RAM permettendo anche l’esecuzione di diversi programmi. Si cerca di trasformare l’indirizzo in modo monodimensionale come la memoria e le istruzioni di un programma sono salvate in celle adiacenti per facilitare l’’elaboratore.

Linguaggi di programmazione

I pc utilizzano il binario ma noi scriviamo in linguaggi di programmazione che hanno un lessico (parole, operazioni elementari) e una grammatica (regole lessicali) Si distinguono in alto livello (come il C, con grammatica vicina a noi) e basso livello (assembly, più vicini al calcolatore) I linguaggi di basso livello si dividono in:_ -macchina, sequenze di 1 o 0 -linguaggi assemblativi, il quale definisce le operazioni elementari disponibili sul calcolatore. Ogni operazione è definita con un codice operativo ed un eventuale indirizzo di memoria simbolico. Esso dipende dallo specifico calcolatore I linguaggi di alto livello sono indipendenti dal calcolatore e sono in larga misura universali. Risulta necessario quindi un traduttore che serve all’’elaboratore per capire la nostra scrittura. Esistono due modalità di traduttore:

  • compilazione , nella quale un compilatore prende il linguaggio ad alto livello e lo traduce in binario per farsì che il calcolatore possa eseguire le istruzioni
  • interpretazione , nella quale un interprete esegue e traduce il linguaggio ad alto livello man mano che va avanti all’eseguire di ogni istruzione

Sistema operativo

Gli obiettivi principali di un sistema operativo sono: -l’astrazione, ovvero utilizzare il computer senza avere a che fare con l’hardware –la semplificazione che consiste nella facilità di programmazione rispetto all’hardware -virtualizzazione, S.O. Permette di accedere ai programmi in modo indipendente dall’hardware dividendone le risorse in modo ordinato e dedicando per ogni programma un’immagine dedicata

Funzioni

Esso fornisce l’ambiente per l’esecuzione dei programmi.

  • gestione del processore- Si occupa della creazione/terminazione dei processi (programma in esecuzione). Si occupa anche della schedulazione (ordine dei processi) e della sincronizzazione (processi contemporaneamente).
  • gestione memoria centrale- I processi, per essere eseguiti, devono essere caricati nella RAM e il S.O. Si occupa di caricare/togliere memoria per la loro esecuzione. Esso si occupa anche della protezione della RAM
  • gestione delle periferiche- Si occupa di configurare/inizializzare/proteggere le varie periferiche presenti e garantisce omogeneità tra hardware (funzione in modo analogo per ogni dispositivo).
  • gestione del file system- La reale organizzazione in celle della memoria viene nascosta dal sistema di cartelle/file del S.O.. Esso permette varie operazioni come scrittura, creazione, cancellazione, lettura, ricerca, copia, salvataggio e protezione dei file.
  • gestione dell’interfaccia utente- Si occupa dell’interazione con l’utente e processi. Le interfacce possono essere di diversi tipologie; tra di esse vi sono le interfacce grafiche (ciò che vediamo) e le interfacce a riga di comando (interpreti di comandi o shell)
  • rilevamento d’errori- È uno dei compiti fondamentali del S.O., esso deve cercare di individuare eventuali errori nel dispositivo o CPU. Per ogni errore è necessario una giusta azione di recovery per ripristinare il corretto funzionamento. Tradizionalmente erano programmati in linguaggio assembly, mentre al giorno d’oggi sono programmabili con linguaggi d’alto livello per garantirne flessibilità e mantenibilità per garantirne la gestione e la correzione di eventuali errori. Il sistema deve essere configurato in base alle caratteristiche della macchina utilizzata, visto che essi possono essere eseguiti su più macchine diverse tra loro, seguendo diversi parametri basati soprattutto sull’hardware come CPU e memoria.

Avvio (boot) del SO I

  1. Accensione
  2. BIOS (Basic Input Output System) – si inizializza la CPU, periferiche e RAM
  3. Bootstrap program – si carica il kernel (collegamento tramite S.O.-hardware, e parte principale del S.O.)- si carica il S.O. E si esegue
  4. Controllo del sistema da parte di S.O. La ROM è utilizzata per memorizzare le istruzioni fondamentali dell’avvio ed è progettata affinché i suoi contenuti siano programmati solo durante la fabbricazione. In hardware più limitati il S.O. Si trova in memorie ROMlike, lente, costose e difficilmente modificabili. In genere il S.O. È nella parte chiamata Bootblock del disco ed il Bootstrap è salvato nella ROM. Il BIOS attiva le periferiche, poi il Bootstrap carica il S.O. Conoscendone la posizione.

I programmi di sistema

Essi sono il contatto tra l’utente e il S.O. Essi forniscono visione comune di S.O. Accedendone alle funzioni. Essi forniscono anche un ambiente per la gestione delle risorse e lo sviluppo di applicazioni. Il software (sw) può essere applicativo e “di base” (applicazioni già presenti per gestione risorse). Il sw non accede direttamente alle risorse fisiche e il sw utente è eseguito con la modalità utente della CPU, la quale impedisce accessi alle risorse fisiche e manomissioni del S.O. Il S.O., invece, può accedere direttamente alle risorse fisiche se eseguito con la CPU in kernel mode.

Struttura di un S.O.

-struttura monolitica- L’architettura dell’intero S.O. opera all’interno dello spazio kernel. Presenta numerose problematiche tra cui manutenzione difficile (bisogna tener conto dell’hardware presente), vulnerabilità agli attacchi poiché esiste un’unica modalità che accede direttamente al kernel. Adatta a sistemi piccoli e limitati come MS-DOS (non ha modalità utente) o UNIX (su cui si basa MacOs).

I vantaggi sono la modularità (suddivisione delle funzionalità di S.O. e la portabilità vista la separazione tra politiche/meccanismi di comunicazione. A causa della continua comunicazione tra client e server potrebbero esserci una perdita di efficienza.

UNIX

È una famiglia di S.O. in costante sviluppo nata negli anni 60. È un sistema stabile per desktop e laptop. Architettura di Unix (partendo da strato più basso):

  • hardware —> CPU, RAM e dischi -kernel —> gestisce le risorse hardware e la comunicazione in risposte a chiamate di sistema -Sherlock (sistema call interface) —> interpreta righe di comando e fa da interfaccia tra kernel e utente -application programs —> applicazioni utente

SHELL

È un’interprete della riga di comando che interpreta i comandi inseriti dall’utente e permette che vengano eseguiti. Ogni comando è un programma. È importante saperla utilizzare perché non sempre l’interfaccia utente potrebbe essere disponibile (come in una sessione remota) e alcune operazioni non potrebbero essere comprese nell’interfaccia utente. Ogni cosa in UNIX ə un processo / file. La shell UNIX è composta da centinaia di comandi ed esistono comandi diversi per diversi compiti, è necessario ricordarsi i nomi dei comandi per le funzioni. I primi comandi da ricordarsi sono quelli che permettono di muoversi nel file system; come -cd- (cambio cartella), -rm- (rimuovi file o cartella), -cp- (copiare file) I comandi possono essere utilizzati anche per visualizzare i contenuti di un file come -cat-, -less- o - head-. La maggior parte dei comandi scrivono nello standard output (shell stessa) e prendono comandi dallo standard input (tastiera) Il carattere * è detto Jolly perché può essere utilizzato con nessuno e multipli caratteri nel nome di un file

Il web

Le reti informatiche di calcolatori permettono la divulgazione di dati ed informazioni velocemente in tutto il mondo. Portano vantaggi anche ad organizzazioni private, come la gestione di dati in tempo reale nonostante la dislocazione geografica di diverse sedi. Il web (World Wide Web) è uno dei tanti servizi della rete di Internet. Internet è l’intera infrastruttura della rete di calcolatori più grande al mondo. Esistono anche altri servizi meno noti come FNP (file transfer protocol) Il successo di WWW si basa sull’efficacia dei due strumenti: il protocollo di comunicazione http e il linguaggio HTML per le pagine web.

Nasce nel 1982 con un centinaia di nodi tra Europa ed America, prima di esso era stata istituita la rete ARPANET come rete di comunicazione per la difesa militare americana.

Funzionamento/Classificazione reti

Internet è una rete geografica (WAN) che consente la connessione di host. Infatti è una rete di reti con collegamenti tramite mezzi trasmissivi come fibra ottica senza struttura uniforme. S1: sistema terminale (sotto-rete) con accesso tramite gateway S2: sistema di interconnessione ha il compito di instradare (routine) i pacchetti di dati per l’altra sotto- rete Il routing si basa sul traffico di rete quindi un messaggio non ha sempre lo stesso percorso Reti di computer: -Reti geografiche (WAN)—>host molto distanti -Reti locali (LAN)—>host nello stesso edificio, connessi tramite Bridge e con l’esterno tramite Roter/Gateway -Reti metropolitane (MAN)—>reti locali in fibra ottica -Reti wireless (WLAN)—>rete senza filo -Reti personali (PAN)—>rete ad estensione molto limitata rispetto all’utente

Topologia di rete

La topologia di rete descrive come i dispositivi (chiamati nodi ) sono fisicamente o logicamente collegati tra loro. La scelta della topologia dipende da fattori come affidabilità, costi e prestazioni. Le principali tipologie di topologia sono: Topologia ad Albero :

  • Struttura gerarchica in cui i dispositivi sono organizzati a livelli (foglie, rami, radice).
  • Vantaggi : facilità di gestione e manutenzione.
  • Svantaggi : la radice rappresenta un punto critico; un suo guasto interrompe tutta la rete. Topologia a Stella :
  • Ogni nodo è connesso a un dispositivo centrale ( hub o switch ), che gestisce le comunicazioni.
  • Vantaggi : facile da configurare e individuare guasti.
  • Svantaggi : il dispositivo centrale è un collo di bottiglia ; se si guasta, tutta la rete si blocca. Topologia a Maglia :
  • Ogni dispositivo è collegato a più altri dispositivi, creando percorsi alternativi.
  • ISDN (Integrated Services Digital Network): rete digitale che permette la trasmissione di dati e voce con maggiore velocità e qualità.
  • VoIP (Voice over Internet Protocol): sfrutta Internet per le comunicazioni vocali, offrendo maggiore flessibilità e riduzione dei costi rispetto ai sistemi tradizionali. Per quanto riguarda la telefonia mobile si utilizzano GSM e UMTS:

ADSL

Il collegamento sulla RTG/PSTN analogica avviene mediante modem, guizzando un canale di comunicazione composto da un doppino telefonico. La ADSL ( Asymmetric Digital Subscriber Line ) è una tecnologia che consente l’accesso ad internet a banda larga (1024 bit / s a salire – 640 kilobit / s), a differenza dei vecchi modem Dial-up che consentivano velocità massime di 56 kilobit / s. Caratteristiche principali:

  • Trasmissione asimmetrica: la velocità in download (scaricamento) è maggiore rispetto all’upload (caricamento), ottimizzata per le esigenze degli utenti domestici.
  • Compatibilità: può utilizzare i cavi telefonici esistenti senza necessità di nuove infrastrutture, i dati possono viaggiare insieme al segnale analogico grazie alla banda differente usata ( voce 300 – 3400 Hz ADSL over 4 kHz)
  • Filtri ADSL: splitter, dispositivi che separano il segnale dati dal segnale voce per evitare interferenze.
  • Vantaggi : alta velocità di connessione e compatibilità con le reti telefoniche esistenti.
  • Svantaggi : la qualità del servizio dipende dalla distanza dalla centrale telefonica.

CDN (Content Delivery Network)

Le CDN sono reti di server distribuiti geograficamente, progettate per ottimizzare la consegna di grandi contenuti, specialmente multimediali. L’obiettivo è di instradare una richiesta di contenuto sul nodo ottimale. Funzionamento e vantaggi:

  • I contenuti (es. video, immagini) vengono memorizzati su server posizionati vicino agli utenti finali, riducendo i tempi di caricamento.
  • Migliorano l’affidabilità, poiché i dati possono essere trasferiti da server alternativi in caso di guasti.
  • Riduzione dei costi per il provider, grazie a un utilizzo più efficiente della larghezza di banda. Ogni host ha un indirizzo univoco (indirizzo IP, internet protocol): 32 bit, 4 numeri tra 0 e 255. Le numerose richieste degli host rendono il numero di indirizzi IP insufficienti, quindi si fa uso del. NAT (Network Address Translation) nel caso di indirizzi IP della stessa sottorete.

DNS (Domain Name System)

Il DNS è il sistema che traduce i nomi simbolici ( es. www.unipr.it ) in indirizzi IP numerici ( es. 159.149.158.49 ), rendendo più semplice l’accesso ai siti web. Un nome di dominio è u descrittore simbolico che identifica un gruppo di host appartenenti alla stessa rete logica di calcolatori. Organizzazione del DNS:

  • I domini sono organizzati gerarchicamente:
  • Domini di primo livello (da destra verso sinistra) (TLD): es. .it (Italia), .com (commerciale), .org (organizzazioni).
  • Sottodomini: es. lettere.unipr.it (facoltà dell’Università di Parma). I domini di primo livello (top level) possono essere di diversi tipi: nazionali o generici.
  • La traduzione è gestita da server DNS, che contengono le informazioni necessarie per risolvere le richieste.

• Per ottimizzare le prestazioni, i server DNS memorizzano temporaneamente (cache) le

traduzioni più richieste. Nella rete internet la comunicazione è basata sul modello client / server: comunicazioni tra un client, richiedente di un servizio, e un serve, che eroga il processo richiesto. Tutto ciò viene gestito da un protocollo di comunicazione.

Modello ISO/OSI

Il modello ISO/OSI ( Open Systems Interconnection ) è uno standard (struttura multilivello stack) che divide la comunicazione in rete in 7 livelli. Ogni livello ha una funzione specifica e interagisce solo con i livelli immediatamente adiacenti, garantendo compatibilità tra sistemi diversi.I livelli sono: 1. Livello Fisico :

  • Gestisce la trasmissione dei bit (0 e 1) attraverso il mezzo fisico, come cavi, fibre ottiche o onde radio.
  • Si occupa di specifiche come voltaggio e frequenza. 2. Livello Collegamento Dati :
  • Controlla il trasferimento dei dati tra due dispositivi vicini e rileva eventuali errori.
  • Utilizza tecniche come il frame (pacchetto dati) per strutturare le informazioni. 3. Livello Rete :
  • Si occupa di instradare ( routing ) i pacchetti di dati verso la destinazione attraverso diverse reti.
  • Usa protocolli come IP ( Internet Protocol ). 4. Livello Trasporto :
  • Protocollo: il metodo di accesso (es. HTTP, FTP).
  • Indirizzo del server: es. www.unipr.it.
  • Percorso della risorsa: specifica la posizione della risorsa all’interno del server (es. /documenti/file.pdf ). Struttura di un URL: https://corsi.unipr.it/materiali?ID=
  • https: protocollo.
  • corsi.unipr.it: server.
  • /materiali: percorso.
  • ?ID=123: parametri passati al server per una richiesta specifica.

Richiesta di una Pagina Web

Il processo per richiedere una pagina web segue queste fasi:

  1. Formulazione della richiesta HTTP:
  • Il browser invia una richiesta al server specificando l’URL ( Uniform Resource Locator ).
  • L’URL contiene il protocollo ( http:// ), l’indirizzo del server ( www.unipr.it ) e il percorso della risorsa richiesta.
  1. Connessione al server:
  • Viene stabilita una connessione utilizzando i protocolli TCP/IP.
  1. Risposta HTTP:
  • Il server invia la pagina richiesta oppure un messaggio di errore (es. 404, pagina non trovata).
  1. Visualizzazione della pagina:
  • Il browser interpreta il codice HTML e mostra il contenuto all’utente. Tipi di pagine web
  • Pagine Statiche :
  • Hanno un contenuto fisso, non personalizzato. Sono create con linguaggi come HTML e CSS.
  • Pagine Dinamiche :
  • Il contenuto cambia in base alla richiesta dell’utente o ai dati ricevuti. Utilizzano linguaggi come PHP o ASP e spesso accedono a database per generare le informazioni richieste.

Posta Elettronica

La posta elettronica ( email ) è uno dei servizi più utilizzati di Internet. Ogni messaggio è costituito da:

  • Intestazione ( header ): include informazioni come il mittente, il destinatario e l’oggetto del messaggio.
  • Corpo ( body ): contiene il testo del messaggio e gli eventuali allegati. Il messaggio ha anche una busta ( envelope ), dove sono scritte le informazioni per smistamento. Per poter ricevere il messaggio occorre avere una casella di posta elettronica fornita da un provider. Ogni provider ha un suo server di posta elettronica che ospita le caselle degli utenti. I protocolli principali per la gestione delle email sono:
  • SMTP ( Simple Mail Transfer Protocol ): utilizzato per inviare i messaggi ai server di posta.
  • POP3 ( Post Office Protocol ): scarica i messaggi dal server al dispositivo, cancellandoli dal server.
  • IMAP ( Internet Message Access Protocol ): consente di leggere i messaggi lasciandoli sul server, rendendoli accessibili da più dispositivi. Conserva una copia dei e proprie mail. Sul server per scaricarle in un secondo momento da un altro dispositivo. Esempi di programmi per gestire la posta elettronica:
  • Microsoft Outlook
  • Mozilla Thunderbird
  • Gmail (webmail) La maggior parte delle mail sono trasmesse in formato MIME (multipurpose internet mail extensions). Il protocollo IMAP (più utilizzato da enti come le università) pu anche scaricare solo parti delle singole MIME per avere un’anteprima del messaggio o del file. Informazione e sistemi informativi L’informazione è un bene a valore crescente e rappresenta la prima materi che viene trasformata dai sistemi informativi. Servono per misurare prestazioni, decisioni ed è necessario definire i processi della raccolta delle informazioni per pianificare o organizzare attività aziendali. Il sistema informativo è un insieme di risorse e dio metodologie finalizzate alla raccolta, uso e scambio delle informazioni. La gestione delle informazioni avviene tramite una base dati (collezione di dati che rappresentano le informazioni d’interesse) Lo scopo di un sistema informativo è gestire (acquisire, elaborare, memorizzare, produrre, distribuire) le informazioni utili. Elementi costituenti di un sistema informativo:
  • Patrimonio di dati
  • Nucleo applicativo (definisce procedure per i dati)
  • Risorsa umana
  • Infrastrutture tecnologiche (mezzi necessari al trattamento dati)
  • Schema
  • Istanza (valore memorizzati)
  • Modelli logici (descrizione dati direttamente supportata da BDMS) (relazionale è la più usata)
  • Modelli concettuali (descrizione concetti della realtà indipendente) Il modello relazionale (logico) è il più diffuso; i dati sono organizzati in tabelle e si utilizza come unica struttura relazioni o tabelle. Schema sono le colonne, le istanze sono le righe. L’istanza varia per aggiunta di righe, mentre lo schema è invariante rispetto al tempo. Una base di dati è un insieme di tabelle correlate tra oro. In ogni. Situazione le informazioni che si vogliono gestire devono rispettare dei vincoli per non avere conflitti come inconsistenza. La rappresentazione dei modelli concettuali (Entity/Relationships E/R) è un metodo per rappresentare i dati e le associazioni in modo concettuale. Si definiscono regole per ottenere le tabelle di dati in relazione. Quando descriviamo un dato utilizzando un modello forniamo un’astrazione su come poi questi dati verranno veramente memorizzati su file. In questo modo il DBMS semplifica l’interazione con l’utente nascondendo i dettagli. In un database ci sono 3 livelli classici di astrazione:
  • Livello esterno (si descrive una parte (vista) della base di dati) (database ci fornisce solo una vista parziale dei dati d’interesse per migliorare controllo dell’accesso)
  • Livello logico (si descrivono i dati usando il modello logico utilizzato dal BDMS)
  • Livello fisico (si descrive come sono organizzati i dati nella memoria di massa) (associato alla rappresentazione fisica dei dati in memoria) Indipendenza dati e utente DBMS Indipendenza fisica: è possibile interagire con il BDMS in modo indipendente dalla struttura fisica dei dati Indipendenza logica: è possibile interagire con il livello esterno della base di dati in modo indipendente dalla struttura logica dei dati Esistono 3 tipologie di utenti suddivisi in base al ruolo e alle informazioni richieste;
  1. Data Base Administrator (progetta base di dati e ne definiscono lo schema e i vincoli)
  2. Programmatori di applicazioni (realizzano applicazioni che accedono al database)
  3. Utenti (utilizzano base di dati tramite le applicazioni) Implementazione e uso Le tabelle di una base di dati vengono realizzate sul BDMS con linguaggio standard SQL. Le tabelle contengono dati modificabili, inoltre possono essere anche visualizzati e aggiunti dati. L’utilità principale del BDMS sono le query (interrogazioni) sui dati contenuti. Si utilizza sempre lo stesso linguaggio SQL

Codifica contenti multimediali

Il problema di rendere un’immagine o udito (insieme continuo di informazioni) digitale è rendere digitale (rappresentazione discreta immagine) un’informazione prettamente analogica (rappresentazione continua informazione). Per poter trattare un segnale analogico come digitale è necessario adottare una rappresentazione finita, questo è il processo di quantizzazione. La grandezza varia nel tempo e la frequenza di campionamento deve essere rilevata in diversi istanti. La quantizzazione deve essere ripetuta per ogni valore campionato. La rappresentazione sarà più precisa quanto più è frequente la campionatura e maggiori bit per codificare. MP3 : tecnica di compressione con perdita data e considera solo suoni che il nostro cervello è in grado di percepire. Bitrate (bit per codificare. Sec) 128 Kbit. Per quanto riguarda le immagini esistono numerose tecniche per la memorizzazione digitale. Una prevede la scomposizione dell’immagine in tanti punti (unità minima di memorizzazione) (formato Raster/Bitmap ) .jpeg .gif .png La seconda strada prevede la presenza di elementi strutturali di natura più complessa come linee, archi o formule matematiche. Ingrandimento infinito. (formato Vettoriale ) .svg Rappresentazione e codifica immagini La codifica binaria delle immagini avviene cosi: L’immagine viene divisa in tanti punti ( pixel )—>di ogni pixel viene espresso il livello di grigio , da un valore numerico intero—>l’immagine diventa una serie di bit ( digitalizzazione ) La risoluzione è determinata dal numero di punti per pollice ( dpi ) e dai livelli di grigio (quanti bit per codificare un pixel) I pixel sono gli elementi più piccoli di una griglia per il quale è diviso uno schermo. A ogni pixel si associa un indirizzo in memoria. La cella è l’unità minima nella quale è divisa la pagina stampata. Codifica immagini B/N: Dividere immagine in griglia con righe orizzontali / verticali. Ogni quadratino è un pixel (picture element) (0 bianco, 1 nero). Poi si converte ordinamento per i bit usati La rappresentazione sarà più fedele all’aumentare del numero dei pixel. (Aumento di risoluzione) In sostanza le immagini sono rappresentate grazie ad un certo livello di approssimazione (di risoluzione) (640 x 480 / 1024 x 768 / 1280 x 720) Le immagini in bianco e nero hanno delle sfumature, quindi dei livelli di intensità di grigio; in tal caso si fissa un insieme di livelli di grigio, a cui si assegna una rappresentazione binaria. Per ogni pixel si stabilisce il livello medio di grigio e si memorizza la codifica di tale livello. Codifica immagini a colori:

Le varie proprietà del mondo 3D: percezione e interpretazione, ricerca e organizzazione, stima della profondità e posa e struttura del movimento. Le immagini sono proiezioni 2D di un mondo 3D, infatti è molto difficile estrapolare informazioni da tali immagini. Risulta cosi difficile a causa di: cambiamenti illuminazione, illusioni ottiche, scala, punti di vista. Trovare dei buoni punti chiave ( key - point ) è complicato, è necessario osservare piccole porzione delle immagini. Esso dovrebbe essere ripetibile, saliente e locale. I buoni candidati sono angoli/bordi e motivi testurizzati Una volta trovati i punti chiave sei possono essere confrontati per stabilire relazioni geometriche o utilizzati per descrivere il contenuto delle immagini. È necessario estrarre alcune informazioni dall’immagine delle posizione definite dai punti chiave. È possibile campionario. in modo uniforme e poi eliminare quelli inutili (questi operatori sono detti descrittori di Feature ) I descrittori possono essere confrontati tra i frame di un video per tracciare un oggetto. L’oggetto viene associato ad un insieme di descrittori che ne definiscono le caratteristiche. Viene utilizzato un algoritmo di accettazione/rifiuto per definire i descrittori corrispondenti.

Intelligenza artificiale

Categorie

Intelligenza artificiale : insieme di tecniche per imitare comportamento umano Machine learning : metodi statistici per permettere alle macchine di migliorare l’esperienza senza una programmazione esplicita Neural networks : sottoinsieme di metodi di machine learning Deep learning : sottoinsieme di metodi basati sulle rete neurali con tanti livelli Alan Turing con il Turing Test: essere umano che cerca di distinguere una risposta umana a quella di un computer Russel-Norving diede invece 4 definizioni che differenziarono i computer sulla base di razionalità e pensiero (approccio umano/ideale) IA debole si propone di costruire macchine che si comportino come se fossero intelligenti, come macchine capaci di risolvere tutti i problemi. IA forte afferma che la macchina agisce in modo intelligente ed ha una propria intelligenza cosciente e indistinguibile dalla mente umana. L’IA si occupa di costruire macchine intelligenti, formalizzare la conoscenza ed i meccanismi di ragionamento, usare modelli computazionali e rendere facile l’interazione uomo/macchina. Classificazione

Symbolic AI: conoscenza è modellata tramite simboli, ogni concetto o elemento è rappresentato da simboli espliciti e relazioni tra essi. Sono regolati da regole esplicite (Es. SistemiEsperti) Subsymbolic : approccio basato sui segnali e non c’è rappresentazione espliciti della conoscenza e appendono dalle esperienze passate senza regole esplicite (reti neurali) I primi sono più facili da controllare, sistemare e spiegare, inoltre sono di difficile applicazione su grandi dati. I secondi sono più robusti, adatti a dati grandi, meglio per i problemi concettuali e non hanno bisogno di modellare la conoscenza. Applicazioni:

- Mappe e navigazioni (Tesla) - Riconoscimento facciale - Algoritmi di ricerca - Editor testi - Chatbots (Amazon Alexa) - Analisi grandi molti di arti/social network - Gaming (Alpha go) Machine learning La nascita delle rete neurali artificiali è datata agli anni 40. Tipicamente un macchinario basato sul machine learning usa un approccio Supervised Learning : esso si addestra mostrandogli degli esempi invece che programmarla a svolgere un compito. Gli esempi son dati grezzi catturati da diversi sensori. Essi sono complessi da elaborare a causa di molte informazioni poco utili e rumore. Meglio rappresentare i dati in modi che catturino le informazioni rilevanti. Gli approcci tradizionali estraggono features dai dati: esse sono utili per catturare elementi in dati grezzi per descriverli, scartare elementi di disturbo e ridurre dimensioni dati. Il primo approccio per estrarre features è quello di definirle manualmente. Il limite è che non si ha la garanzia di aver ottenuto le migliori possibili. Le features sono utili se hanno molta variabilità e sono discriminative, inoltre devono essere correlate a quello che rappresentano. Deep learning Al giorno d’oggi si ha una grande quantità di dati ( Big Data ) a disposizione. Il Deep learning è un insieme di modelli e algoritmi che utilizzano reti neurali con molti strati e neuroni. Una grande differenza con il machine learning consiste nel modo in cui i dati sono rappresentati, poiché il Deep impara le rappresentazioni direttamente dai dati grezzi, mentre il machine assume che i dati siano processati per estrarne features. Più sono i dati e migliori sono le performance le features estratte sono adatte automaticamente al task specifico e la rappresentazione gerarchica cattura diversi livelli di dettaglio. Servono quindi moltissimi dati per addestrare un sistema e la rappresentazione dei dati imparata da un task è difficilmente utilizzabile anche per un altro task.

  • La rappresentazione di dati gerarchica è un grande vantaggio del Deep learning che è in grado di catturare concetti di basso e alto livello, mentre le features artificiali per il machine learning