



















Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
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
1 / 27
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!




















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.
È 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:
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)
Rappresentazione dei caratteri tramite un byte per ogni carattere con 256 combinazioni possibili ( alla otto).
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.
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:
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.
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:
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
Esso fornisce l’ambiente per l’esecuzione dei programmi.
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 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.
È 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):
È 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
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.
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
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 :
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:
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:
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:
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.
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 :
Il processo per richiedere una pagina web segue queste fasi:
La posta elettronica ( email ) è uno dei servizi più utilizzati di Internet. Ogni messaggio è costituito da:
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 : 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.