Alcune attività di programmazione (e di riflessione sulla
programmazione) intrecciate ai diversi apprendimenti disciplinari

Alcune piccole sequenze di attività affrontabili con vari strumenti online
proposte per gruppi di lavoro (A, B, C) con docenti di diversi livelli scolastici


A

(1) Apri (e prova a rispondere e a riavviare più volte) questo quesito.
Spiega a parole e/o con un diagramma un possibile algoritmo per generare la risposta a partire dalle parole che compaiono.
Quali analogie tra apprendimento matematico e apprendimento linguistico suggerisce questo "script" (uno "script" è un piccolo "programma")
   

(2) Apri (e prova a rispondere e a riavviare più volte) questo quesito.
I grafi di flusso sono forse lo strumento più semplice per descrivere algoritmi a partire dai primi livelli scolastici.
Come si potrebbero descrivere questi problemi con delle formule?  In quali livelli scolastici?
Qui sotto un altro diagramma di flusso, usato per descrivere le attività economiche di una società che viveva di caccia e raccolta.
Un possibile esercizio per gli alunni:  descrivi a parole le "frecce" 1, 2, … 9.
   

(3) Apri e prova ad usare più volte questo script.
È facile descrivere, a parole, un possibile algoritmo per generare le stesse uscite.  Quale potrebbe essere questa descrizione?  Qual è il vantaggio principale di usare un programma?
   

(4) Apri WolframAlpha, il software matematico libero più diffuso al mondo.
 Copia e incolla - o batti direttamente - nel box di input (quello raffigurato sopra)  120-45-30     Che cosa viene rappresentato?  Come l'insegnante della scuola di base può utilizzare le immagini generate?  Quando si può far usare WolframAlpha agli alunni per queste prime attività?

(5) Copia e incolla - o batti direttamente - in WolframAlpha  blue+yellow     Che cosa viene rappresentato?  Quale operazione di "somma" viene eseguita?

(6) Copia e incolla in WolframAlpha:
solve x^3 + 3*x^2 - 2 = 0 using bisection method for 0 <= x <= 2 with 1 digits precision
poi:
solve x^3 + 3*x^2 - 2 = 0 using bisection method for 0 <= x <= 2 with 2 digits precision
solve x^3 + 3*x^2 - 2 = 0 using bisection method for 0 <= x <= 2 with 3 digits precision
poi in fondo alla finestra clicca  more digits
Quando è spiegabile agli alunni il funzionamento dell'algoritmo di bisezione?

(7)  Il linguaggio di programmazione che inconsapevolmente tutti usiamo di più è quello incorporato nei browser:  JavaScript;  lo usiamo quando prenotiamo qualche servizio, quando facciamo particolari ricerche, …  Se ne può fare un uso sofisticato ma lo si può impiegare anche in modo semplice, per imparare, ad un primo livello, ad usare un linguaggio di programmazione universale.  Se sei interessato alla sua storia vedi Wikipedia (di cui, per tutti gli argomenti di natura scientifica, anche con gli studenti, è bene esaminare la versione "inglese"; in quella "italiana" ci sono anche molte sciocchezze ed errori).
Vediamo solo qualche esempio d'uso:  clicca qui.

(8) Consideriamo le ultime righe del primo esempio di programma sopra richiamato e la corrispondente uscita:
A = [4.1, 3, 12, -3, 1e3, 1e-4]
document.write(A,"<br>")B = A; n = A.length
for(k=0; k<n; k=k+1) {
  for(i=k+1; i<n; i=i+1) { if(B[i]<B[k]) {C=B[k]; B[k]=B[i]; B[i]=C} }  }
document.write(B)

4.1,3,12,-3,1000,0.0001
-3,0.0001,3,4.1,12,1000
Prova a spiegare a parole che cosa fanno e come operabo queste righe di programma.
Nelle scuole superiori è utile avere un'idea di come funziona un programma. Nelle scuole ad indirizzo tecnico-informatico si possono studiare linguaggi di programmazione più sofisticati. Nelle altre l'uso di JavaScript può essere uno strumento per realizzare dei semplici programmi.

Per altri script vedi qui, per altri esempi d'uso di WolframAlpha vedi qui.



B

(1) Apri (e prova a rispondere e a riavviare più volte) questo quesito.
Spiega a parole e/o con un diagramma un possibile algoritmo per generare la risposta a partire dai numeri che compaiono.
(Questo è uno "script", cioè un piccolo "programma")
   

(2) Apri (e prova a rispondere e a riavviare più volte) questo quesito.
I grafi di flusso sono forse lo strumento più semplice per descrivere algoritmi a partire dai primi livelli scolastici.
Come si potrebbero descrivere questi problemi con delle formule?  In quali livelli scolastici?
Qui sotto un altro diagramma di flusso, usato per descrivere come una famiglia di pinguini provvede al proprio mantenimento.
Un possibile esercizio per gli alunni:  descrivi a parole le "frecce" 1, 2, … 6.
   

(3) Apri lo script divisione.
 Come opera questo script?  Per capirlo occorre conoscere l'algoritmo della divisione.  Quale?  Quello "magico" o quello lungo?  Perché?  Come facciamo a capire qual è il periodo?

(4) Apri WolframAlpha, il software matematico libero più diffuso al mondo.
 Copia e incolla - o batti direttamente - nel box di input (quello raffigurato sopra)  minimal coin form 26.85 euros     Che cosa viene rappresentato?  Come l'insegnante della scuola di base può utilizzare le immagini generate?  Quando si può far usare WolframAlpha agli alunni per queste prime attività?

(5) Copia e incolla - o batti direttamente - in WolframAlpha  1563 to roman     Che cosa viene rappresentato?  È meglio insegnare l'algoritmo per passare dalla scrittura decimale a quella romana o farlo mettere a punto dagli alunni sulla base della osservazione di molti esempi e, una volta individuatolo, farlo controllare sulla base di altri esempi?  Perché?

(6) 

Un numero descrivibile, cifra per cifra, con un algoritmo è razionale?  Prova a rispondere.  Poi considera il numero generato da questo algoritmo:

Visualizzane le cifre con WolframAlpha copiando e incollando:
for n=1 to oo sum(1/10^(n*n))
Per vedere in forma più estesa il numero clicca  more digits
Che cosa significa razionale?

(7)  Il linguaggio di programmazione che inconsapevolmente tutti usiamo di più è quello incorporato nei browser:  JavaScript;  lo usiamo quando prenotiamo qualche servizio, quando facciamo particolari ricerche, …  Se ne può fare un uso sofisticato ma lo si può impiegare anche in modo semplice, per imparare, ad un primo livello, ad usare un linguaggio di programmazione universale.  Se sei interessato alla sua storia vedi Wikipedia (di cui, per tutti gli argomenti di natura scientifica, anche con gli studenti, è bene esaminare la versione "inglese"; in quella "italiana" ci sono anche molte sciocchezze ed errori).
Vediamo solo qualche esempio d'uso:  clicca qui.

(8) Altro esempio di uso di JS:
Copia nel box per il testo del programma le righe seguenti
n=1896
k=2
while(k <= n) {if(n/k == Math.round(n/k)) {n = n/k; document.write(k," ")} else k=k+1 }

Prova a spiegare a parole che cosa fa e come opera questo programma.
Nelle scuole superiori è utile avere un'idea di come funziona un programma. Nelle scuole ad indirizzo tecnico-informatico si possono studiare linguaggi di programmazione più sofisticati. Nelle altre l'uso di JavaScript può essere uno strumento per realizzare dei semplici programmi.

Per altri script vedi qui, per altri esempi d'uso di WolframAlpha vedi qui.



C

(1) Apri (e prova a rispondere e a riavviare più volte) questo primo e questo secondo quesito.
(Questi sono "script", cioè dei piccoli "programmi")
Spiega a parole e/o con un diagramma un possibile algoritmo per generare la risposta a partire dai numeri che compaiono.
    

(2) Apri (e prova a rispondere e a riavviare più volte) questo quesito.
I grafi di flusso sono forse lo strumento più semplice per descrivere algoritmi a partire dai primi livelli scolastici.
Come si potrebbero descrivere questi problemi con delle formule?  In quali livelli scolastici?
Qui sotto un altro diagramma di flusso, usato per descrivere le attività economiche di una società che viveva di caccia e raccolta.
Un possibile esercizio per gli alunni:  descrivi a parole le "frecce" 1, 2, … 9.
   

(3) Apri lo script ordina_parole.
  Spiega a parole e/o con un diagramma un possibile algoritmo per generare la risposta a partire dalle parole che compaiono.
Quali analogie tra apprendimento matematico e apprendimento linguistico suggerisce questo "script"?

(4) Lo script codifica realizza codifiche e decodifiche
  Prova a decodificare (copia e incolla nella casella opportuna, scegli "Letters" e clicca "Decode")
WUugoUpMjo
L'esempio mette in luce un altro aspetto didatticamente importante: gli algoritmi (e la matematica) sono presenti in una marea di circostanze della vita quotidiana. La scuola fa riflettere su questo aspetto?

(5) Apri WolframAlpha, il software matematico libero più diffuso al mondo.
 Copia e incolla - o batti direttamente - nel box di input (quello raffigurato sopra)  10000 sec     Che cosa viene rappresentato?  Clicca sia "Approximate forms" che "Exact forms".  Come l'insegnante della scuola di base può utilizzare comandi come questi?  Quando si può far usare WolframAlpha agli alunni per queste prime attività?

(6) Copia e incolla - o batti direttamente - in WolframAlpha  3 dice     Clicca (in fondo) "Roll again" più volte.  Questo comando usa un opportuno "generatore di numeri casuali".  L'esempio ti suggerisce qualche attivià didattica che potrebbe essere realizzata generando a caso numeri.  Quale ruolo didattico potrebbe avere la generazione di numeri a caso?  Poi, come fa un computer a generare con un algoritmo numeri a caso?  Ma, "a caso" che cosa significa?  Sono tutti problemi su cui sei invitato a riflettere ...

(7) Copia e incolla in WolframAlpha  quotient and remainder of (3*x^4-x^3) / (x^2-x+2)
Occorre imparare a fare "a mano" semplici divisioni tra polinomi (come quella riportata sotto), per capire le analogie tra questo algortimo e quello per la divisione tra numeri.  L'obiettivo è capire come un algoritmo può effettuare il calcolo.  Poi (quando?) si può usare il computer (quali vantaggi didattici ha il suo uso?).
Volendo si può usare il computer anche per esplorare degli esempi di calcolo. Ad esempio posso copiare e incollare  (x^4 - 3 x^3 + 5 x^2 - 11 x - 12)/(x - 3) long division
Chi non insegna nelle superiori non si preoccupi. Sono solo esempi per far pensare ...

(8)  Il linguaggio di programmazione che inconsapevolmente tutti usiamo di più è quello incorporato nei browser:  JavaScript;  lo usiamo quando prenotiamo qualche servizio, quando facciamo particolari ricerche, …  Se ne può fare un uso sofisticato ma lo si può impiegare anche in modo semplice, per imparare, ad un primo livello, ad usare un linguaggio di programmazione universale.  Se sei interessato alla sua storia vedi Wikipedia (di cui, per tutti gli argomenti di natura scientifica, anche con gli studenti, è bene esaminare la versione "inglese"; in quella "italiana" ci sono anche molte sciocchezze ed errori).
Vediamo solo qualche esempio d'uso:  clicca qui.

(9) Consideriamo l'esempio finale del documento su JS:

function F(x) { return  Math.abs(x*(x-2)) }; a = 0; b = 3
document.writeln("F(x) = abs(x*(x-2)); a = 0; b = 3<br>")
n=10000
for(i = 0; i < 5; i = i+1) {
  s=0; h=(b-a)/n; for (var j=0; j < n; j=j+1) {s = s + F(a+(j+1/2)*h)}
  document.writeln(n, " rettangoli, integrale su [a,b] di F = ", s*h, "<br>"); n=n*2
                           }
Output:
F(x) = abs(x*(x-2)); a = 0; b = 3
10000 rettangoli, integrale su [a,b] di F = 2.666666654167488
20000 rettangoli, integrale su [a,b] di F = 2.666666663541553
40000 rettangoli, integrale su [a,b] di F = 2.6666666658854408
80000 rettangoli, integrale su [a,b] di F = 2.6666666664713405
160000 rettangoli, integrale su [a,b] di F = 2.6666666666178482

Prova a spiegare a parole che cosa fa e come opera questo programma.
Questo integrale, come si capisce, vale 2.666... = 2+2/3 (Geogebra fornirebbe 2.7 !!!). Questo algortimo è un modo per calcolare gli integrali o è anche un modo per "definirli"? Pensaci ... (per molti libri di testo questo integrale non sarebbe calcolabile!)
Nelle scuole superiori è utile avere un'idea di come funziona un programma. Nelle scuole ad indirizzo tecnico-informatico si possono studiare linguaggi di programmazione più sofisticati. Nelle altre l'uso di JavaScript può essere uno strumento per realizzare dei semplici programmi.

Per altri script vedi qui, per altri esempi d'uso di WolframAlpha vedi qui.