Didáctica y Software.

Generación de código para la elaboración de preguntas tipo cloze en Moodle usando Wolfram Mathematica

Mathematica Code generation for creating cloze questions in Moodle using Wolfram Mathematica

Enrique Vílchez Quesada
Universidad Nacional de Costa Rica, Costa Rica
Juan Félix Ávila Herrera
Universidad Nacional de Costa Rica, Costa Rica

Generación de código para la elaboración de preguntas tipo cloze en Moodle usando Wolfram Mathematica

Revista Digital: Matemática, Educación e Internet, vol. 24, núm. 1, pp. 1-42, 2023

Instituto Tecnológico de Costa Rica

Recepción: 26 Octubre 2022

Aprobación: 02 Marzo 2023

Resumen: El presente trabajo comparte el uso de un paquete de software elaborado por los autores mediante el uso de Wolfram Language para la generación automática de código, con el objetivo de diseñar preguntas incrustadas .cloze) en plataformas de aprendizaje Moodle. El paquete ha sido llamado por sus creadores “Incrustada” y éste integra la posibilidad de convertir expresiones a código LaTeX de Moodle, generar respuestas desplegadas, respuestas de falso y verdadero, de selección única y múltiple con y sin código LaTeX, generar preguntas con respuesta corta donde hay o no una distinción entre mayúsculas y minúsculas, preguntas de respuesta corta de tipo numérico (estáticas) y tablas HTML con respuestas desplegadas, de complete o una combinación entre ambas.

Palabras clave: cloze, Moodle, Wolfram Mathematica, paquete, código, preguntas.

Abstract: This paper shares the use of a software package developed by the authors using Wolfram Language for automatic code generation with the aim of designing embedded questions (cloze) in learning platforms Moodle. The package has been called “Incrustada” by its creators and it integrates the ability to convert expressions to MoodleLaTeX code, generate displayed responses, true and false responses, single select and multiple with and without LaTeX code, generate case-sensitive or case-insensitive short-answer questions, numeric short-answer questions (statics), and HTML tables with displayed answers, full answers, or a combination of both.

Keywords: cloze, Moodle, Wolfram Mathematica, package, code, questions.

Introducción

La construcción de preguntas tipo cloze dentro de la plataforma de aprendizaje Moodle puede tornarse una tarea tediosa y difícil dependiendo del tipo de pregunta que se desee desarrollar y la cantidad de distractores a incluir. En este sentido, emplear directamente los cuestionarios y facilidades de edición que ofrece Moodle para la creación de evaluaciones online, podría ocasionar saturación en el docente al traducirse en procesos lentos y abrumadores (Izquierdo et al, 2021).

Lo anterior ha derivado en la aparición de distintas herramientas que tienen como objetivo la generación automática de cuestionarios o código para la construcción de preguntas con respuestas incrustadas .cloze), buscando como eje central la automatización en su diseño (Calvo et al, 2016).

Una de las dificultades principales en este tipo de aplicaciones, se ha circunscrito en la fiscalización minuciosa que demandan, con la finalidad de garantizar una revisión automática correcta por parte de la plataforma de aprendizaje Moodle. Esto puede consumir un tiempo excesivo al profesor en el marco de una labor exhaustiva de comprobación de resultados (Mateo et al, 2012). Es debido a todo esto que los autores del presente trabajo tomaron la decisión de crear un paquete de software para la generación automática de código en el diseño de preguntas con respuestas incrustadas (o anidadas), utilizando como recurso de incubación el conocido software comercial Wolfram Mathematica.

Mathematica brinda la ventaja al usuario de aprovechar todas sus potencialidades de cálculo numérico y simbólico, además, de su lenguaje de programación. Estas facultades bien canalizadas, podrían facilitar al docente la elaboración de las respuestas correctas y sus distractores cuando se diseñan preguntas tipo cloze. La idea de integrar gran parte del proceso de diseño de un cuestionario online de Moodle en el entorno provisto por Wolfram Mathematica, toma mucha valía, al combinar potentes herramientas de cálculo/programación con la posibilidad de transferir los resultados conferidos en opciones de respuesta a preguntas dentro de la plataforma Moodle.

Instalación del paquete “Incrustada

En esta sección se explica la instalación del paquete “Incrustada”. Conforme se hace la exposición, se emplearán fichas que consignan (y algunas veces amplían) lo más importante de lo expuesto. Además de esto, para cada comando o proceso importante, se incluyen vídeos explicativos con el objetivo de facilitar el uso del paquete. La idea es brindar un recurso sencillo al que el lector puede echar mano para futuras consultas.

Incrustada” permite al usuario generar el código asociado a distintos tipos de respuesta cloze dentro de las preguntas de un cuestionario en un aula virtual Moodle. La práctica de elaborar evaluaciones de corrección automática se ha venido extendiendo desde hace algunos años y de alguna manera se han corroborado sus ventajas optimizando el tiempo del profesor y contribuyendo con una mayor objetividad en la revisión de pruebas escritas (Melchor et al, 2017). De allí que el paquete “Incrustada”, proporciona un aporte docente importante, al automatizar la generación de código para crear preguntas con respuestas incrustadas de: despliegue (explicaremos esto más adelante), falso y verdadero, selección única y múltiple, respuesta corta y tablas HTML con respuestas desplegadas, de complete o su combinación.

El paquete de software “Incrustada” se distribuye libremente y puede ser descargado en la siguiente dirección electrónica: https://www.escinf.una.ac.cr/discretas/Archivos/Packages/Paquete_Cloze.zip. En este archivo comprimido el lector también encontrará dos cuadernos de Mathematica denominados “Ejemplos.nb” y “Ejemplos del documento.nb”. En el primero se muestra a través de distintos ejemplos el uso de las instrucciones del paquete “Incrustada” y en el segundo se ha incorporado el código fuente de todos los ejemplos del presente documento. En la Ficha N.. 1 se explica cómo se instala esta librería.

Ficha 1 (Instalación del paquete “Incrustada”).

La instalación del paquete “Incrustada” ya habiendo descomprimido el archivo “Incrustada.m”, se realiza en Wolfram Mathematica desde el menú Archivo/Instalar.

Esto abre la ventana mostrada en la figura 1. Luego, en “Fuente” se carga el archivo “Incrustada.m” y finalmente se presiona el botón “Aceptar”. Si se desea cargar la librería “Incrustada”, se debe ejecutar en un cuaderno de Mathematica lo siguiente:

In[ ] :=

Quiet[« Incrustada‘]

Adicionalmente, si el usuario requiere actualizar el paquete “Incrustada” debe pegar en el explorador la dirección: “%userprofile%\AppData\Roaming\Mathematica\Applications” y en la carpeta que se abre, sustituir el archivo “Incrustada.m” (se recomienda ver el video 1).

Instalación del paquete “Incrustada”
Figura 1
Instalación del paquete “Incrustada”
Elaboración propia

Un primer comando de uso general del paquete “Incrustada” lo constituye “Incrustada[ ]” que retorna una descripción breve sobre la finalidad de este recurso. El usuario puede comprobar si instaló correctamente el paquete de software, al ejecutar:

In[]:=

Incrustada[ ]

Lo que produce como salida:

Out[]=

Incrustada es un paquete que permite generar respuestas tipo «incrustada» dentro de un cuestionario en un aula virtual de Moodle. Es importante señalar al usuario que la salida de cada invocación en los comandos se copia directamente en la memoria temporal, sin embargo, si al pegar en Moodle no se generan bien las opciones de respuesta, se recomienda dar clic derecho a la celda de salida y copiar sin formato, para luego pegar en Moodle. Autores: Enrique Vílchez Quesada y Juan Félix Ávila Herrera.

Nota: También es importante señalar que todas las instrucciones de “Incrustada” cuentan con una ayuda para el usuario, colocando un signo de pregunta hacia abajo seguido del nombre del comando.

Por ejemplo, al correr:

In[ ] : =

?Incrustada

Out [ ] =


El siguiente vídeo comparte con el lector los pasos a seguir para instalar la librería “Incrustada” y constatar si el proceso resultó ser exitoso. Se reitera que a lo largo de todo el documento, la práctica de incorporar vídeos complementarios, se concertó con la finalidad de ampliar las explicaciones en el texto sobre el uso de la herramienta “Incrustada”.

Video 1. Instalación del paquete “Incrustadahttps://youtu.be/AZNt4J34TmU

Las secciones que prosiguen tienen como propósito explicar el empleo de los siete comandos principales que conforman el paquete “Incrustada” y los distintos atributos que los caracterizan.

Conversión a LaTeX de Moodle

El manejo de código LaTeX dentro de la plataforma de aprendizaje Moodle para crear enunciados en un cuestionario online, puede implicar un conocimiento previo sobre el uso de este sistema de composición de textos de alta calidad tipográfica, que algunas veces no se tiene o se posee parcialmente por parte del profesor, dificultando la edición y diseño de las evaluaciones requeridas. Pensando en estas posibles limitaciones, se elaboró, dentro del paquete “Incrustada”, el comando “ToLatex” cuyo propósito se describe en la siguiente ficha:

Ficha 2 (Instrucción “ToLatex”).

La sentencia “ToLatex” del paquete “Incrustada” convierte expresiones escritas en un cuaderno de Wolfram Mathematica a código LaTeX de la plataforma Moodle. La ayuda de esta instrucción en Wolfram nos brinda una descripción sobre su uso y opciones disponibles:

In[ ] :=

?ToLatex

Out[ ] =


Antes de presentar los ejemplos de uso de la sentencia “ToLatex”, el lector debe recordar cómo se crea en Moodle una pregunta con respuesta tipo cloze (también conocidadas, en español, como anidadas o incrustadas). Explicamos esto en la siguiente ficha:

Ficha 3 (Creación en Moodle de preguntas con respuestas anidadas).

Dentro de la plataforma de aprendizaje y al ingresar a “Banco de preguntas”, se presiona el botón “Crear una nueva pregunta”, esto abre la ventana mostrada en la figura 2, donde se selecciona “Respuestas anidadas (Cloze)”. Posteriormente, se inicia el proceso de edición añadiendo un nombre a la pregunta y el enunciado correspondiente.

Creación de una pregunta tipo cloze.
Figura 2
Creación de una pregunta tipo cloze.
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 2. Creación en Moodle de preguntas tipo clozehttps://youtu.be/GvCPaz0kxuQ

Consideraremos a continuación, algunos ejemplos que pretenden evidenciar la utilidad y atributos del comando “ToLatex”.

Ejemplo 1

Genere mediante la instrucción “ToLatex” el siguiente enunciado para una pregunta con respuestas cloze en Moodle.

Resuelva en forma ordenada:

  1. 1. x 2 x 3 + 2 x 1 < x 9
  2. 2. 0 1 x d x
  3. 3. i = 1 n 9 j = 6 i + 6 j j + 1

Solución: El texto “Resuelva en forma ordenada:” se puede incluir directamente por teclado al crear una pregunta tipo cloze, tal y como se comparte en la figura 3.

Ahora, para construir la primera de las expresiones matemáticas del enunciado, se ejecuta en un cuaderno de Wolfram lo siguiente:

In[ ] : =

ToLatex[Sqrt[x^2/(x^3 + 2 x - 1)]<x - 9]

Out[ ] =

\({\displaystyle{\sqrt{\frac{x^2}{x^3+2 x-1}}<x-9}}\)

La salida arrojada por el programa se copia automáticamente en la memoria temporal o portapapeles del ordenador (clipboard en inglés), por lo que, el usuario solo debe dirigirse al cuadro de edición de la pregunta en Moodle y efectuar un pegado (clic derecho o Control + v en Windows). Este proceso se exhibe en la figura 4. Los cambios sólo se guardarán cuando la pregunta contenga alguna opción de respuesta. Para este efecto, se incluirá un Falso-Verdadero sin ningún contexto en el enunciado, sólo con el objetivo de que la herramienta permita generar una vista previa. En la figura 5 se ha incorporado el código “{1:MCS:=Falso#ExcelenteVerdadero#}” que agrega un combo con las opciones “Falso” y “Verdadero”, siendo en este caso, “Falso” la respuesta supuestamente correcta.

Al presionar el botón “Guarde cambios y continúe editando” y luego “Vista previa” se observa lo conseguido hasta el momento. En la figura 6 se comparte lo devuelto por la plataforma.

En algunas ocasiones Moodle solicita una confirmación al usuario de lo que se guardará, como se aprecia en la figura 7. Si esto ocurre, se vuelve a presionar el botón “Guarde cambios y continúe editando” y posteriormente “Vista previa”.

De manera análoga, para incluir las otras expresiones matemáticas del enunciado, el usuario debe correr en Mathematica.

In[ ] :=

ToLatex[ 0 1 x d x ]

Out[ ] =

\({\displaystyle{\int_0^1 x\, dx}}\)

Y luego, pega lo copiado al portapapeles directamente en el campo de edición de la pregunta en Moodle. Además, en Wolfram:

In[ ] :=

ToLatex [ i = 1 n-9 j = 6 i+6 j j + 1

Out[ ] =

$${\displaystyle{\sum_{i=1}^{n-9} \prod_{j=6}^{i+6}\frac{j}{j+1}}}$$

Finalmente, se vuelve a pegar en Moodle lo copiado en el clipboard. El resultado del proceso se visualiza en la figura 8.

El lector debe notar que la opción “dolar ->True” de “ToLatex”, sustituye lo símbolos “\(” y “\)” por “$$”. Lo anterior, puede ser de mucha utilidad pues en algunas versiones de la plataforma de aprendizaje Moodle, se requiere el empleo de “$$” en la apertura y cierre de una expresión matemática, pues de lo contrario no es reconocida por el sistema.

Texto simple
Figura 3
Texto simple
Elaboración propia

Texto simple y matemático
Figura 4:
Texto simple y matemático
Elaboración propia.

Opción de respuesta para guardar cambios
Figura 5
Opción de respuesta para guardar cambios
Elaboración propia.

Vista previa
Figura 6
Vista previa
Elaboración propia.

Confirmación de guardado
Figura 7
Confirmación de guardado
Elaboración propia.

Uso del comando “ToLatex”
Figura 8
Uso del comando “ToLatex”
Elaboración propia

Nota. En adelante no se detallará tanto el proceso de pegado y vista previa (ver Fig. 4) dentro de Moodle cuando se empleen los comandos del paquete “Incrustada”. Independientemente de la sentencia a la cual recurra el usuario, el procedimiento descrito en el ejemplo 1 aplica para cualquier otra instrucción.

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 3. Solución del ejemplo 1 https://youtu.be/pPXzz3BIoU0

Ejemplo 2.

Explore el uso de las opciones “conjunto ->True”, “matriz ->True” y “tabla ->True” de la sentencia “ToLatex”, mediante las siguientes expresiones:

  1. 1. ToLatex[{(x - 8)/(Sqrt[x] + 9), {m, “ con ” m>= 0}, {x^2/(x^3 + 2 x - 1)}, {k}}, conjunto ->True].
  2. 2. ToLatex[ σ x y z w 1 2 3 h 4 5 6 1 7 8 9 , matriz ->True].
  3. 3. ToLatex[ σ x y z w 1 2 3 h 4 5 6 1 7 8 9 , tabla ->True].

En Wolfram Mathematica.

In[ ] :=

ToLatex[{(x - 8)/(Sqrt[x] + 9), {m, “ con ” m>= 0}, {x^2/(x^3 + 2 x - 1)}, {k}}, conjunto ->True]

Out[ ] =

\({\displaystyle{\left\{\frac{x-8}{\sqrt{x}+9},\left\{{m,\text{ con } m\geq 0}\right\},\left\{{\frac{x^2}{x^3+2 x-1}}\right\},\left\{{k}\right\}\right\}}}\)

In[ ] :=

ToLatex[ σ x y z w 1 2 3 h 4 5 6 1 7 8 9 , matriz ->True]

Out[ ] =

\({\displaystyle{\left( \begin{array}{cccc} \sigma & x & y & z \\ w & 1 & 2 & 3 \\ h & 4 & 5 & 6 \\ l & 7 & 8 & 9 \\ \end{array} \right) }}\

In[ ] :=

ToLatex[ σ x y z w 1 2 3 h 4 5 6 1 7 8 9 , tabla ->True]

Out[ ] =

\({\displaystyle{\left. \begin{array}{c|ccc} \sigma & x & y & z \\\hline w & 1 & 2 & 3 \\ h & 4 & 5 & 6 \\ l & 7 & 8 & 9 \\ \end{array} \right. }}\)

Con todo ello se aclara, de acuerdo a lo compartido en la figura 9, que el atributo “conjunto ->True” construye un conjunto con el argumento de “ToLatex”, “matriz ->True” resuelve el código correspondiente a una matriz en LaTeX y “tabla ->True” genera una tabla.

Salida en Moodle del ejemplo 2
Figura 9
Salida en Moodle del ejemplo 2
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 4. Solución del ejemplo 2 https://youtu.be/O7RomtlRYgc

Respuesta desplegada

Una respuesta desplegada consiste en un combo de opciones que el alumno tendrá a su disposición para escoger una única posibilidad de contestación. En la figura 6 se mostró, por ejemplo, una respuesta desplegada con un Falso-Verdadero. La construcción de este tipo de pregunta cloze se automatiza utilizando el comando “Desplegada” del paquete “Incrustada”. Explicamos esto en la siguiente ficha:

Ficha 4 (Sentencia “Desplegada”).

La instrucción “Desplegada” automatiza la elaboración de una serie de respuestas en formato desplegado. La ayuda del comando en Mathematica ofrece un panorama sobre su empleabilidad:

In[ ] :=

?Desplegada

Out[ ] =


Consideremos algunos ejemplos de uso.

Ejemplo 3. Genere en cada caso, el código para Moodle de una pregunta tipo cloze desplegada, siendo C el conjunto de opciones correctas e I el conjunto de distractores de respuesta.

  1. 1. C = { x 2 + x , x 3 , x 4 , x , sin x } , I = { x 5 , x 6 }
  2. 2. C = { a n = n 2 , a n = n 2 + 2 , a n = n 2 + n , } , I = { a n = 5 n , a n = 6 n 9 }
  3. 3. C = { x 4 , z 3 , i = 1 n i } , I = { y < 9 , b > 9 }
  4. 4. Resuelva el ítem anterior utilizando la opción “evaluar ->True” del comando “Desplegada”.

El código solicitado se genera automáticamente en Wolfram al ejecutar:

In[ ] :=

Desplegada[{x^2 + x, x^3, x^4, Sqrt[x], Sin[x]}, {x^5, x^6}]

Out[ ] =

{1:MCS:~=x^2 + x#Excelente~=x^3#Excelente~=x^4#Excelente~=Sqrt[x]#Excelente~=Sin[x] #Excelente~x^5#~x^6#}

Nota. Es importante indicar que las opciones de respuestas son acomodadas aleatoriamente.

In[ ] :=

Desplegada[{a[n] == n^2, a[n] == n^2 + 2, a[n] == n^2 + n}, {a[n] == 5 n, a[n] == 6 n - 9}]

Out[ ] =

{1:MCS:~=a[n] = n^2#Excelente~=a[n] = n^2 + 2#Excelente~=a[n] = n^2 + n#Excelente~a[n] = 5*n#~a[n] = 6*n - 9#}

In[ ] :=

Desplegada[{x>=4, z<=3, Sum[i, {i, 1, n}]}, {y<9, b>9}]

Out[ ] =

{1:MCS:~=x>=4#Excelente~=z<=3#Excelente~=Sum[i, {i, 1, n\}]#Excelente~y<9#~b>9#}

In[ ] :=

Desplegada[{x>=4, z<=3, Sum[i, {i, 1, n}]}, {y<9, b>9}, evaluar ->True]

Out[ ] =

{1:MCS:~=x>=4#Excelente~=z<=3#Excelente~=(n*(1 + n))/2#Excelente~y<9#~b>9#}

En la figura 10 se muestran las distintas formas de respuesta con formato desplegado, al pegar cada vez en el área de edición de la pregunta en Moodle (una por cada Out[ ] obtenido). Cabe destacar que el “=” no se puede utilizar directamente en la instrucción “Desplegada” (lo mismo sucede con otros comandos de “Incrustada”), en su lugar, se emplea el “==”. También, se observa que el atributo “evaluar ->True” literalmente permite que Wolfram Mathematica evalúe cada una de las opciones de respuesta. En este ejercicio se facilitó el cálculo de la sumatoria a través de una fórmula.

Salida en Moodle del ejemplo 3.
Figura 10
Salida en Moodle del ejemplo 3.
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 5. Solución del ejemplo 3 https://youtu.be/VKiLNcWNiQ8

Ejemplo 4. Construya una respuesta desplegada con todos los subconjuntos de σ 0 σ 1 σ 2 σ 3 . Asuma los subconjuntos ordenados de menor a mayor de acuerdo a su cardinalidad, tomando a los primeros seis como las opciones correctas.

Solución: En Mathematica los dieciséis subconjuntos de σ 0 σ 1 σ 2 σ 3 se obtienen al usar la sentencia “Subsets”. En la Ficha N.4 se mencionó que la instrucción “Desplegada” no acepta subíndices, razón por la cuál, en este ejemplo, se sustituirá el conjunto σ 0 σ 1 σ 2 σ 3 por s 0 s 1 s 2 s 3

In[ ] :=

Subsets[{s0, s1, s2, s3}]

Out[ ] =

{{}, {s0}, {s1}, {s2}, {s3}, {s0, s1}, {s0, s2}, {s0, s3}, {s1, s2}, {s1, s3}, {s2, s3}, {s0, s1, s2}, {s0, s1, s3}, {s0, s2, s3}, {s1, s2, s3}, {s0, s1, s2, s3}}

Por otra parte, al querer los primeros seis subconjuntos anteriores como las opciones de respuesta correcta, en el software se procede como sigue:

In[ ] :=

Desplegada[{{}, {s0}, {s1}, {s2}, {s3}, {s0, s1}}, {{s0, s2}, {s0, s3}, {s1, s2}, {s1, s3}, {s2, s3}, {s0, s1, s2}, {s0, s1, s3}, {s0, s2, s3}, {s1, s2, s3}, {s0, s1, s2, s3}}]

Out[ ] =

{1:MCS:~={\}#Excelente~={s0\}#Excelente~={s1\}#Excelente~={s2\}#Excelente~={s3\}#Excelente~={s0, s1\}#Excelente~{s0, s2\}#~{s0, s3\}#~{s1, s2\}#~{s1, s3\}#~{s2, s3\}#~{s0, s1, s2\}#~{s0, s1, s3\} #~{s0, s2, s3\}#~{s1, s2, s3\}#~{s0, s1, s2, s3\}#}

En la figura 11 se comparte el resultado de este código en Moodle.

Salida en Moodle del ejemplo 4.
Figura 11
Salida en Moodle del ejemplo 4.
Elaboración propia.

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 6. Solución del ejemplo 4 https://youtu.be/FUxEmpWmW3E

Ejemplo 5. La función “PolinomiosFactorizables” construye “n” polinomios factorizados de grado menor o igual a “m”. Utilizando esta función genere cinco ítems pseudoaleatorios para escoger de manera desplegada la factorización de un polinomio de grado menor o igual a 4.

PolinomiosFactorizables[n_, m_] := If[IntegerQ[n] && IntegerQ[m], If[n>= 3 && m>= 2, Module[{Conjunto = Range[10 n], Valores, polinomios = {}, i}, Valores = RandomSample[Conjunto, RandomInteger[{2, m}]]; For[i = 1, i <= n, polinomios = Append[polinomios, Expand[Product[x - i, {i, Valores}]]]; Conjunto = Complement[Conjunto, Valores]; Valores = RandomSample[Conjunto, RandomInteger[{2, m}]]; i++]; Factor /@ polinomios]]]

En Mathematica el siguiente “Table” resuelve lo indicado en el enunciado de este ejercicio:

In[ ] :=

polinomios = PolinomiosFactorizables[5, 4]; Table[Row[{“Al factorizar ”, ToLatex[Evaluate[Expand[i]]], “, se obtiene: ”, Desplegada[Evaluate[{i}], Evaluate@Complement[polinomios, {i}]]}], {i, polinomios}]

Out[ ] =

{Al factorizar \({\displaystyle{x^2-60 x+756}}\), se obtiene: {1:MCS:~=(-42 + x)*(-18 + x)#Excelente~(- 49 + x)*(-32 + x)#~(-43 + x)*(-16 + x)*(-15 + x)*(-8 + x)#~(-33 + x)*(-22 + x)*(-5 + x)#~(-50 + x)*(-23 + x)*(-3 + x)#},Al factorizar \({\displaystyle{x^3-76 x^2+1369 x-3450}}\), se obtiene: {1:MCS:~=(-50 + x)*(-23 + x)*(-3 + x)#Excelente~(-49 + x)*(-32 + x)#~(-42 + x)*(-18 + x)#~(-43 + x)*(-16 + x)*(-15 + x)*(-8 + x)#~(-33 + x)*(-22 + x)*(-5 + x)#},Al factorizar \({\displaystyle{x^2-81 x+1568}}\), se obtiene: {1:MCS:~=(-49 + x)*(-32 + x)#Excelente~(-42 + x)*(-18 + x)#~(-43 + x)*(-16 + x)*(-15 + x)*(-8 + x)#~(-33 + x)*(-22 + x)*(-5 + x)#~(-50 + x)*(-23 + x)*(-3 + x)#},Al factorizar \({\displaystyle{x^4-82 x^3+2165 x^2-22904 x+82560}}\), se obtiene: {1:MCS:~=(-43 + x)*(-16 + x)*(-15 + x)*(-8 + x)#Excelente~(-49 + x)*(-32 + x)#~(-42 + x)*(-18 + x)#~(-33 + x)*(-22 + x)*(-5 + x)#~(-50 + x)*(-23 + x)*(-3 + x)#},Al factorizar \({\displaystyle{x^3-60 x^2+1001 x-3630}}\), se obtiene: {1:MCS:~=(-33 + x)*(-22 + x)*(-5 + x)#Excelente~(-49 + x)*(-32 + x)#~(-42 + x)*(-18 + x)#~(-43 + x)*(-16 + x)*(-15 + x)*(-8 + x)#~(-50 + x)*(-23 + x)*(-3 + x)#}}

Una explicación más detallada sobre el código expuesto, se puede consultar en el video 7. Por otra parte, en el Out[ ] se hace necesario antes de pegar en la plataforma Moodle, dar clic derecho en la celda de salida y escoger “Copiar como/Texto sin formato” (ver figura 12). Esto es indispensable pues al ejecutarse varias veces la instrucción “Desplegada”, en el clipboard del ordenador se copiará la última invocación de esa sentencia y ese copiado automático no incluye todos los ítems de interés. En la figura 13 se comparte la salida proporcionada por la plataforma Moodle. El lector puede comprobar que cada vez que se ejecuta el In[ ] anterior, obtendrá una nueva lista con cinco ítems, probablemente distintos, al ser el Out[ ] pseudoaleatorio.

Nota 3. En el ejemplo 5 es importante destacar que cuando se usaron las instrucciones “ToLatex” y “Desplegada” dentro del “Table”, a sus argumentos se les aplicó la sentencia “Evaluate”. Esto siempre hay que realizarlo en los comandos “ToLatex” y “Desplegada” (y otros del paquete “Incrustada”), cuando sus parámetros no son pasados de forma directa, sino que provienen de alguna otra ejecución en Wolfram. Lo descrito, ocurre, pues “ToLatex” y “Desplegada” por defecto no evalúan expresiones.

Copiado sin formato de una celda
Figura 12
Copiado sin formato de una celda
Elaboración propia.

Salida en Moodle del ejemplo 5
Figura 13
Salida en Moodle del ejemplo 5
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 7. Solución del ejemplo 5 https://youtu.be/-Fz8ciHkFdE

Respuesta falso-verdadero

En el paquete “Incrustada” se diseñó un comando llamado “FV” cuyo cometido se concreta en crear ítems con respuesta del tipo Falso-Verdadero. Explicamos esto en la siguiente ficha:

Ficha 5 (Instrucción “FV”).

La sentencia “FV” genera el código para obtener una respuesta de Falso-Verdadero en un formato desplegado. En Mathematica la ayuda del comando retorna lo siguiente:

In[ ] :=

?FV

Out[ ] =


Ilustraremos el uso de “FV” mediante algunos ejemplos que se presentan a continuación.

Ejemplo 6. La función “EsPrimo” creada con Wolfram Language, construye el código Moodle de una pregunta incrustada de Falso-Verdadero que determina si el número “n” pasado como parámetro es o no un número primo. Empleando “EsPrimo”, construya diez ítems eligiendo de manera pseudoaleatoria números enteros en el rango de 1 a 1000.

EsPrimo[n_] := If[PrimeQ[n], FV[1], FV[0]]

En Wolfram Mathematica se puede recurrir al uso del comando “Table” para resolver el presente ejemplo:

In[ ] :=

EsPrimo[n_] := If[PrimeQ[n], FV[1], FV[0]]

Table[Row[{“Es ”, ToLatex[Evaluate@i], “ un número primo?: ”, EsPrimo[i]}], {i, RandomSample[Range[1000], 10]}]

Out[ ] =

{¿Es \({\displaystyle{914}}\) un número primo?: {1:MCS:~=Falso#Excelente~Verdadero#}, ¿Es \({\displaystyle{67}}\) un número primo?: {1:MCS:~=Verdadero#Excelente~Falso#}, ¿Es \({\displaystyle{103}}\) un número primo?: {1:MCS:~=Verdadero#Excelente~Falso#}, ¿Es \({\displaystyle{448}}\) un número primo?: {1:MCS:~=Falso#Excelente~Verdadero#}, ¿Es \({\displaystyle{858}}\) un número primo?: {1:MCS:~=Falso#Excelente~Verdadero#}, ¿Es \({\displaystyle{499}}\) un número primo?: {1:MCS:~=Verdadero#Excelente~Falso#}, ¿Es \({\displaystyle{811}}\) un número primo?: {1:MCS:~=Verdadero#Excelente~Falso#}, ¿Es \({\displaystyle{200}}\) un número primo?: {1:MCS:~=Falso#Excelente~Verdadero#}, ¿Es \({\displaystyle{210}}\) un número primo?: {1:MCS:~=Falso#Excelente~Verdadero#}, ¿Es \({\displaystyle{838}}\) un número primo?: {1:MCS:~=Falso#Excelente~Verdadero#}}

Al igual que lo señalado en el ejemplo 5, en esta salida se debe dar clic derecho en la celda y elegir “Copiar como/Texto sin formato” para luego pegar en el espacio de edición de la pregunta dentro de la plataforma Moodle. La figura 14 muestra la salida resultante. En este ejercicio, de forma semejante al ejemplo 5, el usuario podrá obtener una nueva lista de ítems, probablemente distintos, al volver a ejecutar el In[ ] sin realizar ningún cambio.

Salida en Moodle del ejemplo 6.
Figura 14
Salida en Moodle del ejemplo 6.
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 8. Solución del ejemplo 6 https://youtu.be/a81_Td-UVq0

Respuesta opción única y múltiple

En el paquete de software “Incrustada” se integró la sentencia “SMOption” que permite generar el código de una pregunta incrustada de selección única o múltiple con un formato vertical u horizontal. Explicamos esto en la siguiente ficha:

Ficha 6 (Comando “SMOption”).

La ayuda de esta instrucción en Mathematica proporciona una explicación precisa sobre su funcionamiento:

In[ ] :=

?SMOption

Out[ ] =


Consideremos algunos ejemplos de uso.

Ejemplo 7. Construya la pregunta tipo cloze en Moodle mostrada en la figura 15.

Al observar el enunciado y las respuestas compartidas en la figura 15, se aprecia que las opciones correctas son: 1 -1 2 , 2 < 6 y 3 0 . Además, los distractores de la pregunta corresponden a: 4 > 1 0 0 , 7 < 1 0 y 8 > 1 2 8 . Como consecuencia en el software Mathematica.

In[ ] :=

SMOption[{1 >= -1 2 , 2 < 6 , 3 >= 0 }, {4 > 1 0 0 , 7 < 1 0 , 8 > 1 2 8 }, latex ->True]

Out[ ]=

{1:MCVS:~=\({\displaystyle{\quad 1 \geq \sqrt{(-1)^2\}\}\}\)#Excelente~=\({\displaystyle{\quad 2 < \sqrt{6\}\}\}\)#Excelente~=\({\displaystyle{\quad 3 \geq \sqrt{0\}\}\}\)#Excelente~\({\displaystyle{ \quad 4 > \sqrt{100\}\}\}\)#~\({\displaystyle{\quad 7 < \sqrt{10\}\}\}\)#~\({\displaystyle{\quad 8 > \sqrt{128\}\}\}\)#}

Se advierte al lector que al pegar lo copiado automáticamente en el portapapeles dentro de la plataforma Moodle, se despliega la pregunta con algunos errores, tal y como se muestra en la figura 16. La ayuda del comando “Incrustada” señala con claridad que: “si al pegar en Moodle no se generan bien las opciones de respuesta, se recomienda dar clic derecho a la celda de salida y copiar sin formato”, es decir, cuando se presentan este tipo de errores, se debe copiar sin formato el código retornado en Wolfram Mathematica (tal y como se explicó en el ejemplo 5), para posteriormente pegar en Moodle.

Por otra parte, si la pregunta incrustada de este ejercicio se hubiese deseado con un formato horizontal, a la instrucción “SMOption” solo se le añade el atributo “horizontal ->True”, quedando el In[ ], como sigue a continuación:

In[ ] :=

SMOption[{1 >= -1 2 , 2 < 6 , 3 >= 0 }, {4 > 1 0 0 , 7 < 1 0 , 8 > 1 2 8 }, latex ->True, horizontal ->True]

También, la propiedad “multiple ->True” del comando “SMOption”, transforma la pregunta a otra de opción múltiple. Al recurrir a ese atributo en este ejercicio, la plataforma de aprendizaje Moodle genera lo mostrado en la figura 17.

Pregunta del ejemplo 7 a diseñar en Moodle
Figura 15
Pregunta del ejemplo 7 a diseñar en Moodle
Elaboración propia

Errores al pegar lo copiado en el clipboard.
Figura 16
Errores al pegar lo copiado en el clipboard.
Elaboración propia

Pregunta con opción de respuesta múltiple
Figura 17
Pregunta con opción de respuesta múltiple
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 9. Solución del ejemplo 7 https://youtu.be/g7M4ILtuRX4

Ejemplo 8. Resuelva lo solicitado en el ejemplo 4, utilizando para ello una pregunta tipo cloze con opción de respuesta múltiple.

Solución: Al recoger la salida del comando “Subsets σ 0 σ 1 σ 2 σ 3 y emplear la sentencia “SMOption” con los atributos “latex ->True”, “conjunto ->True” y “multiple ->True”, se obtiene:

In[ ] :=

SMOption[{{}, {σ0}, {σ1}, {σ2}, {σ3}, {σ0,σ1}}, {{σ0,σ2}, {σ0,σ3}, {σ1,σ2}, {σ1,σ3}, {σ2,σ3}, {σ0,σ1,σ2}, {σ0,σ1,σ3}, {σ0,σ2,σ3}, {σ1,σ2,σ3}, {σ0,σ1,σ2,σ3}}, latex ->True, conjunto ->True, multiple ->True]

Out[ ] =

{1:MRS:~=\({\displaystyle{\quad \left\{{\}\right\\}\}\}\)#Excelente ~=\({\displaystyle{\quad \left\{{\sigma_0\}\right\\}\}\}\)#Excelente ~=\({\displaystyle{\quad \left\{{\sigma_1\}\right\\}\}\}\)#Excelente ~=\({\displaystyle{\quad \left\{{\sigma_2\}\right\\}\}\}\)#Excelente ~=\({\displaystyle{\quad \left\{{\sigma_3\}\right\\}\}\}\)#Excelente ~=\({\displaystyle{\quad \left\{{\sigma_0, \sigma_1\}\right\\}\}\}\)#Excelente ~\({\displaystyle{\quad \left\{{\sigma_0, \sigma_2\}\right\\}\}\}\)# ~\({\displaystyle{\quad \left\{{\sigma_0, \sigma_3\}\right\\}\}\}\)# ~\({\displaystyle{\quad \left\{{\sigma_1, \sigma_2\}\right\\}\}\}\)# ~\({\displaystyle{\quad\left\{{\sigma_1, \sigma_3\}\right\\}\}\}\)# ~\({\displaystyle{\quad \left\{{\sigma_2, \sigma_3\}\right\\}\}\}\)# ~\({\displaystyle{\quad \left\{{\sigma_0, \sigma_1, \sigma_2\}\right\\}\}\}\)# ~\({\displaystyle{\quad \left\{{\sigma_0, \sigma_1, \sigma_3\}\right\\}\}\}\)# ~\({\displaystyle{\quad \left\{{\sigma_0, \sigma_2, \sigma_3\}\right\\}\}\}\)# ~\({\displaystyle{\quad \left\{{\sigma_1, \sigma_2, \sigma_3\}\right\\}\}\}\)# ~\({\displaystyle{\quad \left\{{\sigma_0, \sigma_1, \sigma_2, \sigma_3\}\right\\}\}\}\)#}

En la figura 18 se visualiza parte de la pregunta generada por la plataforma de aprendizaje Moodle, al pegar directamente lo copiado por Mathematica en el clipboard. Cabe destacar que, la propiedad “conjunto ->True” ha permitido en este caso, devolver cada opción de respuesta como un conjunto. Si se hubiera prescindido de ella, las respuestas se mostrarían sin las llaves de apertura y cierre.

Salida en Moodle del ejemplo 8
Figura 18
Salida en Moodle del ejemplo 8
Elaboración propia.

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 10. Solución del ejemplo 8 https://youtu.be/lVdeSW-ckAE

Ejemplo 9. El programa “FuncionesAleatorias” elaborado en Wolfram Language, construye “m” funciones pseudoaleatorias y sus derivadas, de cuatro tipos: si “n=1” las funciones son polinomiales, si “n=2” son trigonométricas con seno o coseno, si “n=3” las funciones retornadas son exponenciales (en un sentido no estricto) y si “n=4” son algebraicas fraccionarias. Elabore seis ítems pseudoaleatorios de preguntas incrustadas de selección única, donde se solicite como respuesta una función cuya derivada forma parte del enunciado.

FuncionesAleatorias[n_, m_] := If[IntegerQ[n] && IntegerQ[m], If[1 <= n <= 4 && m >= 1, Module[{funciones, fun1, fun2, fun3, fun4, i}, fun1[] := Sum[RandomChoice[{-1, 1}] RandomInteger[{2, 20}] x^j, {j, 0, RandomInteger[{3, 5}]}]; fun2[] := If[RandomInteger[] == 0, RandomChoice[{-1, 1}] RandomInteger[{2, 20}] Sin[RandomChoice[{-1, 1}] RandomInteger[{2, 20}] x + RandomInteger[{-20, 20}]], RandomChoice[{-1, 1}] RandomInteger[{2, 20}] Cos[RandomChoice[{-1, 1}] RandomInteger[{2, 20}] x + RandomInteger[{-20, 20}]]]; fun3[] := RandomChoice[{-1, 1}] RandomInteger[{2, 20}]^(RandomChoice[{-1, 1}] RandomInteger[{2, 20}] x + RandomInteger[{-20, 20}]); fun4[] := Sum[RandomChoice[{-1, 1}] RandomInteger[{2, 20}] x^j, {j, 0, RandomInteger[{3, 5}]}]/Sum[RandomChoice[{-1, 1}] RandomInteger[{2, 20}] x^j, {j, 0, RandomInteger[{3, 5}]}]; If[n == 1, funciones = Table[fun1[], m], If[n == 2, funciones = Table[fun2[], m], funciones = If[n == 3, Table[fun3[], m], If[n == 4, funciones = Table[fun4[], m]]]]]; {funciones, D[funciones, x]}]]]

Solución: En el software Wolfram Mathematica recurriendo a las sentencias “FuncionesAleatorias” y “SMOption”, una posible solución de este ejemplo es la siguiente:

In[ ] :=

funciones = FuncionesAleatorias[RandomChoice[Range[4]], 6]; Table[Column[{Row[{“Una función cuya derivada es ”, ToLatex[Evaluate@funciones[[2]] [[i]]], “ corresponde a: ”}], SMOption[Evaluate@{funciones[[1, i]]}, Evaluate@Complement[funciones[[1]], {funciones[[1, i]]}], latex ->True]}], {i, Length[funciones[[1]]]}]

Out[ ] =

{Una función cuya derivada es \({\displaystyle{-2^{6 x+7}\log (8)}}\) corresponde a: {1:MCVS:~=\({ \displaystyle{\quad -8^{2 x+2\}\}\}\)#Excelente ~\({\displaystyle{\quad 10^{5 x+18\}\}\}\)# ~\({\displaystyle{\quad 13^{6 x-2\}\}\}\)# ~\({\displaystyle{\quad 14^{4 x+11\}\}\}\)# ~\({\displaystyle{ \quad 15^{-20 x-17\}\}\}\)# ~\({\displaystyle{\quad -16^{20 x-3\}\}\}\)#},Una función cuya derivada es \({\displaystyle{2^{4 x+13} 7^{4 x+11}\log (14)}}\) corresponde a: {1:MCVS:~=\({\displaystyle{\quad 14^{4 x+11\}\}\}\)#Excelente ~\({\displaystyle{\quad -8^{2 x+2\}\}\}\)# ~\({\displaystyle{\quad 10^{5 x+18\}\}\}\)# ~\({\displaystyle{\quad 13^{6 x-2\}\}\}\)# ~\({\displaystyle{\quad 15^{-20 x-17\}\}\}\)# ~\({\displaystyle{\quad -16^{20 x-3\}\}\}\)#},Una función cuya derivada es \({\displaystyle{2^{5 x+18} 5^{5 x+19}\log (10)}}\) corresponde a: {1:MCVS:~=\({\displaystyle{\quad 10^{5 x+18\}\}\}\)#Excelente ~\({\displaystyle{\quad -8^{2 x+2\}\}\}\)# ~\({\displaystyle{\quad 13^{6 x-2\}\}\}\)# ~\({\displaystyle{\quad 14^{4 x+11\}\}\}\)# ~\({\displaystyle{\quad 15^{-20 x-17\}\}\}\)# ~\({\displaystyle{\quad -16^{20 x-3\}\}\}\)#},Una función cuya derivada es \({\displaystyle{-4 3^{- 20 x-17} 5^{-20 x-16}\log (15)}}\) corresponde a: {1:MCVS:~=\({\displaystyle{\quad 15^{-20 x17\}\}\}\)#Excelente ~\({\displaystyle{\quad -8^{2 x+2\}\}\}\)# ~\({\displaystyle{\quad 10^{5 x+18\}\}\}\)# ~\({\displaystyle{\quad 13^{6 x-2\}\}\}\)# ~\({\displaystyle{\quad 14^{4 x+11\}\}\}\)# ~\({\displaystyle{\quad -16^{20 x-3\}\}\}\)#},Una función cuya derivada es \ ({\displaystyle{-5 4^{40 x-5}\log (16)}}\) corresponde a: {1:MCVS:~=\({\displaystyle{\quad -16^{20 x-3\}\}\}\)#Excelente ~\({\displaystyle{\quad -8^{2 x+2\}\}\}\)# ~\({\displaystyle{\quad 10^{5 x+18\}\}\}\)# ~\({\displaystyle{\quad 13^{6 x-2\}\}\}\)# ~\({\displaystyle{\quad 14^{4 x+11\}\}\}\)# ~\({\displaystyle{\quad 15^{-20 x-17\}\}\}\)#},Una función cuya derivada es \({\displaystyle{6\13^{6 x-2}\log (13)}}\) corresponde a: {1:MCVS:~=\({\displaystyle{\ quad 13^{6 x-2\}\}\}\)#Excelente ~\({\displaystyle{\quad -8^{2 x+2\}\}\}\)# ~\({\displaystyle{\quad 10^{5 x+18\}\}\}\)# ~\({\displaystyle{\quad 14^{4 x+11\}\}\}\)# ~\({\displaystyle{\quad 15^{-20 x-17\}\}\}\)# ~\({\displaystyle{\quad -16^{20 x-3\}\}\}\)#}}

En la figura 19 aparece una parte de las preguntas de selección única generadas mediante el código anterior, copiando sin formato el contenido de la celda de salida. Además, una explicación más amplia sobre el código utilizado en este ejercicio, se puede consultar en el video 11.

Salida en Moodle del ejemplo 9
Figura 19
Salida en Moodle del ejemplo 9
Elaboración propia.

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 11. Solución del ejemplo 9 https://youtu.be/Es4LjrbPK58

Respuesta corta

Una respuesta corta es un campo de texto en el que el usuario puede ingresar por teclado la respuesta a la pregunta del enunciado. La respuesta que se espera es de tipo literal, o más específicamente alfanumérica. Por esta razón es recomendable prestar especial atención al uso de mayúsculas y minúsculas.

La sentencia “ShortAnswer” del paquete “Incrustada” nos permite generar preguntas con respuesta corta. Explicamos esto en la siguiente ficha:

Ficha 7 (Comando “ShortAnswer”).

ShortAnswer” permite la elaboración de preguntas con respuesta corta en Moodle, facilitando una distinción (si se requiere) entre letras mayúsculas y minúsculas. En el software Wolfram Mathematica la ayuda de “ShortAnswer” retorna lo siguiente:

In[ ] :=

?ShortAnswer

Out[ ] =


Desarrollemos algunos ejemplos sobre la utilidad del comando “ShortAnswer”.

Ejemplo 10. Elabore un ítem de respuesta corta donde el usuario debe ingresar el resultado de la evaluación en x = 0 de:

x 2 + 6 x 9 x 3 + 2 x 2 6 x + 1

Además, construya una pregunta de complete más general, que de forma pseudoaleatoria elija un número entero x, con, - 20 x 20 , a sustituir en la expresión algebraica fraccionaria.

La evaluación solicitada corresponde a:

0 2 + 6 · 0 9 0 3 + 2 · 0 2 6 · 0 + 1 = 9 1

Como consecuencia, se podría pensar en emplear el comando “ShortAnswer” con el argumento “-9/1”, sin embargo, dicha instrucción por defecto no evalúa, por lo que si se resuelve de esa manera la opción de respuesta no será “-9”. Con esta finalidad hay tres caminos que el usuario podría tomar:

Se procederá usando el atributo “evaluar ->True”, veamos:

In[ ] :=

Column[{Row[{“Al evaluar ”, ToLatex[ x ^ 2 + 6 x - 9 x ^ 3 + 2 x ^ 2 - 6 x + 1 ], “ en ”, ToLatex[0], “ se obtiene como resultado: ”, ShortAnswer[{-9/1}, evaluar ->True]}]}]

Out[ ] =

Al evaluar \({\displaystyle{\frac{x^2+6 x-9}{x^3+2 x^2-6 x+1}}}\) en \({\displaystyle{0}}\) se obtiene como resultado: {1:SA:~=-9#Excelente}

Ahora, si de forma más general, se desea un ítem de evaluación para la expresión algebraica fraccionaria en un valor entero de x pseudoaleatorio, con - 2 0 x 2 0 , en Wolfram Mathematica una posible resolución es la que se detalla como sigue:

In[ ] :=

y = RandomInteger[{-20, 20}]; Column[{Row[{“Al evaluar ”, ToLatex[(x^2 + 6 x - 9)/(x^3 + 2 x^2 - 6 x + 1)], “ en ”, ToLatex[Evaluate@y], “ se obtiene como resultado: ”, ShortAnswer[Evaluate@Numerator[{(x^2 + 6 x - 9)/(x^3 + 2 x^2 - 6 x + 1) /. x ->y}]]/ShortAnswer[Evaluate@Denominator[{(x^2 + 6 x - 9)/(x^3 + 2 x^2 - 6 x + 1) /. x ->y}]]}]}]

Out[ ] =

Al evaluar \({\displaystyle{\frac{x^2+6 x-9}{x^3+2 x^2-6 x+1}}}\) en \({\displaystyle{3}}\) se obtiene como resultado: ({1:SA:~=9#Excelente})/({1:SA:~=14#Excelente})

Una explicación complementaria se puede obtener del video 12. En la figura 20 se exhibe la salida de la plataforma Moodle al copiar sin formato las celdas Out[ ] y pegar en el espacio de edición de la pregunta. En la subfigura 20.a aparece el ítem de evaluación en y en la subfigura 20.b el ítem de evaluación pseudoaleatorio.

Salida en Moodle del ejemplo 10.
Figura 20
Salida en Moodle del ejemplo 10.
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 12. Solución del ejemplo 10 https://youtu.be/Ih3mCvbktKQ

Ejemplo 11. Construya una pregunta de respuesta corta donde el usuario debe ingresar el nombre de un país de Asia del Este.

Mathematica cuenta con la instrucción “CountryData” que permite trabajar con datos reales de diversos países del mundo. Si a esa sentencia se le pasa como parámetro el stringEastAsia” devuelve la lista (en inglés) de todos los países pertenecientes a esa región geográfica. En general, “CountryData” soporta cualquiera de las regiones obtenidas mediante la ejecución de “CountryData["Groups"]”. En este ejemplo, por lo tanto, una eventual solución corresponde a:

In[ ] :=

Column[{Row[{“Ingrese el nombre de un país de Asia del Este (ponga el nombre en inglés y no deje espacios en blanco): ”, ShortAnswer[Evaluate@ToExpression[ Table[i[[2]], {i, CountryData[“EastAsia”]}]]]}]}]

Out[ ] =

Ingrese el nombre de un país de Asia del Este (ponga el nombre en inglés y no deje espacios en blanco): {1:SA:~=China#Excelente~=HongKong#Excelente~=Japan#Excelente~=Macau#Excelente~=Mongolia #Excelente~=NorthKorea#Excelente~=SouthKorea#Excelente~=Taiwan#Excelente}

En la figura 21 se muestra la pregunta generada en Moodle. Tal y como allí se comparte, Moodle ha aceptado como respuesta correcta la palabra “hOnGkOnG” (ver subfigura 21.a) evidenciando que la plataforma ignora una distinción entre el uso de letras mayúsculas y minúsculas. Si se desea restringir las respuestas del usuario respetando las letras mayúsculas y minúsculas en los nombres, tal y como fueron pasados al comando “ShortAnswer”, se debe utilizar el atributo “UpperLower ->True”. En dicho caso, el In[ ] de este ejemplo, quería de la forma:

In[ ] :=

Column[{Row[{“Ingrese el nombre de un país de Asia del Este (ponga el nombre en inglés y no deje espacios en blanco): ”, ShortAnswer[Evaluate@ToExpression[ Table[i[[2]], {i, CountryData[“EastAsia”]}]], UpperLower ->True]}]}]

En la subfigura 21.b se visualiza el uso del código anterior. Se observa cómo, en el ítem mostrado por Moodle, el string “hOnGkOnG” ya no es considerado una respuesta válida.

Salida en Moodle del ejemplo 11.
Figura 21
Salida en Moodle del ejemplo 11.
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 13. Solución del ejemplo 11 https://youtu.be/aF8HLRqODkM

Ejemplo 12. Diseñe en Moodle un ítem donde sobre el conjunto A = 2 4 6 8 10 12 14 16 18 20 se defina una relación binaria pseudoaleatoria, tal que a R b sí y solo sí se satisface uno de los siguientes criterios: a b 5 , a b 5 , ( ( a b ) mod 5 ) = 0 , ( ( a b ) mod 5 ) 0 , a 2 + b 2 9 ,o bien, a 2 + b 2 9 . La pregunta debe incluir dos respuestas de complete para ingresar un par ordenado de la relación binaria R y además, la cantidad de elementos que contiene.

Solución: Una posible solución de este ejercicio se comparte mediante el código que prosigue:

In[ ] :=

«VilCretas‘

A = Range[2, 20, 2]; Criterios = {a - b >= 5, a - b <= 5, Mod[a - b, 5] == 0, Mod[a - b, 5] != 0, a^2 + b^2 <= 9, a^2 + b^2 >= 9}; Criterio = RandomChoice[Criterios]; R = {RelBin[ToString[Criterio], A, A], A}; Column[{Row[{StringTemplate[“Considere la relación binaria ` ` definida sobre el conjunto ` `=”][ToLatex[R], ToLatex[A]], ToLatex[Evaluate[R[[2]]], conjunto ->True], “, tal que: ”, ToLatex[Evaluate[aRb ⇔ Criterio]], “.”}], Row[{StringTemplate[“Un par ordenado de ` ` es (use llaves en lugar de paréntesis redondos): ”][ToLatex[R]], ShortAnswer[Evaluate@R[[1]]], “.”}], Row[{StringTemplate[“La cardinalidad de ` ` corresponde a: ”][ToLatex[R]], ShortAnswer[{Evaluate@Length[R[[1]]]}], “.”}]}]

Out[ ] =

Considere la relación binaria ({\displaystyle{R}}\) definida sobre el conjunto \({\displaystyle{A}}\)= \({\displaystyle{\left\{2, 4, 6, 8, 10, 12, 14, 16, 18, 20\right\}}}\), tal que: \({\displaystyle{\text{aRb} \Leftrightarrow a^2+b^2\leq 9}}\). Un par ordenado de \({\displaystyle{R}}\) es (use llaves en lugar de paréntesis redondos): {1:SA:~={2, 2\}#Excelente~={2, 4\}#Excelente~={2, 6\}#Excelente~={4, 2\}#Excelente~={4, 4\} #Excelente~={6, 2\}#Excelente~={2,2\}#Excelente~={2,4\}#Excelente~={2,6\}#Excelente~={4,2\} #Excelente~={4,4\} #Excelente~={6,2\}#Excelente}. La cardinalidad de \({\displaystyle{R}}\) corresponde a: {1:SA:~=6#Excelente}

En la figura 22 aparece lo devuelto por la plataforma de aprendizaje, al copiar sin formato la celda del Out[ ] anterior y pegar en el espacio de edición de la pregunta en Moodle. Naturalmente, esta salida es pseudoaletaoria por lo que el lector podría obtener otro resultado al ejecutar el In[ ].

También, es importante señalar que el comando “ShortAnswer” cuando recibe como argumento expresiones donde es posible eliminar espacios en blanco, automáticamente elimina esos espacios y crea éstas nuevas opciones de respuesta, agregándolas a la lista empleada por “ShortAnswer”. En este ejemplo, “ShortAnswer” realizó la eliminación de los espacios en blanco en cada uno de los pares ordenados de la relación binaria R obtenidos mediante la instrucción “RelBin” y los incluyó en las opciones de respuesta.

Se aclara además, que la sentencia “RelBin” forma parte de otra librería llamada “VilCretas” que fue diseñada por uno de los autores del presente trabajo. Como se visualiza en el In[] de este ejercicio, “RelBin” toma como parámetros la o las condiciones de construcción de la relación binaria y los conjuntos sobre los cuáles se define, para retornar los pares ordenados que la conforman.

Si el lector lo desea, puede emplear el video 14 con el objetivo de mejorar su comprensión sobre el código utilizado para resolver este ejercicio.

Salida en Moodle del ejemplo 12
Figura 22
Salida en Moodle del ejemplo 12
Elaboración propia.

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 14. Solución del ejemplo 12 https://youtu.be/WuKBGn9aL5s

Nota: El paquete de software “VilCretas” está disponible en la dirección URL: https://www.escinf.una.ac.cr/discretas/Archivos/Packages/VilCretas.rar. Además, en Vílchez (2018) se ofrece un texto que describe todas las funcionalidades de los diferentes comandos que se incluyen en “VilCretas”, en caso de que el lector tenga interés de conocer más a profundidad esta herramienta.

Respuesta corta numérica

La sentencia “ShortNumerical” produce el código vinculado a una pregunta incrustada de respuesta corta (de forma similar a “ShortAnswer”), pero donde el dato ingresado por techado es de tipo numérico (entero o con decimales), de lo contrario, la plataforma de aprendizaje no aceptará la respuesta. Explicamos esto en la siguiente ficha:

Ficha 8 (Instrucción “ShortNumerical”).

ShortNumerical” crea el código para una pregunta tipo cloze donde la respuesta es un número, al cuál es factible, definir un grado de precisión. Mathematica nos permite ver la descripción de uso de este comando, mediante la ayuda de la sentencia:

In[ ] :=

?ShortNumerical

Out[ ] =


Consideremos algunos ejemplos que involucran el uso de “ShortNumerical”.

Ejemplo 13. Diseñe un ítem de respuesta corta, donde al darse en el enunciado una función cuadrática, el usuario responda cuáles son las coordenadas del vértice de la parábola y la intersección con el eje y , bajo un nivel de precisión de 0.2. Construya la función de manera pseudoaleatoria al asignar coeficientes numéricos enteros en el rango de -20 a 20.

Solución: La función “funCuadra” que se comparte crea una función cuadrática, calculando su vértice e intersección con el eje y . Si a esta función se le pasan parámetros pseudoaleatorios se consigue lo solicitado en este ejercicio, veamos:

In[ ] :=

funCuadra[a_, b_, c_] := {{a, b, c}, {-b/(2 a), -((b^2 - 4 a c)/(4 a))} // N, {0, c} // N} funcion = funCuadra[RandomChoice[{-1, 1}] RandomInteger[{1, 20}], RandomInteger[{-20, 20}], RandomInteger[{-20, 20}]]; Column[{StringTemplate[“Determine las coordenadas del vértice y la intersección con el eje ` ` de la función cuadrática ` ` ` ` ` `. Use valores con decimales si corresponde.”][ToLatex[y], ToLatex[f[x]], ToLatex[“=”], ToLatex[Evaluate[funcion[[1, 1]] x^2 + funcion[[1, 2]] x + funcion[[1, 3]]]]], Row[{StringTemplate[“Vértice: ` ` ”][ToLatex[“(”]], ShortNumerical[{Evaluate@funcion[[2, 1]]}, precision ->0.2], “,”, ShortNumerical[{Evaluate@funcion[[2, 2]]}, precision ->0.2], StringTemplate[“ ` ` ”][ToLatex[“)”]]}], Row[{StringTemplate[“Intersección con el eje ` `: ` ` ”][ToLatex[y], ToLatex[“(”]], ShortNumerical[{0}], “,”, ShortNumerical[{Evaluate@funcion[[3, 2]]}, precision ->0.2], StringTemplate[“ ` ` ”][ToLatex[“)”]]}]}]

Out[ ] =

Determine las coordenadas del vértice y la intersección con el eje \({\displaystyle{y}}\) de la función cuadrática \({\displaystyle{f(x)}}\)\({\displaystyle{=}}\)\({\displaystyle{7 x^2+4 x-17}}\). Use valores con decimales si corresponde. Vértice: \({\displaystyle{(}}\){1:NUMERICAL:~=-0.2857142857142857:0.2#Excelente}, {1:NUMERICAL:~=-17.571428571428573:0.2#Excelente}\({\displaystyle{)}}\) Intersección con el eje \({\displaystyle{y}}\): \({\displaystyle{(}}\){1:NUMERICAL:~=0:0#Excelente}, {1:NUMERICAL:~=-17.:0.2#Excelente}\({\displaystyle{)}}\)

En la figura 23 se muestra la salida del Out[ ] anterior en la plataforma Moodle. El Out[ ] es pseudoaleatorio por lo que podría implicar obtener un resultado distinto.

Se aclara al lector además, el significado de definir una precisión de “0.2” dentro de la plataforma de aprendizaje Moodle. Este valor permite que el sistema tome como correctas cualquier respuesta x que satisfaga: “valor correcto - precision x valor correcto + precision”, según lo establecido en la Ficha 8. Por ejemplo, para el primer campo de texto mostrado en la figura 23, sería correcto colocar como respuesta cualquier número x , con -0.2857142857142857-0.2 x -0.2857142857142857+0.2.

Finalmente, se insta al usuario a consultar el video 15, para recibir una explicación más detallada sobre la respuesta de este ejemplo.

Salida en Moodle del ejemplo 13
Figura 23
Salida en Moodle del ejemplo 13
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 15. Solución del ejemplo 13 https://youtu.be/vG_KoaLjgh4

Ejemplo 14. Genere una pregunta de respuesta corta numérica, donde al recibir los lados de un grafo conexo pseudoaleatorio con siete nodos y siete aristas, solicite como respuesta la ejecución de los algoritmos “buscar primero a lo ancho” y “buscar primero a lo largo” usando el orden de los vértices: 6 7 5 2 4 1 3 .

Solución: Una manera de resolver este ejercicio en Wolfram Mathematica, se exhibe a continuación:

In[ ] :=

«VilCretas‘

grafo = GrafoRandomConexo[7, 7] aristas = ListaAristas[grafo]; ParesToShortNumerical[Pares_] := Module[{NuevosPares = {}, i, par}, For[i = 1, i <= Length[Pares], par = Pares[[i]]; NuevosPares = Append[NuevosPares,{ShortNumerical[Evaluate[{par[[1]]}]], ShortNumerical[Evaluate[{par[[2]]}]]}]; i++]; NuevosPares] BA = ParesToShortNumerical[Sort /@ BuscarPrimeroAncho[grafo, orden ->{6, 7, 5, 2, 4, 1, 3}]]; BL = ParesToShortNumerical[Sort /@ BuscarPrimeroLargo[grafo, orden ->{6, 7, 5, 2, 4, 1, 3}]]; Column[{Row[{StringTemplate[“Aplique los algoritmos “buscar primero a lo ancho” y “buscar primero a lo largo” sobre el grafo conexo con el conjunto de aristas ` ` ` ` ` ` ”][ToLatex[A], ToLatex[“=”], ToLatex[Evaluate@aristas, conjunto ->True]], StringTemplate[“, usando el orden ` `. Escriba los nodos de cada lado de menor a mayor, por ejemplo, si la arista a incluir es ` `, se debe ingresar como ` `.”][ToLatex[{6, 7, 5, 2, 4, 1, 3}, conjunto ->True], ToLatex[{7, 4}, conjunto ->True], ToLatex[{4, 7}, conjunto ->True]]}], Row[{“Buscar primero a lo ancho: ”, BA}], Row[{“Buscar primero a lo largo: ”, BL}]}]

Out[ ] =

Aplique los algoritmos “buscar primero a lo ancho” y “buscar primero a lo largo” sobre el grafo conexo con el conjunto de aristas \({\displaystyle{A}}\)\({\displaystyle{=}}\)\({\displaystyle{\left\{\left\{{1, 4}\right\},\left\{{1, 6}\right\},\left\{{1, 7}\right\},\left\{{2, 5}\right\},\left\{{3, 5}\right\},\left\{{4, 5}\right\}, \left\{{5, 7}\right\}\right\}}}\), usando el orden \({\displaystyle{\left\{6,7,5,2,4,1,3\right\}}}\). Escriba los nodos de cada lado de menor a mayor, por ejemplo, si la arista a incluir es \({\displaystyle{\left\{7,4\right\}}}\), se debe ingresar como\({\displaystyle{\left\{4,7\right\}}}\). Buscar primero a lo ancho: {{{1:NUMERICAL:~=1:0#Excelente}, {1:NUMERICAL:~=6:0#Excelente}}, {{1:NUMERICAL:~=1:0#Excelente}, {1:NUMERICAL:~=7:0#Excelente}}, {{1:NUMERICAL:~=1:0#Excelente}, {1:NUMERICAL:~=4:0#Excelente}}, {{1:NUMERICAL:~=5:0#Excelente}, {1:NUMERICAL:~=7:0#Excelente}}, {{1:NUMERICAL:~=2:0#Excelente}, {1:NUMERICAL:~=5:0#Excelente}}, {{1:NUMERICAL:~=3:0#Excelente}, {1:NUMERICAL:~=5:0#Excelente}}} Buscar primero a lo largo: {{{1:NUMERICAL:~=1:0#Excelente}, {1:NUMERICAL:~=6:0#Excelente}}, {{1:NUMERICAL:~=1:0#Excelente}, {1:NUMERICAL:~=7:0#Excelente}}, {{1:NUMERICAL:~=5:0#Excelente}, {1:NUMERICAL:~=7:0#Excelente}},{{1:NUMERICAL:~=2:0#Excelente}, {1:NUMERICAL:~=5:0#Excelente}}, {{1:NUMERICAL:~=4:0#Excelente}, {1:NUMERICAL:~=5:0#Excelente}}, {{1:NUMERICAL:~=3:0#Excelente}, {1:NUMERICAL:~=5:0#Excelente}}}

La figura 24 comparte lo generado por Moodle al emplear el código de la salida anterior.

En el In[ ] se han utilizado las instrucciones del paquete “VilCretas”: “GrafoRandomConexo”, “ListaAristas”, “BuscarPrimeroAncho” y “BuscarPrimeroLargo”. Se recuerda al lector, que ya se había hecho mención a la librería “VilCretas”, en el ejemplo 12. Si el usuario requiere una explicación más profunda sobre el código usado aquí, se sugiere visualizar el video 16.

Salida en Moodle del ejemplo 14
Figura 24
Salida en Moodle del ejemplo 14
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 16. Solución del ejemplo 14 https://youtu.be/5JoqzIgsKkQ

Ejemplo 15. Elabore cinco ítems distintos de respuesta corta numérica, donde en cada uno, al generarse de manera pseudoaleatoria la longitud de la hipotenusa y la longitud de un cateto de un triángulo rectángulo, coloque como opción de respuesta la longitud del cateto faltante, usando una precisión de 0.2.

El programa “HallarCateto” expuesto a continuación, automatiza la elaboración de “n” ítems según la naturaleza del presente ejercicio. En Wolfram Mathematica:

In[ ] :=

HallarCateto[n_] := Module[{cat = RandomChoice[Range[1, 10 n]], hip = RandomChoice[Range[11 n, 20 n]], ValoresUsados1 = {}, ValoresUsados2 = {}, ValoresNoUsados1 = Range[1, 10 n], ValoresNoUsados2 = Range[11 n, 20 n], i, Items = {}}, ValoresUsados1 = Union[ValoresUsados1, {cat}]; ValoresUsados2 = Union[ValoresUsados2, {hip}]; ValoresNoUsados1 = Complement[ValoresNoUsados1, ValoresUsados1]; ValoresNoUsados2 = Complement[ValoresNoUsados2, ValoresUsados2]; For[i = 1, i <= n, Items = Append[Items, Row[{StringTemplate[“En un triángulo rectángulo se sabe que la longitud de la hipotenusa es ` ` y que la longitud de uno de sus catetos es ` `. Determine la longitud del otro cateto: ”][ToLatex[Evaluate@hip], ToLatex[Evaluate@cat]], ShortNumerical[{Evaluate@N[ hip ^ 2 - cat ^ 2 ]}, precision ->0.2]}]]; cat = RandomChoice[ValoresNoUsados1]; hip = RandomChoice[ValoresNoUsados2]; ValoresUsados1 = Union[ValoresUsados1, {cat}]; ValoresUsados2 = Union[ValoresUsados2, {hip}]; ValoresNoUsados1 = Complement[ValoresNoUsados1, ValoresUsados1]; ValoresNoUsados2 = Complement[ValoresNoUsados2, ValoresUsados2]; i++]; Items] HallarCateto[5]

Out[ ] =

{En un triángulo rectángulo se sabe que la longitud de la hipotenusa es \({\displaystyle{92}}\) y que la longitud de uno de sus catetos es \({\displaystyle{13}}\). Determine la longitud del otro cateto: {1:NUMERICAL:~=91.0768905925098:0.2#Excelente},En un triángulo rectángulo se sabe que la longitud de la hipotenusa es \({\displaystyle{57}}\) y que la longitud de uno de sus catetos es \ ({\displaystyle{32}}\). Determine la longitud del otro cateto: {1:NUMERICAL:~=47.169905660283014:0.2#Excelente},En un triángulo rectángulo se sabe que la longitud de la hipotenusa es\({\displaystyle{95}}\) y que la longitud de uno de sus catetos es \({\displaystyle{9}}\). Determine la longitud del otro cateto: {1:NUMERICAL:~=94.57272334029511:0.2#Excelente},En un triángulo rectángulo se sabe que la longitud de la hipotenusa es \({\displaystyle{98}}\) y que la longitud de uno de sus catetos es \({\displaystyle{29}}\). Determine la longitud del otro cateto: {1:NUMERICAL:~=93.61089680160104:0.2#Excelente},En un triángulo rectángulo se sabe que la longitud de la hipotenusa es \({\displaystyle{60}}\) y que la longitud de uno de sus catetos es \({\displaystyle{4}}\). Determine la longitud del otro cateto: {1:NUMERICAL:~=59.86651818838306:0.2#Excelente}}

En la figura 25 aparecen los cinco ítems correspondientes a la salida arrojada por la función “HallarCateto”. Se sugiere consultar el video 17, para recibir una explicación más minuciosa sobre el código de “HallarCateto” y su Out[ ].

Salida en Moodle del ejemplo 15
Figura 25
Salida en Moodle del ejemplo 15
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 17. Solución del ejemplo 15 https://youtu.be/PigTbqgAoVs

Tabla HTLM

En distintos tipos de ítems, el profesor podría tener la necesidad de crear como respuesta una matriz o una tabla donde el estudiante incorpore en cada una de sus entradas, un valor correspondiente a una operación o a un proceso. El comando “TablaHTML” cubre esta demanda, al recibir como parámetro una matriz y devolver con esa misma estructura (añadiendo encabezados si se desea), una serie de entradas con opciones de respuesta desplegada, de complete o una combinación pseudoaleatoria entre ambas. Explicamos esto en la siguiente ficha:

Ficha 9 (Sentencia “TablaHTML”).

Al emplear la ayuda de la instrucción “TablaHTML” en el software Wolfram Mathematica, se especifican sus características de uso:

In[ ] :=

?TablaHTML

Out[ ] =


Nota: Se aclara al lector que el comando “TablaHTML” construye el código de respuestas incrustadas en Moodle como una tabla “HTML” y no como una tabla de LaTeX, a razón de que las tablas en LaTeX dentro de la plataforma de aprendizaje Moodle, no soportan código generador de respuestas tipo cloze. Ante esta limitante, una forma de resolución reside en incorporar ese código dentro de cada uno de los campos en una tabla diseñada mediante el lenguaje de marcas de hipertexto o “HTML” como se le conoce popularmente.

En la siguiente ficha se recordará al usuario de este documento, cómo se accede al ambiente de edición “HTML” en una pregunta de un banco de preguntas, dentro de un aula virtual Moodle.

Ficha 10 (Ambiente “HTML” de una pregunta en la plataforma Moodle).

En la figura 26 se aprecia cómo activar el ambiente de edición “HTML” de una pregunta en Moodle.

Para ello, se presiona el botón “Mostrar/ocultar botones avanzados” y posteriormente el botón “</>” (“HTML”) con el objetivo de habilitar en el espacio de edición de la pregunta, la escritura de código del lenguaje de marcas de hipertexto.

Entorno “HTML” en Moodle
Figura 26
Entorno “HTML” en Moodle
Elaboración propia

Consideremos algunos ejemplos sobre la utilidad del comando “TablaHTML”.

Ejemplo 16 Realice una pregunta incrustada que genere el resultado de la operación (AtBF)∧ F donde A, B y F sonmatrices booleanas pseudoaleatorias de tamaño 5 X 5.

El siguiente código de Wolfram Language brinda una forma de resolución para el presente ejercicio:

In[ ] :=

«VilCretas‘

A=RandomInteger[{0,1},{5,5}]; B=RandomInteger[{0,1},{5,5}]; F=RandomInteger[{0,1},{5,5}]; Matriz=InterseccionBooleana[ProductoBooleano[Transpose[A], ComplementoBooleano[UnionBooleana[B, F][[1]]][[1]]][[1]], F]; StringTemplate[“La solución de la operación ` ` ` ` ` ` ` ` ` ` con ` ` ` ` ` `, ` ` ` ` ` ` y ` ` ` ` ` `, corresponde a: ”][ToLatex[“(”],ToLatex[ ], ToLatex[“)”],ToLatex[“∧”], ToLatex[F], ToLatex[A], ToLatex[“=”], ToLatex[Evaluate@A, matriz->True], ToLatex[B], ToLatex[“=”], ToLatex[Evaluate@B, matriz->True], ToLatex[F], ToLatex[“=”], ToLatex[Evaluate@F,matriz->True]] TablaHTML[Matriz[[1]]]

Out[ ] =

La solución de la operación \({\displaystyle{(}}\)\({\displaystyle{A^t \odot \overline{B \lor F}}}\) \({\displaystyle{)}}\) \({\displaystyle{\land}}\) \({\displaystyle{F}}\) con \({\displaystyle{A}}\)\({\displaystyle{=}}\)\({\displaystyle{\left( \begin{array}{ccccc} 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 1 \\ \end{array} \right) }}\), \({\displaystyle{B}}\)\({\displaystyle{=}}\)\({\displaystyle{\left( \begin{array}{ccccc} 0 & 1 & 1 & 0 & 1 \\ 1 & 0 & 1 & 1 & 1 \\ 0 & 1 & 1 & 0 & 1 \\ 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 1 \\ \end{array} \right) }}\) y \({\displaystyle{F}}\)\({\displaystyle{=}}\)\({\displaystyle{\left( \begin{array}{ccccc} 0 & 0 & 0 & 0 & 0 \\ 1 & 1 & 1 & 1 & 1 \\ 1 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 1 & 1 & 1 \\ \end{array} \right) }}\), corresponde a:

<table border=1> <tbody> <tr> <td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td></tr> <tr> <td>{1:MCS:~=1#Excelente~0#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=1#Excelente~0#}</td><td>{1:MCS:~=0#Excelente~1#}</td></tr> <tr> <td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td></tr> <tr> <td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td></tr> <tr> <td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td><td>{1:MCS:~=0#Excelente~1#}</td> </tr> </tbody> </table>

El paquete “VilCretas” se debe usar en este caso, para habilitar el funcionamiento de las operaciones booleanas implicadas en las sentencias: “InterseccionBooleana”, “ProductoBooleano”, “ComplementoBooleano” y “UnionBooleana”.

Al copiar como texto sin formato y pegar en el espacio de edición de la pregunta en Moodle, se obtiene lo mostrado en la figura 27. Se advierte al lector que la tabla “HTML” generada por la instrucción “TablaHTML” debe ser pegada en el entorno editable “HTML”, tal y como se explicó en la Ficha 10.

Por otra parte, en la figura 27 se visualiza que el comando “TablaHTML”, construye por defecto una tabla de respuestas incrustadas del tipo desplegada, sin embargo, también ofrece la posibilidad de facilitar las opciones de respuesta como un complete o una combinación entre éstas y las de despliegue. Para ello, se usan los atributos: “completar ->True”, o bien, “mixta ->True”, respectivamente. En la figura 28 se aprecia la salida en Moodle al emplear “mixta ->True” en el comando “TablaHTML”, quedando la entrada en Wolfram Mathematica de la siguiente manera:

In[ ] :=

TablaHTML[Matriz[[1]], mixta ->True]

Cabe mencionar que, el software Mathematica elige de forma pseudoaleatoria los campos de la tabla “HTML” que quedarán con respuestas desplegadas y los espacios que quedarán con respuestas de complete.

El video 18 presenta una explicación más robusta sobre el código expuesto en este ejemplo y su uso dentro de la plataforma de aprendizaje Moodle.

Salida en Moodle del ejemplo 16 con opciones de respuesta desplegadas
Figura 27
Salida en Moodle del ejemplo 16 con opciones de respuesta desplegadas
Elaboración propia.

Salida en Moodle del ejemplo 16 con opciones de respuesta mixtas
Figura 28
Salida en Moodle del ejemplo 16 con opciones de respuesta mixtas
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 18.

Solución del ejemplo 16 https://youtu.be/am78fWfB9Cg

Ejemplo 17 Diseñe una pregunta cloze cuyas opciones de respuesta sean la solución de la ecuación A·X +B = 2F,siendo A, B y F matrices pseudoaleatorias de tamaño 5×5 con entradas enteras en el rango de 1 a 100.

Solución: En Mathematica se puede proceder como sigue a continuación:

In[ ] :=

A = RandomInteger[{1,100}, {5,5}]; B = RandomInteger[{1,100}, {5,5}]; F = RandomInteger[{1,100}, {5,5}]; Matriz = Inverse[A] . (2 F - B) // N; StringTemplate[“La solución de la ecuación ` ` ` ` ` ` ` ` ` ` ` `, corresponde a: ”][ToLatex[Evaluate@A, matriz ->True], ToLatex[X], ToLatex[“+”], ToLatex[Evaluate@B, matriz ->True], ToLatex[“= 2”], ToLatex[Evaluate@F, matriz ->True]] TablaHTML[Matriz]

Out[ ] =

34 & 13 & 66 & 8 & 38 \\3 & 90 & 52 & 67 & 66 \\69 & 70 & 35 & 84 & 89 \\84 & 34 & 49 & 68 & 28 \\55 & 79 & 51 & 51 & 2 \\\end{array}\right)}}\) \({\displaystyle{\text{= 2}}}\) \({\displaystyle{\left(\begin{array}{ccccc}69 & 98 & 14 & 62 & 1 \\6 & 91 & 2 & 19 & 91 \\85 & 100 & 27 & 75 & 28 \\99 & 23 & 83 & 28 & 40 \\34 & 67 & 50 & 28 & 85 \\\end{array}\right)}}\), corresponde a:<table border=1> <tbody> <tr> <td>{1:MCS:~=1.86061324919953#Excelente~-2.3074825281791362#~-1.767357386781813#~-1.6907983625258587#~-1.5741102607042836#~-1.2974922087699596#~-1.0297753370117995#~-0.6552562825699857#~-0.49232575717891464#~-0.35609661523750563#~-0.1141155853339721#~-0.05484034444281641#~0.007505196601663488#~0.2665670256754285#~0.33999773573627934#~0.68512673469574#~0.73623959808436#~0.9763569626679812#~1.0644327563057767#~1.4573924491141539#~1.5219397415687315#~1.7324137860764768#~1.8356660411278056#~2.649459775649581#~2.8016632071100727#}</td> ···<td>{1:MCS:~=2.8016632071100727#Excelente~-2.3074825281791362#~-1.767357386781813#~-1.6907983625258587#~-1.5741102607042836#~-1.2974922087699596#~-1.0297753370117995#~-0.6552562825699857#~-0.49232575717891464#~-0.35609661523750563#~-0.1141155853339721#~-0.05484034444281641#~0.007505196601663488#~0.2665670256754285#~0.33999773573627934#~0.68512673469574#~0.73623959808436#~0.9763569626679812#~1.0644327563057767#~1.4573924491141539#~1.5219397415687315#~1.7324137860764768#~1.8356660411278056#~1.86061324919953#~2.649459775649581#}</td> </tr> </tbody> </table>

La salida no se muestra por completo dado su considerable tamaño. En este ejemplo, se desea dejar en evidencia la eficiencia de cálculo del software Wolfram Mathematica en la creación de ítems incrustados. Si no se hubiese contado con Mathematica, el cálculo de la solución de la ecuación matricial A · X +B = 2F sería un trabajo muy laborioso y necesario cada vez que se obtienen matrices pseudoaleatorias distintas. Con Wolfram Mathematica esta tarea se resuelve fácilmente en unos pocos segundos. (Error 9: La ecuación que aparece resaltada en amarillo no fue procesada de forma correcta en el servidor. Debe borrar dicha ecuación usando la herramienta de borrado y a continuación marcarla nuevamente. Si el problema persiste, por favor comunicar el error a editores@redalyc.org)

En la figura 29 se comparte lo procesado por Moodle al copiar y pegar sin formato las salidas anteriores. Se vuelve a recordar al lector, que la tabla “HTML” retornada por la sentencia “TablaHTML”, debe ser pegada en el entorno de edición “HTML” de la pregunta (ver la Ficha 10).

Salida en Moodle del ejemplo 17
Figura 29
Salida en Moodle del ejemplo 17
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 19. Solución del ejemplo 17 https://youtu.be/Bkbh9axpyqM

Ejemplo 18. Elabore una pregunta incrustada que muestre el diagrama de transición de un autómata de estado finito no determinístico con cuatro estados y tres símbolos de entrada, donde se solicite como respuesta su función de estado siguiente.

En el paquete de software “VilCretas” se cuenta con el comando “AutomataNDRandom” cuya competencia consiste en generar el diagrama de transición de un autómata pseudoaleatorio de estado finito no determinístico, con “.” estados y “.” símbolos de entrada. En Mathematica, al correr esta instrucción se obtiene:

In[ ] :=

«VilCretas‘

AutomataNDRandom[4, 3]

Out =


La salida es pseudoaleatoria, por lo que si el lector corre el mismo In[ ], muy probablemente obtendrá un diagrama de transición distinto. También, la sentencia “AutomataNDRandom” almacena automáticamente el autómata construido en la variable “G”.

En el paquete “VilCretas”, a su vez, se cuenta con la sentencia “ComponentesAutomata” que devuelve las cinco componentes de un autómata pasado como parámetro, es decir: el conjunto de estados, el conjunto de símbolos de entrada, el estado inicial, la función de transición de estados (que corresponde a la respuesta que el alumno debe proporcionar en este ítem) y el conjunto de estados aceptados. Como se requiere la función de transición de estados con el objetivo de pasar luego esta matriz al comando “TablaHTML”, se hace indispensable recurrir al uso de “ComponentesAutomata” empleando como argumento la variable “G”, veamos:

In[ ] :=

ComponentesAutomata[G /. Thread[{σ0, σ1, σ2, σ3} ->{s0, s1, s2, s3}]]

Out[ ] =

Estados: {s0, s1, s2, s3} Sı́mbolos de entrada: {a, b, c} Estado inicial: s2 Estados aceptados: {s0, s3}

a b cs0 {s0} {s3} {s0,s1,s2}s1 {s1,s2,s3} {s0} {s1}s2 {s0,s1,s3} {s0,s2,s3} {s1}s3 {s1,s3} {s2} {s0,s1,s2}

Función de transición de estados con otro formato: {{s0, a, {s0}}, {s0, b, {s3}}, {s0, c, {s0, s1, s2}}, {s1, a, {s1, s2, s3}}, {s1, b, {s0}}, {s1, c, {s1}}, {s2, a, {s0, s1, s3}}, {s2, b, {s0, s2, s3}}, {s2, c, {s1}}, {s3, a, {s1, s3}}, {s3, b, {s2}}, {s3, c, {s0, s1, s2}}}

Previamente se señaló que la instrucción “Desplegada” no acepta subíndices en sus parámetros, de forma similar, la sentencia “TablaHTML” tampoco lo hace, razón por la cual, en el In[ ] precedido se están sustituyendo los estados “ σ 0 ”, “ σ 1 ”, “ σ 2 ” y “ σ 3 ” por “s0”, “s1”, “s2” y “s3”, respectivamente. Ahora, se pasará a la instrucción “TablaHTML” la matriz estado siguiente retornada por “ComponentesAutomata”:

In[ ] :=

Matriz =

TablaHTML[Matriz, encabezados ->{{s0, s1, s2, s3}, {a, b, c}}]

Out[ ] =

<table border=1> <tbody> <tr> <td>\({\displaystyle{\text{}}}\)</td> <td>\({\displaystyle{a}}\)</td><td>\({\displaystyle{b}}\)</td> <td>\({\displaystyle{c}}\)</td> </tr> <tr><td>\({\displaystyle{\text{s0}}}\)</td> <td>{1:MCS: ~={s0\}#Excelente~{s1\}#~{s2\}#~{s3\}#~{s1, s3\}#~{s0, s1, s2\}#~{s0, s1, s3\}#~{s0, s2, s3\}#~{s1, s2, s3\}#}</td><td>{1:MCS: ~={s3\}#Excelente~{s0\}#~{s1\}#~{s2\}#~{s1, s3\}#~{s0, s1, s2\}#~{s0, s1, s3\}#~{s0, s2, s3\}#~{s1, s2, s3\}#}</td> <td>{1:MCS: ~={s0, s1, s2\}#Excelente~{s0\}#~{s1\}#~{s2\}#~{s3\}#~{s1, s3\}#~{s0, s1, s3\}#~{s0, s2, s3\}#~{s1, s2, s3\}#}</td> </tr> <tr><td>\({\displaystyle{\text{s1}}}\)</td> <td>{1:MCS: ~={s1, s2, s3\}#Excelente~{s0\}#~{s1\}#~{s2\}#~{s3\}#~{s1, s3\}#~{s0, s1, s2\}#~{s0, s1, s3\}#~{s0, s2, s3\}#}</td> <td>{1:MCS: ~={s0\}#Excelente~{s1\}#~{s2\}#~{s3\}#~{s1, s3\}#~{s0, s1, s2\}#~{s0, s1, s3\}#~{s0, s2, s3\}#~{s1, s2, s3\}#}</td><td>{1:MCS: ~={s1\}#Excelente~{s0\}#~{s2\}#~{s3\}#~{s1, s3\}#~{s0, s1, s2\}#~{s0, s1, s3\}#~{s0, s2, s3\}#~{s1, s2, s3\}#}</td> </tr> <tr> <td>\({\displaystyle{\text{s2}}}\)</td> <td>{1:MCS:~={s0, s1, s3\}#Excelente~{s0\}#~{s1\}#~{s2\}#~{s3\}#~{s1, s3\}#~{s0, s1, s2\}#~{s0, s2, s3\}#~{s1, s2, s3\}#}</td> <td>{1:MCS: ~={s0, s2, s3\}#Excelente~{s0\}#~{s1\}#~{s2\}#~{s3\}#~{s1, s3\}#~{s0, s1, s2\}#~{s0, s1, s3\}#~{s1, s2, s3\}#}</td> <td>{1:MCS: ~={s1\}#Excelente~{s0\}#~{s2\}#~{s3\}#~{s1, s3\}#~{s0, s1, s2\}#~{s0, s1, s3\}#~{s0, s2, s3\}#~{s1, s2, s3\}#}</td></tr> <tr> <td>\({\displaystyle{\text{s3}}}\)</td> <td>{1:MCS: ~={s1, s3\}#Excelente~{s0\}#~{s1\}#~{s2\}#~{s3\}#~{s0, s1, s2\}#~{s0, s1, s3\}#~{s0, s2, s3\}#~{s1, s2, s3\}#}</td> <td>{1:MCS: ~={s2\}#Excelente~{s0\}#~{s1\}#~{s3\}#~{s1, s3\}#~{s0, s1, s2\}#~{s0, s1, s3\}#~{s0, s2, s3\}#~{s1, s2, s3\}#}</td> <td>{1:MCS: ~={s0, s1, s2\}#Excelente~{s0\}#~{s1\}#~{s2\}#~{s3\}#~{s1, s3\}#~{s0, s1, s3\}#~{s0, s2, s3\}#~{s1, s2, s3\}#}</td> </tr> </tbody> </table>

El atributo “encabezados ->{{s0, s1, s2, s3}, {a, b, c}}” agrega a la tabla “HTML” encabezados en las filas y las columnas. La figura 30 muestra el ítem en la plataforma Moodle. El enunciado de la pregunta y la imagen del diagrama de transición del autómata se incluyeron de manera manual en Moodle, sin haber copiado/pegado nada desde Mathematica.

Otras propiedades interesantes del comando “TablaHTML” son: “distractor” y “distractores”. La primera permite especificar una lista con los distractores que utilizarán todas las respuestas desplegadas de la tabla “HTML”. La segunda brinda la posibilidad de personalizar esos distractores a emplear, pero de una manera individual para cada entrada de la tabla correspondiente.

En la figura 31 se visualiza el ítem de este ejercicio, donde se están produciendo como distractores todos los subconjuntos de {s0, s1, s2, s3} (conocido como el conjunto potencia). Para ello, se utilizó el siguiente In[ ] en Wolfram Mathematica.

In[ ] :=

Matriz = s0 s3 s0 s1 s2 s1 s2 s3 s0 s1 s0 s1 s3 s0 s2 s3 s1 s1 s3 s2 s0 s1 s2 ;

TablaHTML[Matriz, encabezados ->{{s0, s1, s2, s3}, {a, b, c}}, distractor ->{Subsets[{s0, s1, s2, s3}]}]

Se aclara al lector que la sentencia “Subsets” de Mathematica, calcula el conjunto potencia de {s0, s1, s2, s3}.

En la figura 32, por otra parte, se está haciendo uso del atributo “distractores” para personalizar los distractores de las entradas en la primera fila de la tabla “HTML”, como: {{},{s0},{s1},{s2},{s3}}, {{s2,s3},{s0,s1,s2}} y {{s1,s2,s3},{s0,s1,s2,s3}}, respectivamente. A pesar de haber incluido el conjunto {s0} como distractor del primer campo de la tabla “HTML”, en realidad {s0} es la respuesta correcta de dicha entrada, en este sentido, el software lo detecta automáticamente y excluye a {s0} como una opción incorrecta. El código de Wolfram que facilita la elaboración del ítem así descrito, se comparte a continuación:

In[ ] :=

Matriz = s0 s3 s0 s1 s2 s1 s2 s3 s0 s1 s0 s1 s3 s0 s2 s3 s1 s1 s3 s2 s0 s1 s2 ;

TablaHTML[Matriz, encabezados ->{{s0, s1, s2, s3}, {a, b, c}}, distractor ->{Subsets[{s0, s1, s2, s3}]}]

No se socializan en este documento las salidas de estos In[ ] por su significativo tamaño, sin embargo, se sugiere al lector consultar el video 20, donde se proveen más detalles al respecto.

Salida en Moodle del ejemplo 18: tabla con encabezados
Figura 30
Salida en Moodle del ejemplo 18: tabla con encabezados
Elaboración propia

Salida en Moodle del ejemplo 18: tabla con el conjunto potencia como distractor
Figura 31
Salida en Moodle del ejemplo 18: tabla con el conjunto potencia como distractor
Elaboración propia

Salida en Moodle del ejemplo 18: tabla con distractores personalizados
Figura 32
Salida en Moodle del ejemplo 18: tabla con distractores personalizados
Elaboración propia

Se recomienda estudiar el siguiente vídeo para una mejor comprensión del tema:

Video 20. Solución del ejemplo 18 https://youtu.be/W74X-ehw4a4

Conclusiones

El paquete de software “Incrustada” constituye un esfuerzo de desarrollo por parte de sus autores, con el principal objetivo de facilitar la elaboración de pruebas online dentro de la plataforma de aprendizaje Moodle.

Esta herramienta se espera que contribuya positivamente con la ardua labor educativa que en muchas instituciones de enseñanza media-superior, provoca una saturación en los grupos de docentes responsables de realizar múltiples tareas.

Incrustada” ofrece una alternativa para favorecer el diseño de preguntas tipo cloze, demandando un vigor cognitivo en la elaboración de los enunciados y el esquema de las respuestas, pero minimizando el tiempo dedicado a cálculos numéricos o simbólicos (muchas veces desgastantes si se resolvieran “a mano”), siendo el software Wolfram Mathematica el encargado de ejecutar estos procedimientos y permitiendo luego, recopilar las salidas obtenidas dentro de alguno de los comandos que conforman el paquete “Incrustada”.

La herramienta “Incrustada” parte del principio de la automatización de procesos como un recurso esencial para optimizar el tiempo de los docentes y asimismo, procurar el diseño de evaluaciones más objetivas.

Bibliografía

[1] Calvo, M., Miñarro, A. & Vegas, E. (2-3 de junio de 2016). Generación de cuestionarios Moodle con R+exams+Sweave. VII Jornadas de Enseñanza y Aprendizaje de la Estadística y la Investigación Operativa. Universidad de Barcelona, España.

[2] Izquierdo, R., García, C., Latorre, P. & Barbero, J. (2021). Generación automática de preguntas cloze para cuestionarios Moodle sobre análisis léxico. Actas de las Jenui, 6, 163-170.

[3] Mateo, J., Olivé, C. & Puigjaner, D. (2012). Nuevos módulos de Moodle para la personalización de ejercicios. Revista del Congrés Internacional de Docència Universitària i Innovació (CIDUI), 1(1), 1-17.

[4] Melchor, E., Mihi, A. & Barbosa, D. (2017). Aplicación del Aprendizaje Basado en Problemas en el entorno Moodle para valorar e interpretar datos numéricos. En Escobar, J. (Ed.), XXII Congreso Internacional sobre Educación Bimodal “Competencias Digitales, Innovación y Prospectiva” (pp. 190-206). Colombia: Corporación Centro Internacional de Marketing Territorial para la Educación y el Desarrollo.

[5] Vílchez, E. (2018). Matemática discreta a través del uso del paquete Vilcretas. Costa Rica: Revista digital Matemática, Educación e Internet. Recuperado de https://tecdigital.tec.ac.cr/servicios/revistamatematica/Libros/RevistaDigital_Vilcretas_V18_n2_2018/RevistaDigital_Vilchez_V18_n2_2018.pdf.

HTML generado a partir de XML-JATS4R por