Alml consente la realizzazione di questionari di verifica che producono, nella composizione HTML, delle pagine dinamiche in grado di calcolare automaticamente l'esito degli stessi. Attraverso questo meccanismo è possibile imporre anche un tempo esatto per lo svolgimento delle verifiche, con il calcolo di una «penalità» nel punteggio, per ogni secondo di ritardo.
Le pagine HTML prodotte in questo modo contengono del codice JavaScript e si concludono normalmente con la stampa di un rapporto che sintetizza l'esito della verifica.
Se lo studente che svolge la verifica tenta di ricaricare la pagina, o di ritornare sulla pagina della verifica quando ha ottenuto la pagina conclusiva da stampare, ottiene l'azzeramento di tutti i dati. Inoltre, quando ritorna alla pagina della verifica, deve provvedere anche a ricaricarla, altrimenti il meccanismo di controllo successivo rischia di fallire in ogni caso (a danno dello studente stesso). |
Allo stato attuale, le verifiche realizzate con Alml sono relativamente affidabili, usando i navigatori consueti (i vari derivati di Mozilla e Internet Explorer, ma tralasciando Galeon), ed è anche possibile fare in modo che la verifica si svolga in una finestra priva di menù e icone. Tuttavia, rimane la possibilità che uno studente, particolarmente esperto, possa scaricare il sorgente utilizzando direttamente il protocollo HTTP (con Wget per esempio) per poi interpretare il codice JavaScript, ma per farlo deve disporre degli strumenti necessari nella postazione in cui si trova a dover svolgere la verifica, ma soprattutto deve avere anche il tempo per compiere tale attività.
|
Per definire un questionario di verifica con Alml, occorre dichiarare un capitolo con un'intestazione speciale: testh1, oppure unnumberedtesth1. Questi elementi prevedono gli attributi degli altri capitoli normali, aggiungendo due attributi speciali per definire la durata massima in secondi e la penalità da dedurre dal punteggio complessivo per ogni secondo di ritardo:
|
In questo caso, l'esempio mostra la dichiarazione del titolo di una verifica che prevede un tempo massimo di 10 minuti (600 s), una penalità di 0,008 per ogni secondo di ritardo (circa 0,5 punti per ogni minuto) e un tempo massimo di 20 s per stampare l'esito della verifica stessa; inoltre si sa che al massimo è possibile raggiungere il punteggio di 10.
Dopo il titolo, si possono mettere dei blocchi descrittivi, come nei capitoli normali, per esempio delle figure o delle tabelle di riferimento. Successivamente è obbligatorio inserire almeno un elemento testinfo, con lo scopo, probabilmente, di identificare l'esecutore della verifica:
|
Ogni elemento testinfo si traduce in un campo da compilare, secondo il significato dato dalla descrizione che appare nell'elemento stesso.
Tra gli elementi testinfo (ed eventualmente anche dopo), si possono inserire dei blocchi descrittivi liberi. Successivamente, si devono indicare delle domande, che possono prevedere diverse modalità di risposta. Le domande sono racchiuse in un elemento differente, a seconda del tipo di risposta che ci si aspetta; alle domande seguono le risposte, racchiuse da elementi appropriati. L'esempio seguente riguarda il caso di una domanda che richiede una sola risposta, scelta da un elenco:
|
In questo caso, l'elemento testlistquestion contiene il testo della domanda; l'elemento testlist è fatto per contenere un elenco di elementi testlistitem, i quali contengono le varie risposte. Si può osservare che l'attributo score degli elementi testlistitem consente di stabilire il punteggio che si ottiene in base alla risposta e che questo può anche essere negativo.
Si osservi che l'elemento testlist genera un elenco numerato con bottoni, dove solo un bottone per tutto il gruppo può essere selezionato. Tuttavia, è possibile che ci siano risposte alternative valide, eventualmente con punteggi differenti.
L'esempio seguente riguarda il caso di una domanda che richiede la selezione di tutte le risposte valide di un elenco:
|
Il funzionamento di questo tipo di domanda con risposte a selezione multipla funziona in modo simile a quello in cui la risposta valida può essere una sola. Si può osservare che in questo caso diventa importante attribuire valori negativi alle risposte errate, perché altrimenti sarebbe facile risolvere le verifiche selezionando tutte le risposte.
L'esempio seguente riguarda il caso di una domanda che richiede la scrittura delle risposte:
|
La struttura degli elementi di questo tipo di domanda è lo stesso degli altri, con la differenza che l'elemento testtextitem contiene degli attributi in più: l'attributo width dichiara la dimensione del campo testuale di inserimento; l'attributo hint consente di mostrare una sorta di suggerimento (nell'esempio viene messa la lettera iniziale e la lettera finale, assieme a dei simboli che consentono di capire quando ci si aspetta una consonante o una vocale); l'attributo caps consente, se assume il valore uno, di verificare anche la corrispondenza tra le lettere maiuscole e minuscole; l'attributo ans serve a specificare la risposta attesa. Il testo che appare nell'elemento, viene mostrato davanti al campo da compilare.
Alla fine delle domande e degli elenchi di selezione, va messo l'elemento vuoto testsend, che nella composizione in HTML genera il bottone per concludere la verifica:
|
|
Si osservi che, nel risultato della composizione, prima delle domande appare l'intervallo del punteggio che si può ottenere, con una forma simile a questa: [-2..3]. In questo caso, si intende avviare che il punteggio minimo che si può ottenere rispondendo è -2, mentre il punteggio massimo è 3. Se non si risponde affatto, il punteggio che si ottiene è sempre zero.
Il codice che compone la pagina HTML di una verifica realizzata con Alml, potrebbe essere interpretato per scoprire le risposte da dare. Ci sono due modi attraverso i quali si può rendere molto difficoltoso questo progetto: impedendo la visualizzazione del sorgente attraverso il programma usato come navigatore e rendendo il codice troppo complicato.
Per impedire (o per tentare di impedire) di accedere al sorgente della pagina HTML, è possibile utilizzare l'attributo testwindow="1" nell'elemento testh1, in modo da imporre lo svolgimento della verifica in una finestra del navigatore, priva di menù e priva di icone; cosa che si affianca al fatto che il tasto [Ctrl] dovrebbe risultare bloccato e così anche il tasto destro del mouse.
Per rendere difficoltosa la lettura del sorgente (il quale potrebbe comunque essere scaricato con un programma come Wget), si può usare l'attributo testcodehide="9" nell'elemento testh1. Per la precisione, testcodehide="0" produce un codice molto chiaro e ordinato, il quale potrebbe essere utile per scopi didattici, mentre valori progressivi, superiori, rendono via via meno comprensibile il sorgente.
Nel capitolo successivo viene mostrato un esempio di verifica realizzato con Alml, di cui qui viene mostrato il sorgente:
|
Realizzando la composizione in formato HTML, la pagina del capitolo in questione dovrebbe apparire come nella figura u101.10, dove si nota in evidenza il conto alla rovescia del tempo a disposizione.
Se si compila il questionario e si seleziona il bottone che appare in fondo, si ottiene una finestra con il titolo della verifica e l'invito a stampare, attraverso un bottone grafico. A fianco del titolo, appare un «sorriso» se il risultato è stato superiore alla metà del punteggio massimo previsto:
|
Nella stampa, invece, si ottiene il dettaglio dell'esecuzione della verifica, assieme alla valutazione complessiva:
|
A seconda del tipo di interprete JavaScript, l'anno che appare nelle date può essere visualizzato nel modo corretto, oppure, come nell'esempio, ridotto di 1 900.
Il contenuto del rapporto che si genera è essenziale; inoltre l'estetica non è curata. Infatti, lo scopo della stampa che si produce è solo quello di documentare l'esito della verifica, di fronte alle contestazioni, ma senza indicare la risposta esatta che avrebbe potuto essere data. |
Quando uno studente termina una verifica, sullo schermo vede solo l'invito a stampare e, se è stato usato l'attributo testmaxscore, può sapere se il risultato che ha ottenuto è almeno superiore alla metà del punteggio massimo previsto. Per la precisione, appare un «viso», rappresentato da:
:-(
:-|
:-)
:-D
In pratica, :-( indica solo che il risultato è insufficiente; :-| rappresenta un risultato appena sufficiente; :-) segnala un risultato buono, mentre :-D un risultato ottimo.
Se lo studente torna alla pagina da compilare, ottiene un modulo azzerato completamente, ma se vuole riprovare la verifica, deve ricaricare la pagina per azzerare anche il conteggio del tempo.
Se si esegue una composizione in uno dei formati per la stampa (PostScript o PDF), si ottiene un questionario da compilare a mano, senza la possibilità di imporre meccanicamente un tempo massimo di esecuzione e senza poter avere una valutazione automatica; ma utilizzando l'opzione --draft in fase di compilazione, si mettono in evidenza i punteggi e le risposte esatte, da dare agli studenti dopo la verifica, come confronto (figura u101.14).
Nei capitoli successivi si possono provare alcuni esempi di verifica prodotta con Alml, uguali nel contenuto delle domande, ma diversi nelle opzioni usate per produrli (attraverso un diverso insieme di valori per gli attributi dell'elemento testh1).
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net