2009-04-30 12 views
7

Estoy escribiendo software de educación matemática para niños para una clase.¿Debo usar un analizador de expresiones en mi juego de matemáticas?

Voy a tratar de presentar problemas a los estudiantes de diferentes niveles de habilidad con problemas matemáticos generados aleatoriamente de diferentes tipos en formas divertidas.

Una de las frustraciones del uso de software matemático basado en computadora es su rigidez. Si alguien ha tomado una clase de matemática en línea, sabrá todo acerca de la frustración de tomar una prueba en línea y que se rechace su respuesta correcta porque su problema no está exactamente formateado en su forma o por algún problema de espaciado extraño.

Así que, originalmente pensé, "Lo sé! Voy a usar un analizador de expresiones en el cuadro de respuestas para poder evaluar todo lo que ingresen e incluso si no está en la misma forma voy a ser capaz de verificar si es la misma respuesta ". Así que enciendo mi IDE y empiezo a implementar el Shunting Yard Algorithm.

Esto resolvería el problema de no tomar fracciones en la forma más pequeña y otros problemas.

Sin embargo, entonces me di cuenta de que un estudiante difícil simplemente sería capaz de introducir la mayoría de los problemas en el cuadro de respuesta y mi analizador de expresiones diligentemente analizaría y evaluaría la respuesta correcta.

Entonces, ¿no debería estar usando un analizador de expresiones en esta instancia? ¿Realmente tengo que generar una forma única de la respuesta y hacer una comparación de cadenas?

+2

¡Qué gran pregunta! Háganos saber lo que termina haciendo - Tengo mucha curiosidad. –

+0

¿Puedes dar un ejemplo de una pregunta que también sería una respuesta? – Greg

+2

@Greg: Él está hablando de algo así como: "¿Cuál es el valor de 500/2?" La respuesta "correcta" es 250, pero un estudiante emprendedor puede simplemente ingresar "500/2" en un copiar y pegar, y el evaluador de expresiones lo aceptará. –

Respuesta

5

Una posible solución es anotar cuántos pasos realiza su evaluador de expresiones para evaluar la expresión original del problema y comparar esto con la respuesta óptima. Si hay demasiada diferencia, entonces el problema no se ha reducido lo suficiente y puede sugerir que el alumno continúe.

No se sorprenda si los estudiantes obtienen mejores respuestas que su propia definición de "óptimo". Yo era un TA/graduador para varias clases, y los estudiantes más brillantes tenían rutinariamente respuestas sobre sus conjuntos de problemas que eran superiores a los proporcionados por el profesor.

2

Para problemas simples en los que está buscando una respuesta exacta, eliminar espacios en blanco y hacer una comparación de cadenas es razonable.

Para problemas más avanzados, puede hacer el Algoritmo de yarda de derivación (o similar) pero tal vez parametrizarlo para que pueda activar/desactivar las reducciones para protegerse contra el estudiante complicado. Notará que las respuestas "simples" aún pueden usar el analizador, pero desactivará todas las reducciones.

Por ejemplo, en una pregunta de división, inhabilitaría la reducción "/".

+0

Puede ser difícil determinar cuándo desactivar la reducción/sin embargo. Por ejemplo, si la pregunta es "1/2 + 1/4 =", el usuario puede ingresar "3/4" – Joe

1

Esta es una gran pregunta.

Si está escribiendo un sistema de expresión y un motor de evaluación/transformación/equivalencia (¿no hay uno disponible en algún lado? Estoy casi 100% seguro de que hay uno de código abierto en algún lado), entonces es más una educación/problema de álgebra: es la respuesta del alumno algebraicamente más cercana a la expresión original o a la expresión esperada.

No estoy seguro de cómo responder eso, pero solo una idea (no necesariamente práctica): tal vez su motor de evaluación puede contar los pasos de transformación a la equivalencia. Si la respuesta requiere menos pasos de los esperados que en el original, podría estar bien. Si está demasiado cerca del original, no lo es.

0

Puede usar un analizador de expresiones, pero aplicar restricciones en la complejidad de las expresiones permitidas en la respuesta.

Por ejemplo, si el objetivo es reducir (4/5) * (1/2) y desea permitir (2/5) o (4/10), entonces puede restringir el conjunto de permitidos respuestas a expresiones cuyos árboles toman la forma (x/y) y que también evalúan el número correcto. Quizás también permita "0,4", es decir, expresiones de la forma (x) que evalúan el número correcto.

Esto es exactamente lo que haría (implícitamente) si calificara el problema manualmente, estaría buscando una respuesta correcta pero que también caiga en una clase aceptable.

0

La forma habitual de hacer esto en el software de evaluación de matemáticas es permitir al encargado de la pregunta especificar expresiones/cadenas que no están permitidas en una respuesta correcta.

Si le interesa el software existente, existe la pila de fuente abierta http://www.stack.bham.ac.uk/ (o varias opciones comerciales como MapleTA). Sospecho que Stack también ha encontrado la mayoría de los problemas con los que te encontrarás, por lo que incluso si no quieres usarlos, puede ser educativo ver cómo se acerca.

Cuestiones relacionadas