TFA 2014-15 Pagine di Lavoro

Da aptiva.
Versione delle 15:04, 2 ott 2016, autore: Samuele.cattabriga (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Questo spazio è a disposizione degli studenti del corso TFA 2014-15 per le loro attività


Indice

Compiti

Per il 20 marzo

  • riguardare gli appunti e sviluppare riflessioni
  • scandire la pagina dei riferimenti, produrre commenti e proporre una organizzazione dei contenuti della pagina (che ora e' un po' caotica)
  • guardare ed eventualmente svolgere esercizi presi dalle pagine dell'anno passato.
  • guardare gli esercizi dell'anno passato in particolare quelli di "lettura", commentarli, proporne di nuovi.
  • proporre ogni ulteriore attivita' di approfondimento che si ritiene utile.
  • scrivere in modo cooperativo l'elenco dei concetti trattati nelle lezioni svolte

Per il 27 marzo

  • continuare gli esercizi di lettura, proporne di nuovi (anche in altri linguaggi...)
  • guardare i programmi e cominciare a pensare a quali argomenti insegnare, elementi in comune etc...
  • pensare a teatralizzazioni (di algoritmi di ordinamento o di altri...)

Per le lezioni successive

  • Licenze
  • Ricorsione
  • Sistemare riferimenti
  • Ruolo dei Laboratori
  • Motivatori (Raspberry, Robot, BBC MicroBit...)

Per il Prof. Davoli

Riferimenti

Concordo sul fatto che la sezione dei riferimenti e' un po' caotica, un aggiornamento ed una divisione per contenuto sarebbe fattibile? Es. "Supporti per la didattica" "Programmazione" "Scuola Italiana" ...


Esercizi

Inserisco due esercizi che ho proposto ai miei alunni sull'utilizzo dei numeri pseudo-casuali e degli algoritmi di ordinamento e ricerca su un vettore. I programmi da scrivere non hanno il "solito" carattere matematico e ho notato che la cosa predispone meglio i ragazzi.


1. Scrivi un programma che, preso in ingresso il numero di alunni da interrogare e il numero totale di alunni della classe, estragga casualmente i numeri d'ordine degli interrogati e restituisca i numeri estratti in ordine crescente, controllando che ogni numero compaia una sola volta.

1.1 Dopo aver introdotto il concetto di stringa e di vettore di stringhe proporrò una modifica all'esercizio precedente in modo che il programma restituisca direttamente il nome degli alunni da interrogare.


2. Scrivi un programma che implementi il gioco del Master Mind. Il programma deve estrarre casualmente un numero di 3 cifre. L'utente ha 10 tentativi per indovinare il numero estratto. Dopo ogni tentativo il programma dà all'utente dei suggerimenti stampando una R per ogni cifra corretta in posizione corretta, una B per ogni cifra corretta in posizione sbagliata. I suggerimenti devono essere stampati in ordine alfabetico decrescente (prima tutte le R, poi tutte le B). L'utente vince se riesce a indovinare il numero corretto prima di esaurire i tentativi a sua disposizione.


Sugli argomenti del corso

Grazie al supporto dei colleghi che già insegnano, che hanno più esperienza, gradirei avere una visione migliore di questi argomenti (che comunque sono in programma):

   Analisi dei "programmi" (linee guida/indicazioni ministeriali) per scuole di ogni ordine e grado. 
   Analisi dei "capitoli" dell'Informatica: Quali contenuti insegnare e in quale anno di corso (e in quali scuole). 
   In particolare: quali algoritmi si possono (devono?) insegnare in quale anno di corso (e in quali scuole).

Personalmente, sono a digiuno di quasi tutto quanto riguardi la programmazione didattica, quindi se vogliate dar idee o consigli (volti al presente o al futuro), credo che non saranno di aiuto solo per me... --Samuele.cattabriga (discussioni) 12:41, 25 feb 2015 (CET)

Personalmente ciò che si insegna dipende molto dalla tipologia di scuola. n scuole tecniche, quali l'industriale a indirizzo informatico in cui ho insegnato il primo anno, gli argomenti di programmazione venivano trattati in maniera molto tecnica, tanto che come libro di testo si utilizzava un manuale di C. Gli argomenti sono quelli molto basilari, riguardanti le strutture dati più semplici, array monodimensionali e bidimensionali con esercizi sull'utilizzo degli indici (copia di elementi con determinate caratteristiche in un secondo array, somma di elementi che soddisfino una condizione es. pari) e alla fine si trattava qualche algoritmo di ordinamento molto semplice quale ad esempio Bubble Sort. Si faceva anche un accenno alla programmazione orientata agli oggetti. Si trattava anche la parte relativa alla gestione delle stringhe e alla gestione della scrittura e lettura su file. Si faceva un po' di fatica nell'introdurre il concetto di puntatore. --Avallone (discussioni) 09:18, 20 mar 2015 (CET)

Convegno "Se l'Informatica è per tutti, come insegnare l'Informatica a tutti?"- Pisa 17/04/2015

Ho partecipato a questo convegno sull'insegnamento dell'Informatica nella scuola superiore organizzato dall'ANDINF (Associazione Nazionale Docenti di INFormatica). L'obiettivo dell'incontro era quello di fornire ai docenti degli spunti in modo da avere una visione coerente e sistemica dell'inserimento dell'Informatica nei vari percorsi formativi.

Sull'insegnamento della disciplina nei vari indirizzi scolastici, è intervenuto il Prof. Massimo Esposito (Dirigente Tecnico MIUR Direzione Generale Ordinamenti Scolastici), di seguito vi riporto un breve riassunto di tale intervento.

Gli Istituti Tecnici indirizzo Informatica e Telecomunicazioni (Tecnico IT) hanno l'obiettivo di formare dei professionisti dell'informatica e quindi devono essere fornite competenze specifiche nel campo dei sistemi informatici, dell'elaborazione dell'informazione, delle basi di dati, delle applicazioni e tecnologie web, delle reti e degli apparati di comunicazione.

Negli Istituti Tecnici indirizzo AFM (Amministrazione Finanza Marketing) o indirizzo SIA (Sistemi Informativi Aziendali) si dovrebbero fornire le competenze informatiche per la gestione del sistema informativo aziendale.

Negli Istituti Professionali l'approccio all'informatica deve essere soprattutto strumentale.

Nel Liceo Scientifico Scienze Applicate il ruolo dell'informatica deve essere quello di costruire uno strumento per l'indagine scientifica, ossia tale disciplina deve essere soprattutto di supporto laboratoriale alle materie scientifiche come Fisica e Scienze. In tale indirizzo di studio è fondamentale fare attività di SIMULAZIONE. Inoltre, per rafforzare il pensiero computazionale è importante anche fornire i fondamenti della programmazione indipendentemente dal linguaggio. --Elena (discussioni) 23:41, 20 apr 2015 (CET)



Ingenuamente pensavo che i diagrammi di flusso fossero semplicemente superati. Invece scopro che molti di voi li insegnano ancora ed esiste una lunga diatriba sulla questione. Quali i punti a favore e i punti contro? (provo a cominciare io) --Michael (discussioni) 09:25, 28 feb 2015 (CET)

Punti a favore dello pseudocodice

  • I concetti di sequenza, selezione e iterazione sono presenti e hanno la stessa struttura di quella di un linguaggio di programmazione (imperativo)
  • Il passaggio ad un linguaggio di programmazione ad alto livello è più immediato (specialmente per linguaggi come Snap! o Python)

Punti contro lo pseoudocodice

  • Spesso si tende a vincolarli al linguaggio di programmazione
  • Rischio di inserire istruzioni sul "come" fare qualcosa (es. puntatori, costrutti o funzioni specifiche del linguaggio) piuttosto che sul "cosa"
  • Nessuno standard
  • Perdita di astrazione--Avallone (discussioni) 18:06, 2 mar 2015 (CET)

Punti a favore dei flowchart

  • Grafici e schematici, il che aiuta la maggior parte delle persone che usano la vista come senso predominante: richiedono meno astrazione.
  • Indipendenti dal linguaggio, aiutano a concentrarsi sul "cosa"
  • Standardizzati

Punti contro i flowchart

  • Utili solo per programmi semplici, dopo diventano ingestibili

(i flow chart vengono utilizzati principalmente per far capire i costrutti fondamentali (scelte condizionate e cicli), vengono poi abbandonati quando si ragiona su programmi più complessi, oppure vengono limitati a porzioni del programma principale come supporto al ragionamento) --Avallone (discussioni) 18:04, 2 mar 2015 (CET)

  • Richiedono un salto maggiore nel passaggio ad un linguaggio, poi

(il passaggio al linguaggio è un passaggio che deve essere indipendente dalla rappresentazione della soluzione del problema, e penso sia proprio questa la potenza del flow chart, un po' come l'UML) --Avallone (discussioni) 18:04, 2 mar 2015 (CET)


Introduco un terzo "incomodo" alle due astrazioni sinora presentate. Quando ero alle medie inferiori e poi nei cinque anni di scuola superiore, al posto della costruzione di diagrammi di flusso mi vennero insegnati quelli che confidenzialmente venivano illustrati come struttogrammi, ma che ho scoperto avere un diverso nome, ereditato dagli ideatori: i diagrammi di Nassi–Shneiderman. La proposta dei due ricercatori (documentata nell'articolo dell'agosto del 1973 - Nassi, I.; Shneiderman, B.: Flowchart techniques for structured programming, SIGPLAN Notices XII) descrive una possibile variante di diagramma di flusso che, senza l'uso di frecce o forme, modelli l'algoritmo in forma di blocchi contigui, legati tra loro per adiacenza verticale o con incastro specifico a seconda dell'operazione identificata, per permettere una strutturazione del programma.

Vengono garantiti:

  • selezione singola e multipla
  • costrutti di ciclo (iterazione controllata nelle tre varianti più comunemente associate a FOR, WHILE, DO ... WHILE )
  • uso di procedure e funzioni (un costrutto definito dalla doppia bordatura)

Questo tipo di diagramma tende come lo pseudocodice a vincolarsi al contenuto (in effetti, all'interno dei blocchi, viene scritta una sorta di comando), ma si mantiene ad un livello più astratto, garantendo il vantaggio di una visione d'insieme grafica che permetta l'identificazione dei punti salienti della risoluzione (un po' come avvenga per i diagrammi di flusso). A mio parere, rimane una proposta d'antan, ma con i propri pregi tale da non essere subito da buttar via. E, non volontariamente (penso), somiglia nell'estetica alle forme usate dall'interfaccia di Scratch, che andremo a vedere presto tra gli strumenti didattici... --Samuele.cattabriga (discussioni) 18:05, 2 mar 2015 (CET)


Paolini: discussione Flow-Chart: Ho avuto un "dubbio critico" in merito ai Diagrammi di Flusso.. poi mi sono "ripreso": i Flow-Chart sono quella "cosa" che ti cambia la vita! L'assicurazione A paga in caso di autoradio rubata O vetro rotto; B con vetro rotto E autoradio rubata. A parità di prezzo, meglio A o B?

Vantaggi del F-C: lo disegni --> si capisce. Svantaggi dei F-C e Pro/Contro degli altri: irrilevanti.

Lavorando in contesti "stringenti" ho sviluppato "lezioni rush" (non sempre indicate ad orari di più ampio respiro) per passare rapidamente dai Diagrammi di Flusso ad un linguaggio vero e proprio (C, anche Java o PHP ): disegnare il blocco *else* fisicamente sotto lo *then*. Si richiede di creare la tabella delle variabili (RAM) con Nome_Var | TIPO | Contenuto ----- | barrando/cancellando i valori "come fossimo la CPU". Qualche esercizio poi si aggiungono "strani dettagli": if( <cond> ) attorno al rombo <cond>; istruzioni formali: parentesi, i *;*, START--> main() ecc. Si dice che ogni linguaggio ha il suo "modo di tradurre i flow-chart", aggiungere "un po' assiomaticamente" dettagli quali: - Gli include/import "attivano funzionalità" (compilatore, I/O ecc.) - Il main è la "traduzione" di START - Dalla RAM l'elenco variabili (già tipate).

Tornando alla diatriba: trovo un ottimo programmatore "ad Oggetti", incapace di comprendere/organizzare un diagramma di flusso equivalente ad un ottimo docente di storia medioevale, incapace di distinguere se gli uomini delle caverne "vengono prima o dopo".

Che poi.. in contesti "poco curricolari" (es:1°biennio IPSIA, 1 ora/sett.) i F-C possano essere relegati ai momenti meno "sommativi" (voto) ma più "formativi" (corde vibrate: Scratch) e/o in contesti "medio curricolari" (es:Informatica in 4a ma non in 5a) si debba "imperare" meno col C ed "oggettivare" di più col Java e/o si debba supportare la "gestione" mentale degli algoritmi anche con modalità testuali/verbali e/o in contesti evoluti (es. Reti, Oggetti) i Diagrammi siano scarsamente significativi alla rappresentazione del sistema informativo ecc. ..siano fatti discutibili, va bene, ma "saltare completamente" i Diagrammi di Flusso: MAI.

Oggettivamente capisco che vi possano anche essere metodi migliori per "trasferire Algoritmi" (da dimostrare..), ma soggettivamente mi schiero a difesa del Flow-Chart per l'elevatissimo rapporto - Potenza/Costo - che lo rende un "must non solo per programmatori".

Progetti personali

Anche per evitare sovrapposizioni, se abbiamo già idee sui progetti personali (per il corso o per la tesi finale), creo una pagina apposita.


Esercizi di "Lettura"

Sto cercando di prendere confidenza con il linguaggio Python....ho iniziato dagli Esercizi di "Lettura" dello scorso anno e ho pensato di creare una pagina in cui possiamo inserire i nostri commenti ed eventuali nuovi esercizi.


Programmare con gli oggetti

Secondo il mio parere questo è uno degli argomenti fondamentali nell'ambito della programmazione quindi creo una pagina apposita dove mettere i contributi sul tema Programmazione orientata agli oggetti


Automi (macchine automatiche, automi antropomorfi, ecc...)

Quello delle operazioni e dei meccanismi volti a riprodurre, semplificare e simulare i processi automatici ed automatizzabili (con una declinazione particolare verso la cibernetica) è un tema "caldo" e interessante che mi sta a cuore da tempo e che può facilmente andare a braccetto con alcuni degli attrattori proposti nella pagina del wiki TFA 2014-15 Argomenti da trattare nel corso, coinvolgendo tecnica, storia, scienza ma anche un pizzico di curiosità.

Preparai in passato una breve presentazione (non esaustiva, data la vastità dell'argomento), che esposi a lezione durante un corso seguito nel mio percorso di studi informatici (per questo ringrazio l'esame di E-learning: storia e didattica dell'Informatica) e ve la riporto anche qui, qualora possa appassionare anche voi (ed aiutare ad appassionare gli studenti).

Seminario automi (formato PDF) --Samuele.cattabriga (discussioni) 11:09, 17 mar 2015 (CET)


Riflessione sui programmi

Dalla pagina principale:

Per l'orale, avevo preparato un foglio che comparava le materie dalla prima alla quarta (i programmi di quinta sono troppo diversi, così li ho semplicemente riportati). E' molto caotico e poco leggibile, ma è una base da cui partire. --Michael (discussioni) 16:06, 23 mar 2015 (CET)

Vorrei far notare come per il primo biennio ad esclusione dei Tecnici ad indirizzo Tecnologico per tutti gli altri indirizzi (Tecnico economico, Professionali e Liceo) sono previste 2 ore settimanali. Cosa significa? NB. Queste sono le cattedre dei novizi. I docenti di ruolo si collocano prevalentemente sul triennio.

I Quadrimestre Ottobre-Gennaio (i tempi per le nomine sono sempre lunghi, Settembre ciao)

       Circa 14 settimane (28-30h) tra cui:

2 verifiche obbligatorie(+ correzione in classe ed esercitazione di preparazione, circa 4h ognuna). Totale 8 ore + orali.

       Assemblea di istituto, assemblea di classe, sciopero generale per solidarietà ai metalmeccanici (2-4 h)
       Precetto di Natale, giornata della pace, della memoria, film sulla mafia/guerra/altro tema educativo a scelta (2h)

Oops. Sono rimaste 18-20h lorde tra cui:

       Appello, richiamo all’ordine, trasferimento caotico in laboratorio (10 min per ora)
       Varie ed eventuali (circolari, paternali ecc..) (circa 15 min ogni tanto)

Oops. Sono rimaste 14-15h tra cui:

       Soglia di attenzione 30 min, poi si stancano, hanno 14 anni e fanno 5h al giorno. Dopo esercitazioni.

Morale della favola: il tempo disponibile per teoria, spiegazione, nuovi argomenti è al massimo 7/8 ore per quadrimestre. E quindi il domandone? Come facciamo ad evitare di divenire somministratori di pillole di nozionismo?

Teatralizzazione

Oltre alle molte attività di teatralizzazione (e non solo) presenti in CS Unplugged, ne presento una proveniente da Programma Il Futuro, che è la versione italiana di code.org.

Si tratta di un'attività per far capire il funzionamento di Internet "a livello Network".

Oltre ai puzzle "online" (su cui sarebbe interessante una discussione) sono presenti anche altre attività unplugged che introducono ai concetti fondamentali dell'Informatica, proponendo spesso attività in cui gli studenti "impersonano" l'esecutore (oltre che il programmatore).

In questa pagina è presente una proposta di Teatralizzazione del protocollo SMTP a cura di Alessandro Grandi --Profgrandi (discussioni) 17:16, 2 apr 2015 (CEST)

Volevo solo proporre un esempio di teatralizzazione che si potrebbe effettuare in classe per spiegare l'algoritmo per la ricerca del massimo in un vettore utilizzando un mazzo di carte e chiedendo ad alcuni alunni di ricercare la carta più alta nel mazzo. Quando il mazzo sarà composto da poche carte i ragazzi istintivamente metteranno tutte le carte scoperte sul tavolo ed "a occhio" ricercavano il massimo. Quando il mazzo di carte avrà un numero di carte elevato allora dovranno utilizzare un metodo di ricerca che è identico alla ricerca del massimo in un vettore di n elementi. Procederanno scoprendo man mano ogni singola carta finché il mazzo non sarà esaurito e metteranno da parte la carta che in quel momento ha il valore maggiore. Se la nuova carta scoperta ha un valore maggiore della carta che è messa da parte allora quest'ultima verrà sostituita. Il mazzo quindi sarà il nostro vettore, lo scorrere del mazzo quindi può essere paragonato allo scorrere degli elementi del vettore attraverso l'indice ed il confronto tra la carta corrente e quella messa da parte potrà essere implementato con una condizione. Scorreremo il mazzo finché non saranno finite le carte, ovvero finché non saranno esauriti gli elementi del vettore. Il mettere da parte la carta, magari dandola in mano ad un compagno, farà capire che ci deve essere qualcuno o meglio qualcosa che deve "ricordarsi" del valore massimo corrente e quindi far capire la necessità di utilizzo della variabile MAX. (Avallone).

Basta porre il limite di due carte max scoperte sul tavolo (in fondo gli operatori di confronfo forniti dai processori hanno due soli operandi!) Renzo (discussioni) 11:16, 23 apr 2015 (CEST)

Un altro esempio che mi è venuto in mente riguardo l'uso della teatralizzazione è stato quando l'altro giorno ho spiegato l'algoritmo di routing dinamico RIP basato su distance vector. Sarebbe molto semplice far capire agli studenti il concetto di distance vector, tabella di routing e routing rendendo essi stessi dei router. Mappando la classe come una rete, ogni studente può inerpretare un router che, utilizzanto RIP, inizialmente conosce solo la distanza tra se e i suoi nodi direttamente connessi o "vicini" e la sua "tabella di routing" conterrà solo gli studenti "vicini". A questo ogni studente preparerà un biglietto da inviare a tutti gli studenti "vicini" con le informazioni riguardo gli studenti che lui può raggiungere e da tutti riceverà lo stesso foglietto contenente gli studenti raggiungibili attraverso gli studenti "vicini". Aggiornerà la sua "tabella di routing" e passerà all'iterazione successiva. In questo modo lo studente capirà perchè un suo compagno seduto dall'altra parte della classe non è immediatamente (alla prima iterazione) raggiungibile, e allo stesso modo capirà perchè non è immediata la scoperta del percorso migliore.--Avallone (discussioni) 10:02, 24 apr 2015 (CEST)

Halting Problem & Goldbach Conjecture

di Elena e Raoul

Abbiamo creato la seguente pagina per proporvi una discussione su problemi complessi.

Codice visto a lezione

Ho creato questa pagina Renzo (discussioni) 18:58, 9 apr 2015 (CEST)

Provate questo: imparare a programmare giocando

www.codecombat.com

Motivazioni

Ho creato una pagina con elenco di siti/filmati accattivanti per alunni (e non solo..). --Andrea.paolini2 (discussioni) 00:07, 8 mag 2015 (CEST)

Computer a 9 dollari

CHIP è una idea di un gruppo di ragazzi della Next Thing. Il loro progetto di fornire a 9 dollari un computer ha già raccolto più di un milione di dollari sul sito di crowfounding kickstarter. --Avallone (discussioni) 11:50, 14 mag 2015 (CEST)

Ipertesti ibridi

Cercando materiale sulla "storificazione" degli algoritmi e sull'insegnamento del pensiero computazionale tramite storytelling, mi sono imbattuto su questo Twine, che è fondamentalmente uno strumento per creare ipertesti, ma con la possibilità di introdurvi variables, conditional logic, images, CSS, and JavaScript (cit. dal sito), generando codice HTML ben formato. Tra i molti esempi di creazioni, date le premesse, vi sono specialmente text adventure games, ma lo strumento potrebbe essere usabile anche per la didattica. --Samuele.cattabriga (discussioni) 12:39, 27 mag 2015 (CEST)

Coding OnLine

In un corso di aggiornamento a scuola ci è stata proposta questa piattaforma di coding online di python. Il sito è http://www.codeskulptor.org/ ed è stato sviluppato da John Greiner (http://www.cs.rice.edu/~greiner/). La piattaforma è completamente indipendente ed effettua in maniera automatica il versioning del file ogni volta che esso viene salvato, attraverso la pubblicaizone di un link che può essere condiviso per accedere al file. I file possono essere scaricati o uploadati da locale. La piattaforma funziona su tutti i dispositivi, tranne che sui telefonini.--Avallone (discussioni) 15:11, 23 feb 2016 (CET)

Coding Bat

Questo sito, CodingBat, presenta alcuni esercizi "di riscaldamento" o più complicati in Java ed in Python, suddivisi per gradi e con un sistema di riconoscimenti se si risolvano i quesiti nel motore di esecuzione reso disponibile internamente. --Samuele.cattabriga

Strumenti personali
Namespace

Varianti
Azioni
Navigazione
Strumenti