
Yanina Bellini Saibene | On programming, teaching, and building tutorials with learnr | RStudio
Full title: On programming, teaching, and building interactive tutorials with learnr Teaching R is part of my activities as a community organizer, an RStudio Certified Instructor, a conference chair, and a researcher. Since 2019, I use the learnr package to generate interactive tutorials to teach R synchronously and asynchronously. The addition of the Tutorials panel in RStudio IDE and the need for virtual classes made the use of this package even more interesting. In this talk, I will tell you how to generate interactive tutorials, how to add pedagogical tools to them, what other packages you can use with {learnr} and show multilingual examples. About Yanina: Yanina Bellini Saibene is a researcher at INTA (National Institute of Agricultural Technology) dedicated to applying data science to the agricultural sector and a professor in several regional specializations about Digital Agriculture and Data Analysis. Yanina is formally trained as a Licenciate in Information System with a Master degree in Data Mining and Knowledge Management. She is an active member of the R Community as an R-Ladies organizer and part of the R-Ladies Global Team. She also is a co-founder and co-chair of LatinR and part of the organizing team of useR!2020 and user!2021 (co-chair). She is also co-founder of MetaDocencia, a open, free, volunteer-lead, not-for-profit educational organization and part of the teams that translate educational and technical material to Spanish
image: thumbnail.jpg
Transcript#
This transcript was generated automatically and may contain errors.
En el año 83, Argentina volvía a la democracia y yo, con seis años, usaba por primera vez una computadora. Fue amor a primera vista. Yo vivía en un pueblito rural de 2.000 habitantes del interior de mi país y mi escuela primaria había comprado una computadora. Una sola para toda la escuela y la única en todo el pueblo. Todos los sábados a la mañana, entre mis nueve y catorce años, mis padres me llevaban 80 kilómetros para que yo pudiera aprender programación. No teníamos un vehículo propio y no había transporte público, pero como mi papá es mecánico, algunos de sus clientes nos prestaban sus vehículos para que pudiéramos hacer ese viaje.
A los 15 años tuve que empezar a trabajar y mi primer trabajo fue enseñar computación. Desde ese día no paré de enseñar y sigo aprendiendo informática, lo que me trae hoy aquí a charlar con ustedes para contarles sobre dos de mis pasiones, enseñar y programar. Soy Janina Bellini Saibene, investigadora del Instituto Nacional de Tecnología Agropecuaria, soy organizadora y parte del Global Team de R-Ladies, soy cofundador y chair de LatinAR, soy parte de MyAR y cofundadora de MetaDocencia. Hoy vamos a aprender sobre el paquete learnr para hacer tutoriales interactivos y espero que podamos compartir el mismo entusiasmo que yo sentía en esos viajes los sábados a la mañana.
¿Qué es learnr?
La sabiduría popular del altiplano andino nos dice que si escucho algo me lo olvido, si veo algo me acuerdo, pero si hago algo lo aprendo. El paquete learnr facilita la conversión de un documento R Markdown, como este que vemos a la izquierda, en un tutorial interactivo, como este que vemos a la derecha. Podemos generar tutoriales de estadística, ciencia de datos, programación o de lo que ustedes se imaginen. Este tipo de tutoriales tienen contenido junto con componentes interactivos que nos permiten verificar y reforzar la comprensión.
si veo algo me acuerdo, pero si hago algo lo aprendo.
Como vemos en este tutorial de ejemplo, el contenido se puede presentar en forma de texto, imágenes y diagramas. También podemos agregar videos, gráficos y personalizar el estilo de nuestro tutorial. Contamos a la izquierda con una barra de contenido y de progreso que nos permite saltar entre los diferentes temas y saber hasta dónde avanzamos.
learnr nos permite aprender haciendo al transformar los chunks de códigos en ejercicios interactivos. Por ejemplo, este ejercicio ya nos presenta el código para realizar un gráfico. Si nosotros presionamos en el botón Run Code, el resultado se mostrará debajo. Si nosotros cambiamos algo en el código, como por ejemplo intercambiamos las variables de los ejes X e Y y volvemos a ejecutar, ese cambio se verá reflejado en el resultado. Y si cometemos un error, como por ejemplo nos olvidamos de indicar cuál es la variable del eje X y lo ejecutamos, se nos mostrará un mensaje indicándonos ese error.
Este tipo de ejercicio permite que los y las estudiantes pongan a prueba sus conocimientos y reflexionen sobre lo que aprendieron. También podemos generar preguntas de opción múltiple, indicando cuál o cuáles de las respuestas son correctas y seleccionando un mensaje diferente para darle a nuestros estudiantes según la opción que hayan elegido.
Finalmente, otra de las grandes ventajas que tiene este tipo de tutorial es que se pueden entregar como un paquete de R y entonces al instalarlo nos van a aparecer en la pestaña Tutorial dentro de RStudio o bien se pueden publicar como una página web. De esta manera compartir este material es muy sencillo.
Cómo generar un buen tutorial
La pregunta ahora es ¿cómo generar un buen tutorial? Les voy a contar mi propia receta secreta basada en las enseñanzas de este libro. Podemos pensar que este tipo de material educativo tiene dos componentes principales, el contexto y el contenido, y el contexto va a influenciar fuertemente el contenido final.
Para empezar a definir este contexto la primera pregunta que tengo que contestar es ¿para quién estoy generando este tutorial? ¿Son personas novatas, son personas principiantes? ¿Qué tienen que saber para poder aprovechar lo que quiero enseñarles? ¿Tienen necesidades específicas como por ejemplo de accesibilidad? El primer paso para iniciar el diseño es conocer a mi audiencia y las personas tipo son una muy buena herramienta para esta etapa en particular.
La segunda pregunta que tengo que contestar es ¿qué quiero que aprendan con este tutorial? Y aquí tengo que definir qué voy a enseñar. Tengo que escribir mis objetivos de aprendizaje. En esta etapa en particular a mí me resulta muy útil generar un mapa conceptual con todos los conceptos que quiero enseñar y cómo se relacionan entre sí.
Mi tercer paso es buscar y ver si ya existen lecciones sobre este tema. Analizar cómo enseñan otras personas, qué tipo de herramienta utilizan, cuál es la secuencia en que presentan los contenidos, puede ahorrarnos mucho tiempo y darnos muy buenas ideas. Un punto extra además si ese material está compartido de una forma que puede ser reusable.
Finalmente y relacionado con este punto anterior tengo que contestar la pregunta ¿qué voy a dejar que otras personas hagan con este material? Así que aquí tengo que seleccionar una licencia de uso que sea bien clara y explícita así tanto mis alumnos como mis colegas pueden saber cómo usar mi material y hacerlo de la forma correcta.
Sí, ya sé, hay muchísimo trabajo que hacer antes de escribir una sola línea de código. No, no te preocupes, tengo un paquete que te va a ayudar con estas tareas. Desde MetaDocencia generamos un paquete para learnr con plantillas en español donde además te sugerimos qué secciones y qué partes puede tener un tutorial. Vamos a ver cómo funciona.
Plantillas de MetaDocencia para learnr
Necesitamos tener instalados el paquete learnr que se encuentra en CRAN y la versión en desarrollo que se encuentra en GitHub del paquete learnr es que contienen las plantillas en español. Luego para generar un nuevo tutorial voy a seleccionar la opción File, New File, R Markdown y allí voy a elegir From Template. Del listado de plantillas que aparecen voy a elegir Tutorial Interactivo, Secciones.
Este nuevo documento que se crea ya en el encabezado nos indica que va a ser un tutorial de learnr y aparecen varias opciones con sus parámetros y qué significan cada uno de ellos. A su vez si vemos ya hay un contenido precargado con secciones y sugerencias. Vamos a ejecutar este documento para ver que además hemos personalizado cómo se presentan la fuente, los colores, los links con la identidad visual de MetaDocencia. Pueden encontrar cómo personalizar esto utilizando nuestro archivo CSS que se instala junto con el paquete.
Ahora bien, esta primera estructura que les proponemos que todos sus tutoriales tengan presenta como primera opción los objetivos de aprendizaje con la idea que una persona que se encuentra con nuestro tutorial en una primera vista pueda saber qué se supone que tiene que aprender con él mismo. Además cada vez que vean el recuadro con la manzanita estamos presentando ahí un ejemplo y también ponemos disponible links a lugares donde aprender más sobre esta herramienta o con ejemplos generados por otra persona.
El segundo contenido que le sugerimos que presente son las personas tipo, de nuevo para que quien va a tomar el tutorial sepa en quién se pensó cuando se generó ese contenido y estamos poniendo links a varias definiciones de personas tipo hechas por RStudio y por MetaDocencia.
Finalmente presentamos la licencia de uso y aquí explicamos la diferencia entre las licencias que son para el material educativo, la explicación, las slides, los vídeos y el código fuente y también presentamos un ejemplo. Finalmente como una parte opcional de estas herramientas presentamos un mapa conceptual con un ejemplo y links a dónde ir aprender más sobre mapas conceptuales y dónde se pueden ver y utilizar varios mapas conceptuales ya generados en relación a la ciencia de datos y la enseñanza de R.
En caso que ustedes vayan a agregar esta sección se recomienda ponerla después de los objetivos de aprendizaje. Finalmente las otras dos secciones que aparecen en esta plantilla de tutorial presentan un ejemplo de un ejercicio con y sin código y de una pregunta de opción múltiple.
Generando el contenido: ejercicios y preguntas
Definido el contexto tenemos que generar el contenido de la lección hay muchos procesos para generar lecciones de forma efectiva al menos vamos a tener que contestar dos preguntas cuál va a ser la secuencia de presentación de ese contenido y cómo vamos a ayudar a nuestros estudiantes a chequear la comprensión de cada tema. Las evaluaciones formativas presentadas en diferentes momentos a lo largo del tutorial son una excelente herramienta para lograr ese objetivo de reflexionar sobre lo aprendido chequear los conceptos aprendidos y permitir validar el avance y el progreso que vamos haciendo.
Los ejercicios interactivos y las preguntas de opción múltiple son las dos herramientas que nos presenta learnr para ayudarnos en esa tarea. Un chunk de código se convierte en un ejercicio cuando le doy un nombre y ponemos el parámetro exercise en true. A partir de ahí learnr genera una caja de código con un botón de run code y de start over que puede tener código o estar vacía. Si uno escribe el código vamos a tener funcionalidades muy útiles como por ejemplo sugerencias para completar lo que estamos escribiendo o nos va a marcar también posibles errores de sintaxis.
A estos ejercicios como bien les comentaba yo puedo presentarlos en blanco o puedo presentarlos con código y ese código puede estar completo, puede ser un código funcional o puede estar incompleto. Los que nos presenta un abanico de posibilidades para realizar ejercicios. Yo puedo presentar un código funcional y pedirle a los alumnos que lo cambien para que haga otra cosa. Puedo presentar un código que tiene un error y pedirles a los alumnos que lo corrijan o puedo presentar un código al cual le faltan partes como un ejercicio desvanecido y el cual los alumnos tienen que completar correctamente.
Estos ejercicios interactivos tienen también la posibilidad que uno le agregue consejos o pistas y soluciones. Para hacer eso generamos otro chunk de código que va a tener el mismo nombre pero al cual le agregamos la palabra guión del medio hint. Si queremos más de uno luego de la palabra hint vamos a poner guión del medio 1, guión del medio 2 y así según la cantidad de pistas que querramos darle a los estudiantes. Para agregar una solución vamos a escribir otro chunk de código de vuelta con el mismo nombre y en este caso será guión del medio solution. Todo lo que pongamos ahí adentro se va a presentar en un botón que se llama hint en esta caja de código y el cual vamos a poder ir navegando. El último que se presenta es la solución. Tenemos la posibilidad también de copiar al portapapel lo que dice en cada pista y pegarlo en el código para no tener que tipearlo desde cero.
El otro elemento que tenemos para poder realizar evaluaciones formativas son las preguntas de opción múltiple. Para esto learnr nos presenta la función quiz, question y answer. Ahí podemos determinar cuál es el texto de la pregunta, cuáles son las respuestas, con el parámetro correct igual a true vamos a indicar cuál es la correcta y en el parámetro message vamos a poder escribir el texto que queremos dar como feedback a nuestros estudiantes. También tenemos la posibilidad de indicar si vamos a permitir que el estudiante vuelve a intentar en caso que se haya equivocado con el parámetro allow retry igual a true y tenemos en el caso de las preguntas la posibilidad de cambiar el texto que tienen los botones de enviar respuesta e intentar de nuevo permitiéndonos ponerlo en nuestro lenguaje. Esperemos que pronto tengamos esa funcionalidad también en los ejercicios de código.
Las respuestas de opción múltiple son una muy buena opción para detectar errores comunes que los alumnos suelen cometer cuando aprenden un nuevo tema. Si nosotros las diseñamos adecuadamente e incluimos en las respuestas incorrectas este tipo de error común podremos detectarlo y el feedback que le entreguemos en los mensajes va a ser mucho más significativo para ayudarlos a aprender bien el tema y poder continuar en su camino de aprendizaje.
Otros paquetes y recursos
Estas son sólo dos de las herramientas y las hemos visto de forma rápida. Hay muchos otros paquetes que agregados a learnr nos van a permitir realizar y extender el tipo de feedback e interacción que podemos tener con nuestros estudiantes. Vamos a mencionar algunos, por ejemplo, GradeDisc para hacer chequeo de que el código escrito sea correcto. Tenemos Glosario que nos va a permitir tener definiciones de conceptos que se van a ver durante la lección. Parson para poder diseñar problemas de Parson. Diagramer para poder realizar y presentar diagramas y mapas mentales, entre muchos otros más.
Hemos repasado el paquete learnr para generar tutoriales interactivos y qué elementos no deben faltar en el diseño de un tutorial. Si quieren seguir explorando este tema les dejo el link de la página web de esta charla donde hay cursos, blog posts, tutoriales y paquetes todos en español dedicados a este tema. La web de MetaDocencia donde enseñamos cómo enseñar de forma gratuita y en español y el link a la página web oficial del paquete que está en inglés. Ahora ya tienen un montón de herramientas para generar sus propios materiales y poder compartirlos con toda la comunidad R.
Como último quería decirles que aprender es adquirir poder y es un poder muy especial porque no se gasta con el uso y una vez adquirido nadie puede quitármelo. Por eso cuando enseñamos, cuando compartimos nuestro material, lo hacemos reusable, lo generamos en nuestro idioma estamos entregando poder. Los invito a que compartan su conocimiento, a que compartan su poder. Quién sabe, tal vez una niña o un niño en un pequeño pueblo rural con una computadora en su escuela encuentre uno de nuestros tutoriales y le abramos la puerta a un conocimiento nuevo, a un conocimiento que cambie su vida de forma positiva y por qué no también la nuestra. Muchas gracias por escucharme.
aprender es adquirir poder y es un poder muy especial porque no se gasta con el uso y una vez adquirido nadie puede quitármelo.
