Crédito Parcial – Do Conceito à Implementação

31 de agosto de 2015 | Por

Saudações! Meu nome é Colin Fredericks. Trabalho na HarvardX como líder de projeto sênior, o que significa que a maior parte do meu trabalho é ajudar os professores de Harvard a fazer cursos de qualidade. No entanto, ao longo dos últimos meses tenho trabalhado, principalmente no meu tempo livre, acrescentando crédito parcial para a plataforma Open edX.

Gosto muito da plataforma Open edX, mas sempre me surpreendi que não houvesse como conceder crédito parcial. Tendo ensinado na faculdade e no ensino médio, parecia um descuido tão óbvio que fiquei esperando vê-lo na lista de “próximos recursos”. Depois de três anos de espera, decidi finalmente resolver o assunto com minhas próprias mãos.

Agora, eu não sou um programador profissional. (Você pode ouvir uma música sinistra tocando ao fundo. Chamamos isso de “prenúncio”.) Aprendi Applesoft BASIC na 4ª série, programação TI-82 no ensino médio, C++ na faculdade, Python enquanto trabalhava no MIT e Javascript enquanto eu desempregado, mas eu nunca havia contribuído para um esforço de código aberto antes. Eu nunca tinha escrito código de teste. Caramba, eu mal sabia que existia o código de teste. (Uma sombra cai sobre a câmera. Mais prenúncio.) Decidi que ia adicionar um tipo de crédito parcial a apenas um tipo de problema, apenas manter as coisas simples para que eu pudesse lidar com isso em uma ou duas semanas. (Isso também é um prenúncio.)

Isso foi no início de abril. Alcancei meu objetivo original em dois dias e, em seguida, o projeto rapidamente atingiu seu estado atual. Eu estava convencido a expandir de um único tipo de problema para tantos quanto eu pudesse lidar razoavelmente, e escrever um proposta completa que acabou tendo 16 páginas. 

Ao implementar esse recurso, descobri sobre esse material de “código de teste” e “verificadores de qualidade de código” e outras coisas que eles (sabiamente) não contam às pessoas em Ciência da Computação II. eu comecei a partir do Guia do desenvolvedor edX, como melhor eu entendi, com sua fluxograma bonito. eu abri um ticket de proposta no JIRA, fiz um repositório do github para meu próprio código, abriu meu primeiro solicitação de recebimento, fiz um pouco mais de desenvolvimento, obtive muitos feedbacks bons (a maioria dos quais eu incorporei), aprendi como fazer o rebase corretamente, abri um novo e melhor pull request, e fiz um pouco mais de codificação. Finalmente, após cerca de 15 semanas de desenvolvimento, tenho orgulho de dizer que o recurso foi incorporado ao branch master da plataforma edx!

Crédito parcial: detalhes do recurso

Aqui está o resumo rápido de como esse recurso se parece atualmente. Observe que, atualmente, os autores só podem habilitar crédito parcial editando diretamente a definição do OLX de um problema.

Múltipla escolha e Suspenso problemas têm um tipo de crédito parcial disponível: classificação de estilo “Pontos”. O autor do curso lista certas escolhas que valem crédito parcial e, opcionalmente, define quanto crédito elas valem (o padrão é 50%). Como efeito colateral, os problemas do menu suspenso foram atualizados para que mais de uma opção possa ser marcada como correta.

Caixa de seleção Os problemas têm dois tipos (mutuamente exclusivos) de crédito parcial disponíveis: estilo “metades”, em que uma resposta perfeita dá 100% de crédito e cada erro corta o crédito pela metade, e estilo “Toda decisão conta”, em que cada caixa de seleção efetivamente gira em sua própria pergunta de verdadeiro/falso separada.

Aqui está um exemplo de como um autor de curso habilitaria o crédito parcial no estilo “Toda decisão conta” (ou “EDC”) em um problema do Studio:

A definição do OLX de um problema de crédito parcial de resposta de caixa de seleção EDC. Consulte a documentação para obter mais detalhes.

É assim que o problema aparecerá para os alunos:

Problema da caixa de seleção EDC com 3 respostas verdadeiras e 2 respostas falsas. Marcar uma resposta verdadeira e uma resposta falsa resulta em uma pontuação total de 0.4 em 1 ponto.

Numérico Os problemas também têm dois tipos disponíveis: estilo “Lista”, onde o autor lista as respostas que contam para crédito parcial (por exemplo, em um problema de matemática, as respostas com crédito parcial podem ser aquelas que resultam da falta de um sinal negativo ou da inversão de uma fração) e Estilo “Close”, que expande a tolerância dada para permitir uma abordagem “ferraduras e granadas de mão”. Como os dois estilos são compatíveis, você pode usar os dois no mesmo problema, se quiser.

Aqui está como um autor de curso pode definir um problema numérico com crédito parcial no estilo “lista”:

Veja como o problema aparecerá para os alunos:

Um problema de crédito parcial de resposta numérica. A resposta correta é 93*10^6 milhas; aceito para crédito parcial é o valor em quilômetros. Isso produz um valor total de pontos de 0.5 de 1 ponto.

Finalmente, Python personalizado os problemas agora podem retornar não apenas um valor de ponto, mas um indicador se o problema é considerado totalmente ou apenas parcialmente correto.

Para obter mais detalhes sobre como adicionar crédito parcial aos seus problemas, consulte a documentação de crédito parcial.

Estou muito satisfeito com a forma como tudo isso saiu. O projeto levou mais tempo do que eu pensava, mas também é muito mais poderoso. Ele fornece uma estrutura que torna mais fácil adicionar crédito parcial a outros tipos de problemas no futuro, algo que eu realmente espero que as pessoas aproveitem. 

O que vem na v2? 

Bem, primeiro, eu tenho uma v1.5 planejada que limpa alguns dos circundante código, para que futuros contribuidores do módulo Capa não tenham tantos problemas quanto eu. Depois disso – mais tipos de problemas, é claro! Também estou procurando disponibilizar esse recurso para problemas comuns sem usar XML – ou seja, dar aos instrutores a capacidade de usar esse recurso no editor de markdown do Studio. Há alguma generalização de código adicional que pode ser feita. Em algum lugar no futuro, há também a possibilidade de adicionar avaliação baseada em tentativas... mas vamos dar um passo de cada vez.

Eu não posso dizer o suficiente sobre como todas as pessoas da edX foram maravilhosas e prestativas durante todo esse processo. Cheguei com um punhado de conhecimento de Python e Javascript e saí com habilidades muito mais sólidas e uma compreensão de como é contribuir para um projeto de código aberto. Sarina Canelake, Leslie Gerhat, Piotr Mitros, Mark Sadecki, Marco Morales, Ben Patterson, Diana Huang, Mark Hoeber e outros tiraram um tempo de seus dias atarefados para me ajudar a entender melhor e aprimorar meu código. Mal posso esperar para vê-lo usado na natureza.

Ainda não me considero um programador profissional, mas graças a esse trabalho estou me aproximando.

Colin Fredericks é um líder de projeto sênior em HarvardX. No resto do seu tempo livre gosta de cozinhar, escrevendo jogos de RPG, e ser amigo de todos os animais.

 

Carregando

Tempo para mais? Confira os artigos abaixo.

Solucionando problemas em conjunto: Desenvolvimento de plataformas impulsionado pela comunidade
Capacite e Expanda o Futuro na Conferência Open edX
Workshops para desenvolvedores da Open edX Conference
Reivindicando nosso futuro digital: por que me juntei ao grupo Open Renaissance.
Participe da Conferência Open edX 2026!

A Conferência Open edX 2026 apresentará casos de uso inovadores para um dos melhores sistemas de gerenciamento de aprendizagem on-line de código aberto do mundo, a plataforma Open edX, e descobrirá os mais recentes avanços em design instrucional, constelação de cursos e métodos para operar e estender a plataforma Open edX , incluindo tecnologias inovadoras, como a IA generativa.