Avec la prochaine version d'Open edX, Maple, l'équipe edX est heureuse de partager une technologie qu'elle utilise en interne depuis un certain temps. Cet outil s'appelle CourseGraph et est désormais disponible en tant que partie non prise en charge de devstack et Maple. CourseGraph vous permet de répondre aux questions que vous pourriez vous poser sur le contenu de tous les cours de votre instance dans leur ensemble, tels que le nombre et l'emplacement de XBlocks spécifiques, les questions relatives à la structure de vos cours, les questions sur les examens, et plus encore!

Chez edX, l'utilisation de CourseGraph est limitée aux équipes de support client et d'ingénierie. Ces équipes trouvent utile de pouvoir répondre à des questions auxquelles répondent des statistiques agrégées ; leur équipe d'assistance aux partenaires est souvent en mesure d'aider à déboguer les problèmes des instructeurs dans Studio avec une requête XBlock. L'équipe d'ingénierie obtient des informations sur toutes sortes de problèmes potentiels, comme déterminer où se trouvent les « blocs orphelins » (blocs qui ne sont pas accessibles à partir de la racine du cours via les enfants).

Qu'est-ce que CourseGraph ?

CourseGraph est une représentation graphique du contenu du cours de votre instance dans néo4j, une base de données de graphes populaire ; CourseGraph est pas une API d'exécution. L'avantage de représenter les données d'un cours sous forme de graphique est qu'il vous permet d'écrire des requêtes générales sur le contenu et la structure du cours. L'utilisation de CourseGraph suppose que vous avez une connaissance de base du modèle de données de cours, que les cours sont des graphiques, généralement des arbres, où chaque nœud est un XBlock.

Et alors?

Avez-vous déjà eu des questions comme :

  • Les équipes de cours (et les autres !) pourraient se demander…
    • Où sont tous les composants vidéo de mon cours ? Quels sont tous leurs titres et identifiants ?
    • Quelles unités ORA (évaluation de la réponse ouverte) ont des dates mal configurées ? (des dates mal configurées peuvent empêcher les apprenants d'accéder au devoir)
    • Quels sont les types de blocs (tels que problème ou ORA) que j'utilise dans mon cours, et à quelle fréquence est-ce que j'utilise ces blocs ?
  • Les développeurs/opérateurs de site/équipes de support peuvent se demander…
    • Combien de cours en cours utilisent un type de bloc spécifique ?
    • Où se trouvent toutes les vidéos d'une organisation et à partir de quelle source vidéo/URL sont-elles diffusées ?
    • Quels cours utilisent des composants LTI et lesquels sont notés ?

À l'heure actuelle, il est vraiment difficile de répondre à ces questions, étant donné la façon dont les données de cours sont stockées dans Mongo. Split Mongo, qui est le backend de presque tous vos cours de course, est optimisé pour charger un cours individuel à la fois, et non pour des requêtes larges sur plusieurs structures de cours. Reconstruire la structure de type graphique de chaque cours nécessiterait beaucoup de traitement en dehors d'une pure requête Mongo. L'autre avantage de l'utilisation de neo4j est qu'il est livré avec un visualiseur de résultats de requête intégré, ce qui vous permet de voir les structures graphiques de parties de cours. 

La requête suivante compte le nombre de problèmes jsinput sur votre instance Open edX :

MATCH 

(cours)-[:PARENT_OF*]->(p:problème) 

OÙ 

p.données 

CONTIENT 

'jsinput'

RETOUR

    compter(p) comme nombre

et renvoie le résultat suivant (31026) :

Vous pouvez également voir les données visuellement, lorsque le résultat de la requête sont des nœuds. Cette requête est identique à la précédente sauf qu'on RETURN* et qu'on limite le résultat à 50 items. Les nœuds et leurs relations PARENT OF sont affichés dans le graphique. Le survol d'un nœud affiche, dans la barre inférieure, les attributs définis sur ce nœud.

Quelle est la structure des données ?

Neo4j est une base de données de graphes, et donc, comme un graphe, a deux types de données fondamentaux : les nœuds et les arêtes. Dans le cas de CourseGraph, les nœuds sont des XBlocks : blocs de cours, problèmes, secteurs verticaux, HTML, etc. Les attributs de ce nœud correspondent aux champs du XBlock. De plus, chaque nœud a également des attributs course_key, org, course, run, edited_on et location.

Les arêtes représentent la façon dont les nœuds sont liés. Il existe deux types de relations entre les blocs : "PARENT_OF", qui lie un bloc à son enfant, et "PRECEDES", qui lie un bloc à son frère. Ainsi, une verticale peut être un PARENT_OF d'un bloc vidéo ; dans une séquence de deux verticales, la première verticale « PRÉCÈDE » la seconde.

Comment puis-je écrire des requêtes à son sujet ?

Neo4j utilise son propre langage de requête, zéro. C'est similaire à SQL, donc cela ne prendra pas trop de temps pour s'y habituer. Vérifier cette carte de référence pratique pour des conseils utiles ! Chez edX, nous avons continuellement pris note des requêtes utiles ; voyez ce que nous avons trouvé - et ajoutez le vôtre ! - sur le Page de collecte des requêtes CourseGraph.

Voici une requête plus compliquée, qui parcourt un cours sur votre instance (ici, le cours "DemoX" d'edx.org), et génère tous les XBlocks visibles par l'apprenant de type "problème" dans le cours, annotés avec son nom d'affichage, le nom du secteur vertical qui le contient et date de sa dernière modification :

MATCH

    (c:cours) -[:PARENT_OF*]-> (v:vertical) -[:PARENT_OF*]-> (n:item)

    c.course_key = 'course-v1:edX+DemoX.1+2T2019'

    ET

    n.block_type = 'problème'

    ET

    n.visible_to_staff_only = faux

RETOUR  

    n.block_type,

    n.display_name,

    v.display_name as unit_location,

    n.edited_on

COMMANDÉ PAR

  n.edited_on ;

Voici les 16 premiers résultats, sur 17 comme mentionné dans la dernière ligne :

Comment déployer et utiliser CourseGraph ?

La sortie de Nutmeg (prévue pour juin 2022) comprendra un Plugin CourseGraph pour Tuteur! Consultez le fichier README du plug-in pour savoir comment les opérateurs Nutmeg pourront facilement installer, configurer et exécuter CourseGraph dans le cadre de leur déploiement Open edX géré par Tutor. (Pour les instances Open edX exécutant une version antérieure à Nutmeg, il n'existe aucune méthode officiellement recommandée pour déployer CourseGraph.)

À partir de Nutmeg, le plugin est en statut "Bêta", et ses responsables recherchent activement des utilisateurs qui souhaitent l'essayer dans un environnement de production et fournir des commentaires. Pour poser des questions, signaler des bogues ou partager vos expériences avec CourseGraph, veuillez ouvrir un problème GitHub sur le référentiel tutor-contrib-coursegraph.

Nous espérons que cet outil vous sera utile !

 1,368 vues totales