730 likes | 981 Views
Giorgio Gambosi. Università di Roma “Tor Vergata”. Dipartimento di Matematica Centro di Ricerca e Formazione Permanente per l’Insegnamento delle Discipline Scientifiche.
E N D
Giorgio Gambosi Università di Roma “Tor Vergata” Dipartimento di Matematica Centro di Ricerca e Formazione Permanente per l’Insegnamento delle Discipline Scientifiche
Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli -- almeno potenzialmente -- tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. Linus Torvalds L’informatica ha a che fare con i computer non più di quanto l’astronomia abbia a che fare con i telescopi. Edsger W. Dijkstra
Problemi di immagine dell’informatica • Disciplina culturalmente povera rispetto a “hard sciences” • lo stesso avviene per scienze rispetto a materie umanistiche • tecnologia, non scienza • informatica come programmazione • assenza (irrilevanza) di fondamenti concettuali • modello “garage programming”
Problemi di immagine • Informatico = nerd, “smanettone” • Non è una professione “di successo” • Problema comune con le altre discipline scientifiche • scienziato = secchione • Grande fatica, scarso ritorno • Fondamenti poco importanti
L’informatica nella scuola • Apprendimento strumentale: informatica = computer • Scuola media: utilizzo strumenti • Scuola secondaria superiore: al massimo, programmazione • In generale, informatica vista come funzionale ad altre discipline • Produzione documenti, presentazioni, piccoli programmi di simulazione, fogli elettronici
L’informatica nella scuola • Riforma Gelmini • Informatica soltanto nel Liceo scientifico, opzione scienze applicate • Impostazione tecnologica del programma
Scarso appeal della matematica • Materia difficile • Scarso stimolo concettuale per gli studenti • Non sembra avere applicazioni immediatamente significative
Test PISA, TIMSS, INVALSI • Insufficienti risultati a partire dalla scuola media (K8) • Soprattutto relativamente alle competenze e agli aspetti procedurali e di problem solving • Difficoltà di descrizione dei procedimenti di soluzione • La matematica insegnata sembra troppo poco attenta agli aspetti di applicazione delle conoscenze ed alla risoluzione (algoritmica) di problemi
Cosa fare? • Come valorizzare l’informatica? • Come rendere più gratificante la matematica? • Sinergie: i concetti e i metodi fondamentali dell’informatica sono utili nell’insegnamento della matematica (e non solo)
Come rendere più gratificante la matematica? • Maggiore attenzione all’utilizzo di metodi e concetti • Modellazione matematica • Computazione • Risoluzione di problemi • Pensare in modo computazionale
Come valorizzare l’informatica? • Combattere idee sbagliate • Dare una definizione chiara della disciplina • Come corpus concettuale fondamentale • Rilevanza sull’acquisizione di un modo di pensare (rispetto a competenze specifiche)
Idee sbagliate • CS = programmazione • CS = alfabetizzazione informatica (es. ECDL) • CS = strumento per lo studio di altre discipline • CS = non disciplina scientifica • CS = per maschi
Come valorizzare l’informatica? • Informatica intesa come disciplina inerente: • La modellizzazione • La rappresentazione e la gestione dell’informazione • La risoluzione procedurale di problemi • La programmazione ha un ruolo del tutto ancillare
Come valorizzare l’informatica? • Distinzione tra informatica e computer • Avvicinamento all’informatica non incentrato su computer • Unplugged CS • Presto: scuola elementare, scuola media • Presenza “trasversale” (ad es. relazioni con linguistica)
Come valorizzare l’informatica? • Programmazione come formalizzazione di una procedura algoritmica • Utilizzo di ambienti di programmazione di tipo “educational” • Storytelling (Alice, Scratch) • Test e verifica di correttezza come “sfida mentale”
Concetti chiave • Informazione, codifica e organizzazione • Algoritmi e loro implementazione • Astrazioni concettuali • Correttezza di una procedura • Efficienza
Ruolo dei docenti • Formazione insegnanti fondamentale • Percezione sbagliata della CS trasmessa da docenti a studenti • Studenti validi orientati verso altri corsi di studio • Chi insegna cosa? • Ruolo dei laureati in informatica e in ingegneria informatica
Cosa fare? • Presenza della comunità accademica per la definizione di programmi e obiettivi (non solo per informatica) • Collaborazione scuola-università • Non finalizzata alle sole immatricolazioni • Iniziative nazionali (olimpiadi informatica) • Lauree scientifiche
Matematica • Definisce un linguaggio • Esprime situazioni e problemi reali in un formalismo rigoroso (modelli) • definisce proprietà che risultano in possibili modalità di risoluzioni dei problemi
Rimane una questione aperta • quanto è effettivamente praticabile risolvere un problema? • quanto devo calcolare? • Praticabile: quante risorse di calcolo mi servono? • Tempo: il tempo è una risorsa
Risolubilità effettiva di problemi. Esempio: TSP • 110 province in Italia, per ogni coppia tempo stimato di trasferimento • Voglio partire da Roma e tornare a Roma attraverso tutti i capoluoghi nel minor tempo possibile • Soluzione semplice: prova tutti i percorsi e scegli il più veloce • percorso=permutazione dei rimanenti 109 capoluoghi
Risolubilità effettiva di problemi. Esempio: TSP • sono 109! permutazioni, circa 1.45x10^176 permutazioni • supponiamo di poter esaminare un percorso al minuto: servono circa 3x10^160 miliardi di anni! • Idea! Potrei usare un computer! un percorso ogni miliardesimo di secondo • servono circa 5x10^150 miliardi di anni
Cosa fare? • Devo trovare un modo più efficiente di risolvere il problema • Ma esiste un modo più efficiente? • Magari esiste un modo efficiente per trovare un percorso molto vicino al migliore, ma non proprio quello
Questioni • Dato un problema: • Quanto efficientemente è possibile risolverlo? • In che modo? • Possiamo trovare modi efficienti per risolverlo “più o meno”? • Come descriviamo il problema e le sue soluzioni? • Come descriviamo il modo di risolverlo? • E’ possibile, in assoluto, risolvere il problema in generale?
Obiettivi dell’informatica • soluzione efficiente di problemi mediante procedure generali • rappresentazione efficiente dell’informazione
Algoritmi • Sequenze di istruzioni • elementari (modello di calcolo) • di composizione • Modelli di calcolo • istruzioni possibili • loro significato in termini di esecuzione
Algoritmi • Linguistica: • Algoritmi come testi di lunghezza finita • Eseguibili da un agente (modello di calcolo): esecuzione potenzialmente infinita • Generalità della soluzione • funzionano su input diversi (calcolano una funzione) • input ammissibili • codifica (ancora linguistica)
Problema e algoritmo • Problema: • Insieme input ammissibili • Output definito da funzione dell’input • Soluzione algoritmica Algoritmo Input ammissibile Output richiesto
Tipi di problemi • P1 • input, J,K interi • output J^2+3K • problema aritmetico, esecuzione di durata costante (sotto qualche ipotesi)
Tipi di problemi • P2 • input K intero • output somma dei primi K interi • aritmetico, la durata dell’esecuzione dipende dall’input
Tipi di problemi • P3 • input K intero • output “Y” se K è primo, “N” se composto • problema di decisione, output non numerico
Tipi di problemi • P4 • Insieme di N parole • Le N parole in ordine alfabetico • non numerico
Tipi di problemi • P5 • input due testi • output parole comuni • non numerico
Tipi di problemi • P6 • input carta stradale, 2 città • output descrizione tragitto più breve tra le due città • problema di ottimizzazione, input strutturato
Tipi di problemi • P7 • input carta stradale, N città, K intero • output “Y” se esiste un percorso tra tutte le città di lunghezza al più K, “N” altrimenti • problema di ottimizzazione visto come problema di decisione
Tipi di problemi • P8 • input, posizione degli scacchi • output “Y” se esiste una sequenza di mosse per il bianco che gli fa vincere la partita, “N” altrimenti • problema di decisione relativo ad un gioco
Tipi di problemi • P9 • input programma P, 2 variabili X (di input), Y, K intero • output 2K se P pone sempre Y=X^2, 3k altrimenti • riguarda il comportamento di un programma “osservato”
Tipi di problemi • decisionali • di ricerca • di ottimizzazione • In molti casi difficile enunciare esattamente • output difficile: scacchi: come definire la mossa migliore • input complesso: problema di distribuzione (20000 giornali, 1000 rivenditori, 100 città, 50 furgoni) insieme dei costi, funzione di costo • previsioni del tempo (input?, output?): codifica di input e output
Risolubilità • Problema risolubile se esiste un algoritmo che deriva l’output corretto per ogni input ammissibiledipendenza dal modello di calcolo • Problema trattabile se è risolubile ed esiste un algoritmo che lo risolve in modo efficiente (? Da definire)
I computer • Sono una implementazione di un particolare modello di calcolo • Implementazione realizzata per mezzo di circuiti elettronici • Modello di calcolo molto semplice: sa fare poche cose elementari ==> è complicato descrivere un algoritmo per essere eseguito da questo modello di calcolo • Perché li usiamo? Perché l’implementazione elettronica del modello di calcolo fornisce operazioni molto veloci da eseguire
Linguaggi di programmazione • Modelli di calcolo più articolati • Implementazione realizzata mediante software eseguito dal modello di calcolo del computer • Modello di calcolo più potente: sa fare a livello elementare più cose ==> è più semplice descrivere un algoritmo • Perché li usiamo? Sono un buon compromesso tra semplicità di descrizione di algoritmi e velocità di esecuzione
Comunicazione • Definizione di algoritmi intesa come comunicazione • Destinatario: agente di calcolo, conosce la semantica, sa come eseguire i passi dell’algoritmo • Messaggio: descrizione dell’algoritmo, programma
Linguistica • Algoritmi (e programmi) come frasi di un linguaggio • Sintassi: definisce cosa è corretto dal punto di vista di un insieme di regole di costruzione di “frasi” • Semantica: definisce il significato di una frase (in termini di esecuzione) • Modello di calcolo (linguaggio di programmazione): insieme delle frasi (programmi) corretti che posso scrivere
La macchina di Turing • Modello di calcolo particolarmente semplice • Nastro di memoria • Testina di lettura/scrittura • Stato interno • Funzione di transizione
La macchina di Turing • Esempio: un algoritmo di copia
La tesi di Church-Turing • Un problema risolubile da un algoritmo su un qualche modello di calcolo è risolubile da una macchina di Turing • La macchina di Turing è il modello di calcolo più potente • Esistono modelli di calcolo meno potenti • Automi a stati finiti
Algoritmi “sbagliati” • Su qualche input, viene fornito un output scorretto • Potrei accettarlo, se succede raramente (valutazione probabilistica) • A volte, non termina mai
Un problema, tanti algoritmi • Ricerca in un insieme • Ricerca sequenziale: • quanti passi? tempo peggiore, tempo medio, tempo migliore • Ricerca a caso • (1-1/n)^(k-1)1/n probabilità in k passi, media n • Ci potrei mettere di meno? No, come minimo li devo guardare
Un problema, tanti algoritmi • Ricerca in un insieme • Ipotesi aggiuntiva: insieme ordinato • Ricerca binaria • tempo peggiore lg n • Ci potrei mettere di meno? No (è possibile mostrarlo)
Proporzionalità nella valutazione • Consideriamo la proporzione tra il numero di passi (il tempo) e la dimensione dell’istanza di problema • Semplificazione: le istanze di stessa dimensione non richiedono lo stesso tempo • Caso peggiore (caso medio)