Con el próximo lanzamiento de Open edX, Maple, el equipo de edX se complace en compartir una pieza de tecnología que han estado usando internamente durante un tiempo. Esta herramienta se llama CourseGraph y ahora está disponible como una parte no compatible de devstack y Maple. CourseGraph le permite responder preguntas que pueda tener sobre el contenido de todos los cursos de su instancia en conjunto, como recuentos y ubicaciones de XBlocks específicos, preguntas relacionadas con la estructura de sus cursos, preguntas sobre exámenes, Y mucho más.!
En edX, el uso de CourseGraph está restringido a los equipos de atención al cliente e ingeniería. A estos equipos les resulta útil poder responder preguntas respondidas por estadísticas agregadas; su equipo de soporte para socios en particular a menudo puede ayudar a depurar los problemas del instructor en Studio con una consulta XBlock. El equipo de ingeniería obtiene información sobre todo tipo de problemas potenciales, como averiguar dónde están los "bloques huérfanos" (bloques a los que no se puede acceder desde la raíz del curso a través de los niños).
¿Qué es CourseGraph?
CourseGraph es una representación gráfica del contenido del curso de su instancia en neo4j, una popular base de datos de gráficos; CourseGraph es no una API de tiempo de ejecución. La ventaja de representar los datos del curso en forma de gráfico es que le permite escribir consultas amplias sobre el contenido y la estructura del curso. El uso de CourseGraph supone que tiene una familiaridad básica con el modelo de datos del curso, que los cursos son gráficos, generalmente árboles, donde cada nodo es un XBlock.
Entonces, ¿qué?
¿Alguna vez has tenido preguntas como:
- Los equipos del curso (¡y otros!) podrían preguntarse...
- ¿Dónde están todos los componentes de video en mi curso? ¿Cuáles son todos sus títulos e identificaciones?
- ¿Qué unidades ORA (evaluación de respuesta abierta) tienen fechas mal configuradas? (las fechas mal configuradas pueden impedir que los alumnos accedan a la tarea)
- ¿Cuáles son los tipos de bloques (como problema u ORA) que uso en mi curso y con qué frecuencia uso esos bloques?
- Los desarrolladores/operadores de sitios/equipos de soporte podrían preguntarse...
- ¿Cuántos cursos actualmente en ejecución utilizan un tipo específico de bloque?
- ¿Dónde están todos los videos de una organización y desde qué fuente de video/URL se muestran?
- ¿Qué cursos utilizan componentes LTI y cuáles se califican?
En este momento, es realmente difícil responder a estas preguntas, dada la forma en que se almacenan los datos del curso en Mongo. Split Mongo, que es el backend de casi todos sus cursos en ejecución, está optimizado para cargar un curso individual a la vez, no para consultas amplias en múltiples estructuras de cursos. La reconstrucción de la estructura similar a un gráfico de cada curso requeriría una gran cantidad de procesamiento fuera de una consulta Mongo pura. La otra ventaja de usar neo4j es que viene con un visualizador de resultados de consultas incorporado, para que pueda ver las estructuras gráficas de partes de los cursos.
La siguiente consulta cuenta la cantidad de problemas de jsinput en su instancia de Open edX:
PARTIDO
(curso)-[:PARENT_OF*]->(p:problema)
¿Dónde?
p.datos
CONTIENE
'jsinput'
DEVOLUCION
contar (p) como número
y devuelve el siguiente resultado (31026):
También puede ver los datos visualmente, cuando el resultado de la consulta son nodos. Esta consulta es idéntica a la anterior excepto que devolvemos * y limitamos el resultado a 50 elementos. Los nodos y sus relaciones PADRE DE se muestran en el gráfico. Al pasar el cursor sobre un nodo, en la barra inferior, se muestran los atributos establecidos en ese nodo.
¿Cuál es la estructura de datos?
Neo4j es una base de datos de gráficos y, como un gráfico, tiene dos tipos de datos fundamentales: nodos y bordes. En el caso de CourseGraph, los nodos son XBlocks: bloques de curso, problemas, verticales, html, etc. Los atributos de ese nodo corresponden a los campos del XBlock. Además, cada nodo también tiene atributos de clave de curso, organización, curso, ejecución, fecha de edición y ubicación.
Los bordes representan cómo se relacionan los nodos. Hay dos tipos de relaciones entre bloques: “PARENT_OF”, que vincula un bloque con su hijo, y “PRECEDES”, que vincula un bloque con su hermano. Entonces, una vertical puede ser un PARENT_OF de un bloque de video; en una secuencia de dos verticales, la primera vertical “PRECEDE” a la segunda.
¿Cómo escribo consultas en su contra?
Neo4j utiliza su propio lenguaje de consulta, cifrar. Es similar a SQL, por lo que no tomará mucho tiempo dominarlo. Verificar esta práctica tarjeta de referencia para consejos útiles! En edX, hemos tomado nota continuamente de consultas útiles; vea lo que se nos ocurrió, ¡y agregue el suyo propio! - sobre el Página de recopilación de consultas de CourseGraph.
Aquí hay una consulta más complicada, que pasa por un curso en su instancia (aquí, el curso "DemoX" de edx.org) y genera todos los XBlocks visibles para el alumno de tipo "problema" en el curso, anotados con su nombre para mostrar, el nombre de la vertical que lo contiene y cuándo fue editado por última vez:
PARTIDO
(c:curso) -[:PADRE_DE*]-> (v:vertical) -[:PADRE_DE*]-> (n:elemento)
¿Dónde?
c.course_key = 'curso-v1:edX+DemoX.1+2T2019'
E
n.block_type = 'problema'
E
n.visible_to_staff_only = falso
DEVOLUCION
n.tipo_bloque,
n.nombre_display,
v.display_name como unidad_ubicación,
n.editado_en
ORDEN POR
n.editado_en;
Aquí están los primeros 16 resultados, de 17 como se menciona en la línea final:
¿Cómo implemento y opero CourseGraph?
El lanzamiento de Nutmeg (previsto para junio de 2022) incluirá un Complemento CourseGraph para Tutor! Consulte el LÉAME del complemento para saber cómo los operadores de Nutmeg podrán instalar, configurar y ejecutar CourseGraph fácilmente como parte de su implementación Open edX administrada por Tutor. (Para las instancias de Open edX que ejecutan una versión anterior a Nutmeg, no existe un método recomendado oficialmente para implementar CourseGraph).
A partir de Nutmeg, el complemento se encuentra en estado "Beta", y sus mantenedores están buscando activamente usuarios que estén dispuestos a probarlo en un entorno de producción y brindar comentarios. Para hacer preguntas, informar errores o compartir sus experiencias con CourseGraph, abra un problema de GitHub en el repositorio tutor-contrib-coursegraph.
¡Esperamos que esta herramienta te sea útil!