…CS Inside...
Computer Science Inside…Computer Science Inside…
Sviluppo diSviluppo di
AlgoritmiAlgoritmi
Adattato dalle slide originaliAdattato dalle slide originali
della Royal Society of Edinburghdella Royal Society of Edinburgh
…CS Inside...
Cos'è un algoritmo?Cos'è un algoritmo?
• Un algoritmo è un procedimento cheUn algoritmo è un procedimento che
risolve un determinato problemarisolve un determinato problema
attraverso un numero finito di passi.attraverso un numero finito di passi.
• Un programma è in sostanza laUn programma è in sostanza la
traduzione di un algoritmo in una formatraduzione di un algoritmo in una forma
eseguibile da un computer.eseguibile da un computer.
…CS Inside...
Le istruzioniLe istruzioni
• Gli algoritmi (e I programmi) sono formati da una serie diGli algoritmi (e I programmi) sono formati da una serie di
istruzioniistruzioni
– dotati di particolari caratteristichedotati di particolari caratteristiche
• L'algoritmo ottiene il risultato solo se le istruzioni sonoL'algoritmo ottiene il risultato solo se le istruzioni sono
eseguite correttamente.eseguite correttamente.
• Se le istruzioni sono interpretate dal computer (oSe le istruzioni sono interpretate dal computer (o
dall'esecutore) in modo non previsto da chi ha progettatodall'esecutore) in modo non previsto da chi ha progettato
l'algoritmo, ci possono essere effetti sgradevolil'algoritmo, ci possono essere effetti sgradevoli
• Vediamo in prima persona che cosa accadeVediamo in prima persona che cosa accade
…CS Inside...
Seguiamo l'algoritmoSeguiamo l'algoritmo
• Tirate fuori un foglio e una matita.Tirate fuori un foglio e una matita.
• Non potete chiedere aiutoNon potete chiedere aiuto
• Non guardate il lavoro dei compagniNon guardate il lavoro dei compagni
– Fate da soli!!!Fate da soli!!!
– Sarà molto più divertenteSarà molto più divertente
– …… e non c'è voto!e non c'è voto!
…CS Inside...
Ecco l'algoritmo – sEcco l'algoritmo – seguire alla lettera!eguire alla lettera!!!
Disegna una diagonaleDisegna una diagonale
Disegna un'altra diagonale connessa all'estremo alto della primaDisegna un'altra diagonale connessa all'estremo alto della prima
Disegna una linea verticale dal punto in cui le diagonali s'incontranoDisegna una linea verticale dal punto in cui le diagonali s'incontrano
Disegna una linea orizzontale che interseca la linea retta.Disegna una linea orizzontale che interseca la linea retta.
Dall'estremo basso della prima linea, disegna una linea curva.Dall'estremo basso della prima linea, disegna una linea curva.
Disegna una diagonale dal fondo della prima diagonale alla prima linea.Disegna una diagonale dal fondo della prima diagonale alla prima linea.
Disegna una diagonale dal forndo della seconda diagonale alla primaDisegna una diagonale dal forndo della seconda diagonale alla prima
linea.linea.
…CS Inside...
Com'è andata?Com'è andata?
• Confrontate il disegno con quello deiConfrontate il disegno con quello dei
compagni…compagni…
– Sono diversi?Sono diversi?
– Perché?Perché?
– Era difficile seguire le istruzioni?Era difficile seguire le istruzioni?
– Cosa manca dalle istruzioni?Cosa manca dalle istruzioni?
…CS Inside...
È un …?È un …?
Disegna una diagonaleDisegna una diagonale
…CS Inside...
È un tetto?È un tetto?
Disegna una diagonaleDisegna una diagonale
Disegna un'altra diagonale connessaDisegna un'altra diagonale connessa
all'estremo alto della primaall'estremo alto della prima
…CS Inside...
È una freccia?È una freccia?
Disegna una diagonaleDisegna una diagonale
Disegna un'altra diagonale connessa estremoDisegna un'altra diagonale connessa estremo
alto della primaalto della prima
Disegna una linea verticale dal punto in cui leDisegna una linea verticale dal punto in cui le
diagonali s'incontranodiagonali s'incontrano
…CS Inside...
È un ombrellone?È un ombrellone?
Disegna una diagonaleDisegna una diagonale
Disegna un'altra diagonale connessa estremoDisegna un'altra diagonale connessa estremo
alto della primaalto della prima
Disegna una linea verticale dal punto in cui leDisegna una linea verticale dal punto in cui le
diagonali s'incontranodiagonali s'incontrano
Disegna una linea orizzontale che interseca laDisegna una linea orizzontale che interseca la
linea retta.linea retta.
…CS Inside...
È una strada?È una strada?
Disegna una diagonaleDisegna una diagonale
Disegna un'altra diagonale connessa estremoDisegna un'altra diagonale connessa estremo
alto della primaalto della prima
Disegna una linea verticale dal punto in cui leDisegna una linea verticale dal punto in cui le
diagonali s'incontranodiagonali s'incontrano
Disegna una linea orizzontale che interseca laDisegna una linea orizzontale che interseca la
linea retta.linea retta.
Dall'estremo basso della prima linea, disegnaDall'estremo basso della prima linea, disegna
una linea curva.una linea curva.
…CS Inside...
È un ...È un ...
Disegna una diagonaleDisegna una diagonale
Disegna un'altra diagonale connessa estremoDisegna un'altra diagonale connessa estremo
alto della primaalto della prima
Disegna una linea verticale dal punto in cui leDisegna una linea verticale dal punto in cui le
diagonali s'incontranodiagonali s'incontrano
Disegna una linea orizzontale che interseca laDisegna una linea orizzontale che interseca la
linea retta.linea retta.
Dall'estremo basso della prima linea, disegnaDall'estremo basso della prima linea, disegna
una linea curva.una linea curva.
Disegna una linea diagonale dal fondo dellaDisegna una linea diagonale dal fondo della
prima diagonale alla prima linea.prima diagonale alla prima linea.
…CS Inside...
È un aquilone!!È un aquilone!!
Disegna una linea diagonaleDisegna una linea diagonale
Disegna un'altra linea diagonale connessaDisegna un'altra linea diagonale connessa
estremo alto della primaestremo alto della prima
Disegna una linea verticale dal punto in cui leDisegna una linea verticale dal punto in cui le
diagonali s'incontranodiagonali s'incontrano
Disegna una linea orizzontale che interseca laDisegna una linea orizzontale che interseca la
linea retta.linea retta.
Dall'estremo basso della prima linea, disegnaDall'estremo basso della prima linea, disegna
una linea curva.una linea curva.
Disegna una linea diagonale dal fondo dellaDisegna una linea diagonale dal fondo della
prima diagonale alla prima linea.prima diagonale alla prima linea.
Disegna una diagonale dal forndo dellaDisegna una diagonale dal forndo della
seconda diagonale alla prima linea.seconda diagonale alla prima linea.
…CS Inside...
O meglio, ci ha provato!O meglio, ci ha provato!
• Ora scrivete delleOra scrivete delle
istruzioni che funzionino!istruzioni che funzionino!
• Fate in modo che ogniFate in modo che ogni
istruzione NON SIAistruzione NON SIA
AMBIGUAAMBIGUA
• …… e sia sufficientementee sia sufficientemente
dettagliatadettagliata
…CS Inside...
In azione!In azione!
• Cosa dovete fare:Cosa dovete fare:
– Scrivete un algoritmoScrivete un algoritmo
– Test 1: provate ad eseguirloTest 1: provate ad eseguirlo
– Test 2: scambiatelo con il vostro compagno edTest 2: scambiatelo con il vostro compagno ed
eseguite il suoeseguite il suo
• Funziona???Funziona???
…CS Inside...
Come devono essere gliCome devono essere gli
algoritmi?algoritmi?
• Caratteristiche per un “buon” algoritmo?Caratteristiche per un “buon” algoritmo?
– Non deve essere ambiguoNon deve essere ambiguo
– Deve essere correttoDeve essere corretto
– Deve essere al giusto livello di dettaglioDeve essere al giusto livello di dettaglio
– Deve risolvere il problema in un tempo finito eDeve risolvere il problema in un tempo finito e
ragionevoleragionevole
…CS Inside...
Come devono essere gliCome devono essere gli
algoritmi?algoritmi?
• Più formalmente, dotati di:Più formalmente, dotati di:
– CorrettezzaCorrettezza
– EfficienzaEfficienza
– FinitezzaFinitezza
– DeterminismoDeterminismo
– TerminazioneTerminazione
– Realizzabilità praticaRealizzabilità pratica
– GeneralitàGeneralità
…CS Inside...
Gli algorithmi sonoGli algorithmi sono
fondamentali...fondamentali...
• ……nell'informatica, e nella societànell'informatica, e nella società
– Tutti gli aggeggi elettronici lavorano in base adTutti gli aggeggi elettronici lavorano in base ad
algoritmi.algoritmi.
– Ma anche voi...Ma anche voi...
• SvegliaSveglia
• ColazioneColazione
• LavarsiLavarsi
• ScuolaScuola
• CompitiCompiti
• ...ripeti per 200 giorni......ripeti per 200 giorni...
…CS Inside...
Gli algoritmi non sono tutto...Gli algoritmi non sono tutto...
• Soluzione di problemiSoluzione di problemi
• Il pensiero umanoIl pensiero umano
• InnamorarsiInnamorarsi
• E molto altroE molto altro
• Almeno finora...Almeno finora...
• Quando riusciremo ad esprimere il pensiero umanoQuando riusciremo ad esprimere il pensiero umano
come un algoritrmo avremo creato una veracome un algoritrmo avremo creato una vera
intelligenza artificiale!!intelligenza artificiale!!
…CS Inside...
ConclusioniConclusioni
• AlgoritmiAlgoritmi
– Metodo passo-passo per raggiungere un obbiettivoMetodo passo-passo per raggiungere un obbiettivo
• Seguire un algoritmoSeguire un algoritmo
– facilefacile
• Progettare un algoritmoProgettare un algoritmo
– difficile ma divertentedifficile ma divertente
– l'algoritmo “contiene” l'intelligenza del suo progettista.l'algoritmo “contiene” l'intelligenza del suo progettista.
• Gli algoritmi sono una parte fondamentale dellaGli algoritmi sono una parte fondamentale della
programmazione e dell'informaticaprogrammazione e dell'informatica

Sviluppo degli algoritmi

  • 1.
    …CS Inside... Computer ScienceInside…Computer Science Inside… Sviluppo diSviluppo di AlgoritmiAlgoritmi Adattato dalle slide originaliAdattato dalle slide originali della Royal Society of Edinburghdella Royal Society of Edinburgh
  • 2.
    …CS Inside... Cos'è unalgoritmo?Cos'è un algoritmo? • Un algoritmo è un procedimento cheUn algoritmo è un procedimento che risolve un determinato problemarisolve un determinato problema attraverso un numero finito di passi.attraverso un numero finito di passi. • Un programma è in sostanza laUn programma è in sostanza la traduzione di un algoritmo in una formatraduzione di un algoritmo in una forma eseguibile da un computer.eseguibile da un computer.
  • 3.
    …CS Inside... Le istruzioniLeistruzioni • Gli algoritmi (e I programmi) sono formati da una serie diGli algoritmi (e I programmi) sono formati da una serie di istruzioniistruzioni – dotati di particolari caratteristichedotati di particolari caratteristiche • L'algoritmo ottiene il risultato solo se le istruzioni sonoL'algoritmo ottiene il risultato solo se le istruzioni sono eseguite correttamente.eseguite correttamente. • Se le istruzioni sono interpretate dal computer (oSe le istruzioni sono interpretate dal computer (o dall'esecutore) in modo non previsto da chi ha progettatodall'esecutore) in modo non previsto da chi ha progettato l'algoritmo, ci possono essere effetti sgradevolil'algoritmo, ci possono essere effetti sgradevoli • Vediamo in prima persona che cosa accadeVediamo in prima persona che cosa accade
  • 4.
    …CS Inside... Seguiamo l'algoritmoSeguiamol'algoritmo • Tirate fuori un foglio e una matita.Tirate fuori un foglio e una matita. • Non potete chiedere aiutoNon potete chiedere aiuto • Non guardate il lavoro dei compagniNon guardate il lavoro dei compagni – Fate da soli!!!Fate da soli!!! – Sarà molto più divertenteSarà molto più divertente – …… e non c'è voto!e non c'è voto!
  • 5.
    …CS Inside... Ecco l'algoritmo– sEcco l'algoritmo – seguire alla lettera!eguire alla lettera!!! Disegna una diagonaleDisegna una diagonale Disegna un'altra diagonale connessa all'estremo alto della primaDisegna un'altra diagonale connessa all'estremo alto della prima Disegna una linea verticale dal punto in cui le diagonali s'incontranoDisegna una linea verticale dal punto in cui le diagonali s'incontrano Disegna una linea orizzontale che interseca la linea retta.Disegna una linea orizzontale che interseca la linea retta. Dall'estremo basso della prima linea, disegna una linea curva.Dall'estremo basso della prima linea, disegna una linea curva. Disegna una diagonale dal fondo della prima diagonale alla prima linea.Disegna una diagonale dal fondo della prima diagonale alla prima linea. Disegna una diagonale dal forndo della seconda diagonale alla primaDisegna una diagonale dal forndo della seconda diagonale alla prima linea.linea.
  • 6.
    …CS Inside... Com'è andata?Com'èandata? • Confrontate il disegno con quello deiConfrontate il disegno con quello dei compagni…compagni… – Sono diversi?Sono diversi? – Perché?Perché? – Era difficile seguire le istruzioni?Era difficile seguire le istruzioni? – Cosa manca dalle istruzioni?Cosa manca dalle istruzioni?
  • 7.
    …CS Inside... È un…?È un …? Disegna una diagonaleDisegna una diagonale
  • 8.
    …CS Inside... È untetto?È un tetto? Disegna una diagonaleDisegna una diagonale Disegna un'altra diagonale connessaDisegna un'altra diagonale connessa all'estremo alto della primaall'estremo alto della prima
  • 9.
    …CS Inside... È unafreccia?È una freccia? Disegna una diagonaleDisegna una diagonale Disegna un'altra diagonale connessa estremoDisegna un'altra diagonale connessa estremo alto della primaalto della prima Disegna una linea verticale dal punto in cui leDisegna una linea verticale dal punto in cui le diagonali s'incontranodiagonali s'incontrano
  • 10.
    …CS Inside... È unombrellone?È un ombrellone? Disegna una diagonaleDisegna una diagonale Disegna un'altra diagonale connessa estremoDisegna un'altra diagonale connessa estremo alto della primaalto della prima Disegna una linea verticale dal punto in cui leDisegna una linea verticale dal punto in cui le diagonali s'incontranodiagonali s'incontrano Disegna una linea orizzontale che interseca laDisegna una linea orizzontale che interseca la linea retta.linea retta.
  • 11.
    …CS Inside... È unastrada?È una strada? Disegna una diagonaleDisegna una diagonale Disegna un'altra diagonale connessa estremoDisegna un'altra diagonale connessa estremo alto della primaalto della prima Disegna una linea verticale dal punto in cui leDisegna una linea verticale dal punto in cui le diagonali s'incontranodiagonali s'incontrano Disegna una linea orizzontale che interseca laDisegna una linea orizzontale che interseca la linea retta.linea retta. Dall'estremo basso della prima linea, disegnaDall'estremo basso della prima linea, disegna una linea curva.una linea curva.
  • 12.
    …CS Inside... È un...È un ... Disegna una diagonaleDisegna una diagonale Disegna un'altra diagonale connessa estremoDisegna un'altra diagonale connessa estremo alto della primaalto della prima Disegna una linea verticale dal punto in cui leDisegna una linea verticale dal punto in cui le diagonali s'incontranodiagonali s'incontrano Disegna una linea orizzontale che interseca laDisegna una linea orizzontale che interseca la linea retta.linea retta. Dall'estremo basso della prima linea, disegnaDall'estremo basso della prima linea, disegna una linea curva.una linea curva. Disegna una linea diagonale dal fondo dellaDisegna una linea diagonale dal fondo della prima diagonale alla prima linea.prima diagonale alla prima linea.
  • 13.
    …CS Inside... È unaquilone!!È un aquilone!! Disegna una linea diagonaleDisegna una linea diagonale Disegna un'altra linea diagonale connessaDisegna un'altra linea diagonale connessa estremo alto della primaestremo alto della prima Disegna una linea verticale dal punto in cui leDisegna una linea verticale dal punto in cui le diagonali s'incontranodiagonali s'incontrano Disegna una linea orizzontale che interseca laDisegna una linea orizzontale che interseca la linea retta.linea retta. Dall'estremo basso della prima linea, disegnaDall'estremo basso della prima linea, disegna una linea curva.una linea curva. Disegna una linea diagonale dal fondo dellaDisegna una linea diagonale dal fondo della prima diagonale alla prima linea.prima diagonale alla prima linea. Disegna una diagonale dal forndo dellaDisegna una diagonale dal forndo della seconda diagonale alla prima linea.seconda diagonale alla prima linea.
  • 14.
    …CS Inside... O meglio,ci ha provato!O meglio, ci ha provato! • Ora scrivete delleOra scrivete delle istruzioni che funzionino!istruzioni che funzionino! • Fate in modo che ogniFate in modo che ogni istruzione NON SIAistruzione NON SIA AMBIGUAAMBIGUA • …… e sia sufficientementee sia sufficientemente dettagliatadettagliata
  • 15.
    …CS Inside... In azione!Inazione! • Cosa dovete fare:Cosa dovete fare: – Scrivete un algoritmoScrivete un algoritmo – Test 1: provate ad eseguirloTest 1: provate ad eseguirlo – Test 2: scambiatelo con il vostro compagno edTest 2: scambiatelo con il vostro compagno ed eseguite il suoeseguite il suo • Funziona???Funziona???
  • 16.
    …CS Inside... Come devonoessere gliCome devono essere gli algoritmi?algoritmi? • Caratteristiche per un “buon” algoritmo?Caratteristiche per un “buon” algoritmo? – Non deve essere ambiguoNon deve essere ambiguo – Deve essere correttoDeve essere corretto – Deve essere al giusto livello di dettaglioDeve essere al giusto livello di dettaglio – Deve risolvere il problema in un tempo finito eDeve risolvere il problema in un tempo finito e ragionevoleragionevole
  • 17.
    …CS Inside... Come devonoessere gliCome devono essere gli algoritmi?algoritmi? • Più formalmente, dotati di:Più formalmente, dotati di: – CorrettezzaCorrettezza – EfficienzaEfficienza – FinitezzaFinitezza – DeterminismoDeterminismo – TerminazioneTerminazione – Realizzabilità praticaRealizzabilità pratica – GeneralitàGeneralità
  • 18.
    …CS Inside... Gli algorithmisonoGli algorithmi sono fondamentali...fondamentali... • ……nell'informatica, e nella societànell'informatica, e nella società – Tutti gli aggeggi elettronici lavorano in base adTutti gli aggeggi elettronici lavorano in base ad algoritmi.algoritmi. – Ma anche voi...Ma anche voi... • SvegliaSveglia • ColazioneColazione • LavarsiLavarsi • ScuolaScuola • CompitiCompiti • ...ripeti per 200 giorni......ripeti per 200 giorni...
  • 19.
    …CS Inside... Gli algoritminon sono tutto...Gli algoritmi non sono tutto... • Soluzione di problemiSoluzione di problemi • Il pensiero umanoIl pensiero umano • InnamorarsiInnamorarsi • E molto altroE molto altro • Almeno finora...Almeno finora... • Quando riusciremo ad esprimere il pensiero umanoQuando riusciremo ad esprimere il pensiero umano come un algoritrmo avremo creato una veracome un algoritrmo avremo creato una vera intelligenza artificiale!!intelligenza artificiale!!
  • 20.
    …CS Inside... ConclusioniConclusioni • AlgoritmiAlgoritmi –Metodo passo-passo per raggiungere un obbiettivoMetodo passo-passo per raggiungere un obbiettivo • Seguire un algoritmoSeguire un algoritmo – facilefacile • Progettare un algoritmoProgettare un algoritmo – difficile ma divertentedifficile ma divertente – l'algoritmo “contiene” l'intelligenza del suo progettista.l'algoritmo “contiene” l'intelligenza del suo progettista. • Gli algoritmi sono una parte fondamentale dellaGli algoritmi sono una parte fondamentale della programmazione e dell'informaticaprogrammazione e dell'informatica

Editor's Notes

  • #4 Famous errors: Airbus: designed to start landing sequence at 50m height. But what happens if pilot showing off – as happened at Paris airshow… Ariane 5: used same software as Ariane 4 for guidance. But Ariane 5 goes faster – so when guidance software got speed data from sensors, it assumed an error, and sent error information on up the system, which was inpreted as real (but obviously crazy) data higher up – causing rocket to choose to self-destruct Early space probe (Mariner 7??): a single semi-colon in the wrong place gave the wrong meaning, and so spacecraft stayed in orbit forever rather than igniting rockets to head off somewhere else Jet fighter – flipped upside down when it went over the equator, because it didn't allow for negative latitude readings.
  • #6 Only need to use this slide if they don't have the hand-out.
  • #7 Bring out detail, correctness, ambiguity
  • #8 In a jokey fashion, show how the instructions "obviously" give us a kite!! (step through the animation of the kite picture).
  • #9 In a jokey fashion, show how the instructions "obviously" give us a kite!! (step through the animation of the kite picture).
  • #10 In a jokey fashion, show how the instructions "obviously" give us a kite!! (step through the animation of the kite picture).
  • #11 In a jokey fashion, show how the instructions "obviously" give us a kite!! (step through the animation of the kite picture).
  • #12 In a jokey fashion, show how the instructions "obviously" give us a kite!! (step through the animation of the kite picture).
  • #13 In a jokey fashion, show how the instructions "obviously" give us a kite!! (step through the animation of the kite picture).
  • #14 In a jokey fashion, show how the instructions "obviously" give us a kite!! (step through the animation of the kite picture).
  • #15 Then get them to try writing out a better/correct version. Once they have done this, get one of them to call out their list of instructions – and with a pen/chalk in hand, follow their instructions on the board at the front. Be as awkward as possible, illuminating any possible remaining ambiguity!!! You can encourage other pupils to shout out corrections if required – and they probably will!! Be sure that a set of correct instructions is discussed by the end.
  • #17 The level of detail is interesting, and merits some discussion – for example, one could say "fold the sheet in half" or something much more longwinded such as "take two adjacent corners and fold over so they match with the other two corners, and then press the paper flat" (aargh, not good either, but roughly there!) You can discuss some of the hard problems – timetabling, travelling salesman etc
  • #18 The level of detail is interesting, and merits some discussion – for example, one could say "fold the sheet in half" or something much more longwinded such as "take two adjacent corners and fold over so they match with the other two corners, and then press the paper flat" (aargh, not good either, but roughly there!) You can discuss some of the hard problems – timetabling, travelling salesman etc
  • #19 Tell them some algorithms in the phone - the lookup process when you search for a number - the calling process – send the number,wait, play ringing tone until answered or timeout/cancel etc etc. The idea that they are performing algorithms all the time is valuable – stress this one…
  • #21 Leave them with a good example for paper folding Identify one or more algorithms inside the phone We ended up with Detail, Completeness, Correctness, Precision, Ambiguity, Too complex a problem to solve as the keys to a good algorithm