Com o próximo lançamento do Open edX, Maple, a equipe do edX tem o prazer de compartilhar uma tecnologia que eles usam internamente há algum tempo. Essa ferramenta é chamada CourseGraph e agora está disponível como uma parte não suportada do devstack e do Maple. CourseGraph permite que você responda a perguntas que você possa ter sobre o conteúdo de todos os cursos de sua instância em conjunto, como contagens e locais de XBlocks específicos, perguntas relacionadas à estrutura de seus cursos, perguntas sobre exames, e mais!

Na edX, o uso do CourseGraph é restrito às equipes de Suporte ao Cliente e Engenharia. Essas equipes acham útil poder responder a perguntas respondidas por estatísticas agregadas; sua equipe de suporte ao parceiro geralmente é capaz de ajudar a depurar problemas do instrutor no Studio com uma consulta XBlock. A equipe de engenharia obtém insights sobre todos os tipos de problemas em potencial – como descobrir onde estão os “blocos órfãos” (blocos que não podem ser acessados ​​a partir da raiz do curso via filhos).

O que é CourseGraph?

CourseGraph é uma representação gráfica do conteúdo do curso de sua instância em neo4j, um banco de dados gráfico popular; CourseGraph é não uma API de tempo de execução. A vantagem de representar os dados do curso em forma de gráfico é que permite escrever consultas amplas sobre o conteúdo e a estrutura do curso. O uso do CourseGraph pressupõe que você tenha uma familiaridade básica com o modelo de dados do curso, que os cursos são gráficos, geralmente árvores, onde cada nó é um XBlock.

Assim que?

Você já teve dúvidas como:

  • As equipes do curso (e outros!)
    • Onde estão todos os componentes de vídeo do meu curso? Quais são todos os seus títulos e IDs?
    • Quais unidades ORA (avaliação de resposta aberta) têm datas mal configuradas? (datas mal configuradas podem impedir que os alunos acessem a tarefa)
    • Quais são os tipos de blocos (como problema ou ORA) que uso no meu curso e com que frequência uso esses blocos?
  • Desenvolvedores/operadores de sites/equipes de suporte podem se perguntar…
    • Quantos cursos atualmente em execução estão usando um tipo específico de bloco?
    • Onde estão todos os vídeos de uma organização e de qual fonte/URL de vídeo eles estão sendo veiculados?
    • Quais cursos usam componentes LTI e quais são avaliados?

No momento, é muito difícil responder a essas perguntas, dada a forma como os dados do curso são armazenados no Mongo. O Split Mongo, que é o back-end de quase todos os seus cursos de corrida, é otimizado para carregar um curso individual por vez, não para consultas amplas em várias estruturas de curso. Reconstruir a estrutura semelhante a um gráfico de cada curso exigiria muito processamento fora de uma consulta Mongo pura. A outra vantagem de usar o neo4j é que ele vem com um visualizador de resultados de consulta embutido, para que você possa ver as estruturas gráficas de partes dos cursos. 

A consulta a seguir conta o número de problemas de jsinput em sua instância do Open edX:

JOGO 

(curso)-[:PARENT_OF*]->(p:problema) 

ONDE 

p.data 

CONTÉM 

'jsinput'

RETORNO

    contar(p) como número

e retorna o seguinte resultado (31026):

Você também pode ver os dados visualmente, quando o resultado da consulta são nós. Esta consulta é idêntica à anterior, exceto que RETURN * e limitamos o resultado a 50 itens. Os nós e seus relacionamentos PARENT OF são mostrados no gráfico. Passar o mouse sobre um nó exibe, na barra inferior, os atributos definidos nesse nó.

Qual é a estrutura de dados?

O Neo4j é um banco de dados de grafos e, portanto, como um grafo, possui dois tipos de dados fundamentais: nós e arestas. No caso do CourseGraph, os nós são XBlocks: blocos de curso, problemas, verticais, htmls, etc. Os atributos desse nó correspondem aos campos do XBlock. Além disso, cada nó tem os atributos course_key, org, course, run, edited_on e location definidos neles também.

As arestas representam como os nós estão relacionados. Existem dois tipos de relacionamento entre blocos: “PARENT_OF”, que vincula um bloco ao seu filho, e “PRECEDES”, que vincula um bloco ao seu irmão. Portanto, uma vertical pode ser um PARENT_OF de um bloco de vídeo; em uma seqüência de duas verticais, a primeira vertical “PRECEDE” a segunda.

Como faço para escrever consultas contra ele?

O Neo4j usa sua própria linguagem de consulta, cifra. É semelhante ao SQL, então não demorará muito para pegar o jeito. Verificação de saída este cartão de referência útil para dicas úteis! Na edX, anotamos continuamente as consultas úteis; veja o que criamos – e adicione o seu! - no Página de coleta de consultas do CourseGraph.

Aqui está uma consulta mais complicada, que passa por um curso em sua instância (aqui, o curso edx.org “DemoX”) e gera todos os XBlocks visíveis ao aluno do tipo “problema” no curso, anotados com seu nome de exibição, o nome do vertical que o contém e quando foi editado pela última vez:

JOGO

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

ONDE

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

     E

    n.block_type = 'problema'

     E

    n.visible_to_staff_only = false

RETORNO  

    n.block_type,

    n.nome_exibição,

    v.display_name como unit_location,

    n.editado_on

ORDENAR POR

  n.editado_on;

Aqui estão os primeiros 16 resultados, dos 17 mencionados na linha final:

Como faço para implantar e operar o CourseGraph?

O lançamento da Nutmeg (previsto para junho de 2022) incluirá um Plugin CourseGraph para Tutor! Confira o README do plug-in para saber como os operadores do Nutmeg poderão instalar, configurar e executar o CourseGraph facilmente como parte de sua implantação Open edX gerenciada pelo Tutor. (Para instâncias do Open edX executando uma versão anterior ao Nutmeg, não há um método oficialmente recomendado para implantar o CourseGraph.)

A partir do Nutmeg, o plugin está no status “Beta”, e seus mantenedores estão procurando ativamente por usuários que estejam dispostos a experimentá-lo em uma configuração de produção e fornecer feedback. Para fazer perguntas, relatar bugs ou compartilhar suas experiências com o CourseGraph, abra um problema do GitHub no repositório tutor-contrib-coursegraph.

Esperamos que esta ferramenta seja útil para você!

 594 visualizações totais