2009-04-30 9 views
7

J'écris un logiciel d'éducation mathématique pour enfants pour un cours. Je vais essayer de présenter des problèmes aux élèves de différents niveaux de compétence avec des problèmes de mathématiques aléatoires de différents types de manières amusantes.Devrais-je utiliser un analyseur d'expressions dans mon jeu de mathématiques?

L'une des frustrations liées à l'utilisation d'un logiciel mathématique basé sur ordinateur est sa rigidité. Si quelqu'un a suivi un cours de mathématiques en ligne, vous saurez tout sur la frustration de répondre à un quiz en ligne et d'avoir votre bonne réponse car votre problème n'est pas exactement formaté dans leur forme ou problème d'espacement étrange. Donc, à l'origine, je pensais: «Je sais! Je vais utiliser un analyseur d'expression sur la boîte de réponse, donc je serai en mesure d'évaluer tout ce qu'ils entrent et même si ce n'est pas sous la même forme, je vais être capable de vérifier si c'est la même réponse. " Donc, je lance mon EDI et commencer à mettre en œuvre le Shunting Yard Algorithm.

Cela résoudrait le problème de ne pas prendre des fractions dans la plus petite forme et d'autres questions.

Cependant, il m'a alors frappé qu'un étudiant difficile serait simplement capable d'entrer la plupart des problèmes dans la boîte de réponse et mon analyseur d'expression l'analyserait consciencieusement et l'évaluerait à la bonne réponse! Donc, ne devrais-je pas utiliser un analyseur d'expression dans cette instance? Dois-je vraiment générer une seule forme de réponse et faire une comparaison de chaînes de caractères?

+2

Quelle bonne question! Faites-nous savoir ce que vous finissez par faire - Je suis très curieux. –

+0

Pouvez-vous donner un exemple d'une question qui serait aussi une réponse? – Greg

+2

@Greg: Il parle de quelque chose comme: "Quelle est la valeur de 500/2?" La "bonne" réponse est 250, mais un étudiant entreprenant peut simplement entrer "500/2" dans un copier-coller, et l'évaluateur d'expression l'acceptera. –

Répondre

5

Une solution possible consiste à noter le nombre d'étapes nécessaires à l'évaluateur d'expression pour évaluer l'expression originale du problème et la comparer à la réponse optimale. S'il y a trop de différence, le problème n'a pas été suffisamment réduit et vous pouvez suggérer à l'étudiant de continuer. Ne soyez pas surpris si les étudiants trouvent de meilleures réponses que votre propre définition de «optimal», cependant! J'étais un TA/classeur pour plusieurs classes, et les étudiants les plus brillants avaient régulièrement des réponses sur leurs ensembles de problèmes qui étaient supérieurs à ceux fournis par le professeur.

2

Pour les problèmes simples où vous recherchez une réponse exacte, il est raisonnable de supprimer les espaces et de comparer les chaînes. Pour des problèmes plus avancés, vous pouvez faire l'Algorithme Shunting Yard (ou similaire) mais peut-être le paramétrer pour que vous puissiez activer/désactiver les réductions pour vous prémunir contre l'élève difficile. Vous remarquerez que les réponses "simples" peuvent toujours utiliser l'analyseur, mais vous désactiver toutes les réductions. Par exemple, sur une question de division, vous devez désactiver la réduction "/".

+0

Il peut être difficile de déterminer quand désactiver la réduction. Par exemple, si la question est "1/2 + 1/4 =", l'utilisateur peut entrer "3/4" – Joe

1

Ceci est une excellente question. Si vous écrivez un système d'expression et un moteur d'évaluation/transformation/équivalence (il n'y en a pas un disponible quelque part? Je suis presque sûr à 100% qu'il y en a un open source quelque part), alors c'est plus une éducation/algèbre: la réponse de l'étudiant est algébriquement plus proche de l'expression originale ou de l'expression attendue. Je ne suis pas sûr de savoir comment répondre à cette question, mais juste une idée (pas nécessairement pratique): peut-être que votre moteur d'évaluation peut compter les étapes de transformation vers l'équivalence. Si la réponse prend moins de mesures que prévu à l'original, cela pourrait être acceptable. Si c'est trop proche de l'original, ce n'est pas le cas.

0

Vous pouvez utiliser un analyseur d'expression, mais d'appliquer des restrictions sur la complexité des expressions autorisées dans la réponse. Par exemple, si l'objectif est de réduire (4/5) * (1/2) et que vous souhaitez autoriser (2/5) ou (4/10), vous pouvez restreindre l'ensemble de réponses aux expressions dont les arbres prennent la forme (x/y) et qui évaluent aussi au bon nombre. Peut-être que vous autorisez également "0,4", c'est-à-dire des expressions de la forme (x) qui évaluent au bon nombre.

C'est exactement ce que vous (implicitement) être faites si vous GradeD manuellement le problème - vous être à la recherche d'une réponse est correcte, mais qui tombe aussi dans une classe acceptable.

0

La manière habituelle de le faire dans le logiciel d'évaluation des mathématiques est de permettre au poseur de question de spécifier des expressions/chaînes qui ne sont pas autorisés dans une réponse correcte.

Si vous êtes intéressé par un logiciel existant, il existe la version Open Source http://www.stack.bham.ac.uk/ (ou diverses options commerciales telles que MapleTA). Je pense que la plupart des problèmes que vous rencontrez ont également été rencontrés par Stack, donc même si vous ne voulez pas l'utiliser, il peut être instructif de voir comment il aborde les choses.