martedì 31 marzo 2020

Cosa è un GRAFO

Un grafo in informatica è una particolare figura geometrica, costituita da dei punti o cerchietti, detti nodi (o vertici), e da segmenti che collegano i nodi, detti archi.
Gli archi possono essere non orientati oppure orientati, e in quest’ultimo caso sono frecce con direzione e verso, ovvero ci dicono da quale nodo partire e a quale nodo arrivare.


Inoltre i grafi possono essere non pesati o pesati e in quest’ultimo caso sopra ogni arco viene riportato un numero (che è appunto il peso).








I grafi si usano in informatica per rappresentare situazioni e risolvere problemi di vario tipo: ad es. per schematizzare un programma, un circuito, una rete di computer, la mappa di un sito. Ma possono anche essere usati per fare l'astrazione di
una carta geografica.




Un grafo in informatica è detto anche albero.
Un albero è un grafo non orientato nel quale due vertici qualsiasi sono connessi da uno e un solo cammino (grafo non orientato, connesso e privo di cicli).
Ad esempio si può usare per schematizzare un albero genealogico oppure dei corsi d’acqua, con sorgente e affluenti.

Come possiamo rappresentare testualmente un grafo?
Ad esempio potremmo descrivere ogni suo arco nel seguente modo:
arco(<nodo1>,<nodo2>,<lunghezza>)

Questa espressione ci dice di un arco quali nodi unisce e quale è il suo peso, o lunghezza.


Esempio: 

arco(n1,n2,3) 

arco(n1,n3,4) 

arco(n3,n4,2) 

arco(n1,n5,8) 

arco(n4,n5,1)







Quale è il percorso più breve per andare da n2 a n5?

E' il percorso 2, nonostante attraversi un numero maggiore di nodi, infatti:

percorso1=3+8=11
percorso2=3+4+2+1=10
Il mondo dei grafi è sicuramente affascinante e infatti, non a caso, è proprio a loro che ho dedicato questo mio blog!

Date un'occhiata al mio video su youtube:

lunedì 30 marzo 2020

L'Architettura di Von Neumann

Chi era Von Neumann? Una delle più grandi personalità scientifiche del XX secolo, nato a inizio '900, ungherese e naturalizzato statunitense. Ha dato enormi contributi nei campi della matematica e dell'informatica.

In particolare ha steso l'architettura dei sistemi di elaborazione.
Cosa è un sistema di elaborazione? Un qualsiasi sistema intelligente in grado di fare calcoli e compiere elaborazioni di vario tipo in modo autonomo, programmabile. Un esempio per tutti: il PC.
Alla base della sua architettura ci sono gli input (periferiche e dati di ingresso), il sistema di elaborazione (composto da CPU, ovvero il processore, e le memorie con cui questo dialoga, sia volatili che di massa), gli output (periferiche e dati di uscita, informazioni elaborate) e i bus di dati, controllo e indirizzo, ovvero i canali di comunicazione attraverso i quali le periferiche di input/output, la CPU e le memorie si scambiano le informazioni ovvero dialogano.
Sul bus dati viaggiano le informazioni vere e proprie, appunto i dati; sul bus degli indirizzi viaggiano gli indirizzi dei destinatari ai quali quelle informazioni sono destinate; sul bus di controllo viaggiano delle informazioni di controllo che fanno capire se le informazioni scambiate sono corrette oppure c'è stata corruzione e c'è quindi necessità di un ripristino dell'informazione corretta.
Questa architettura, rivoluzionaria per l'epoca, è a tutt'oggi ancora valida!

Date un'occhiata al mio video su youtube:


domenica 29 marzo 2020

Il Problem Solving: l'arte, tutta informatica, di risolvere i problemi!

Letteralmente Problem Solving significa 'risolvere problemi' ma cosa c'entra con l'informatica? Noi tutti ci troviamo quotidianamente a risolvere problemi, più o meno complessi, di natura pratica o teorica, a scuola, nel lavoro, quando studiamo, se facciamo sport o semplicemente dobbiamo organizzare un viaggio o una pizza con gli amici.
La capacità di astrazione, di organizzazione, di precisione e ordine, di applicazione logica, è caratteristica dell’approccio informatico alla risoluzione di problemi complessi.
Questo favorisce lo sviluppo del pensiero critico e del pensiero logico-matematico, ovvero più propriamente del pensiero computazionale (termine formalizzato dalla psicologa Americana Jeanette Wing nel 2006): insieme dei processi mentali coinvolti nella comprensione, formulazione, e risoluzione di un problema. L’esecuzione vera e propria del sistema di soluzione ideato dall’uomo può poi anche avvenire tramite l’uso di macchine, se troppo complessa.
Alla base del pensiero computazionale ci sono tre diverse fasi, ripetibili iterativamente:
1. Astrazione: comprensione e formulazione del problema
2. Automazione: espressione della soluzione tramite algoritmi
3. Esecuzione e Analisi: esecuzione della soluzione e valutazione dei risultati
Il pensiero computazionale è l’insieme dei processi mentali usati per modellare una situazione (dati iniziali o input) e specificare i modi (con algoritmi che implementano la soluzione) mediante i quali un elaboratore di informazioni potrà poi operare per giungere alle conclusioni (dati finali o output).
Quante frasi difficili! E quindi? Semplice: saper riconoscere un problema, studiare per risolverlo e trovare una soluzione che poi può anche essere successivamente riusata in altri casi, questo è problem solving. E laddove si parla di risoluzione di problemi effettuata con metodo, implementando algoritmi, allora si parla di informatica!

Il Ministero dell’Istruzione, dell’Università e della Ricerca ogni anno scolastico promuove le competizioni di informatica denominate “Olimpiadi di Problem Solving” (OPS), rivolte agli alunni del primo e del secondo ciclo delle scuole italiane.

Citando testualmente quanto riportato nel sito ufficiale delle OPS, queste competizioni 
"si propongono di:
- stimolare la crescita delle competenze di problem solving e valorizzare le eccellenze presenti nelle scuole;
- favorire lo sviluppo e la diffusione del pensiero computazionale;
- promuovere la diffusione della cultura informatica come strumento di formazione nei processi educativi (metacompetenze);
- sottolineare l’importanza del pensiero computazionale come strategia generale per affrontare i problemi, come metodo per ottenere la soluzione e come linguaggio universale per comunicare con gli altri;
- stimolare l’interesse a sviluppare le capacità richieste in tutte le iniziative attivate per la valorizzazione delle eccellenze;
- integrare le esperienze di coding, makers e programmazione in un riferimento metodologico più ampio che ne permetta la piena valorizzazione educativa."

Personalmente faccio partecipare tutti gli anni i miei studenti a queste competizioni.
Vi riporto il sito ufficiale delle OPS per acquisire maggiori informazioni:

venerdì 27 marzo 2020

Articolo vintage: come è fatto un PC, l'HW e il SW


In questo articolo parliamo di un argomento un pò vintage: come è fatto un PC, quali sono i suoi principali componenti e cosa significa hardware (HW) e software (SW).
Perchè vintage? Perchè è un argomento da Generazione X, quella generazione che, come me, ha contribuito a crearla la tecnologia informatica. I Millennials e la Generazione Z non sono interessati a questo argomento, il PC è pari a un qualsiasi elettrodomestico. Quando chiedo a uno dei miei studenti se è interessato a scoprire come è fatto un PC, cosa c'è dentro, come funziona, quando chiedo di essere un pò curiosi, mi rispondono puntualmente: "Prof. non ci interessa, basta che funzioni!".
Proverò comunque a stuzzicare un pò la curiosità dei nerd, grandi e piccini, che come me amano la tecnologia e nutrono ancora una sana curiosità sul 'com'è fatto'.

E allora iniziamo con un pò di pillole di informatica: PC significa Personal Computer, ovvero calcolatore personale. Personale in che senso? Il calcolatore è divenuto personale dal momento che è diventato di dimensioni ridotte, così da poter entrare nelle case di tutti, con prezzi accessibili. Questa rivoluzione è iniziata nei tardi anni '70 quando Bill Gates e Steve Jobs iniziavano a lavorare nei loro garage... Quindi con 'personale' non intendiamo tanto 'privato' quanto piuttosto 'popolare'.
In un PC l'hardware (abbreviato comunemente con HW) è la parte fisica, elettrica, elettronica, meccanica, che è possibile 'toccare con mano'. La parte software (abbreviato comunemente con SW) è invece la parte logica, l'insieme dei programmi, dal sistema operativo alle app, che permettono di usare l'hardware e ci offrono dei servizi fondamentali nell'uso quotidiano: dalla scrittura di un documento alla navigazione in rete, dalla messaggistica istantanea in stile whatsapp alla stampa di un documento.

Ma vediamo di fare qualche esempio di HW. Nel PC alcune delle parti principali sono: la scheda madre, ovvero quella scheda elettronica che rappresenta il sistema principale, dove sono collocati tutti gli altri sottosistemi e che li fa colloquiare grazie a segnali che trasportano informazioni; il processore (CPU), ovvero il cervello del PC, quel sistema che legge le istruzioni del programma e le esegue, scrivendo e leggendo in memoria; la memoria volatile RAM (Random Access Memory, memoria ad accesso casuale) che viene usata dal processore e si ripulisce periodicamente; la memoria di massa come l'hard disk, dove andiamo a memorizzare tutti i nostri files.


Se parliamo di SW invece, troviamo principalmente il sistema operativo (es. Linux, iOS, Windows), che interagisce con l'HW e fa da tramite con gli utilizzatori e le applicazioni (es. browser web, programmi di scrittura, programmi di messaggistica).
Il SW può essere libero, se non è coperto da copyright, oppure di tipo proprietario, coperto da brevetti e licenza commerciale d'uso.
Le immagini sono volutamente vintage!

Date un'occhiata al mio video su youtube: