Skip to content
This repository has been archived by the owner on Dec 11, 2018. It is now read-only.

Lenguaje para configurar sugerencias progresivas #318

Closed
flbulgarelli opened this issue May 23, 2018 · 4 comments
Closed

Lenguaje para configurar sugerencias progresivas #318

flbulgarelli opened this issue May 23, 2018 · 4 comments
Assignees

Comments

@flbulgarelli
Copy link
Member

flbulgarelli commented May 23, 2018

Relacionado con mumuki/mumuki-laboratory#358 y mumuki/mumuki-laboratory#952

Necesitamos una forma simple de configurar e ingresar en la herramienta de edición las sugerencias progresivas. Esta es mi propuesta:

rules: 

# Este mensaje se muestra cuando le estudiante envía una solución vacía
- type: content_empty
  message: >
   | Ojo, tenés que mandar una solución zaraza

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- type: submission_errored
  message: >
   | Ojo, ¡tu solución no compila!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- type: submission_errored
  messages:
    first_attemp: > 
      | Ojo, ¡tu solución no compila!
    second_attemp: > 
      | Ojo, ¡tu solución no compila!
    default: > 
      | Ojo, ¡tu solución no compila!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
# y tiene un cierto texto
- type: submission_errored
  contains_text: 'missing method zaraza' 
  message: >
   | Ojo, no te olvides de que para que sean polimórficos tienen que...

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
# y encaja con un cierto patrón
- type: submission_errored
  matches_regexp: 'missing method (.*)' 
  message: >
   | Ojo, no te olvides de que para que sean polimórficos tienen que...

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# independientemente de la falla
- type: submission_failed
  message: >
   | Ojo, los tests no pasaron

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla el test dado, independientemente de las demás fallas
- type: submission_failed
  at_least_test: '....'
  message: >
   | Cuidado, vemos que falló el test zarza. Fijate si... 

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla el conjunto de tests dados, independientemente de las demás fallas
- type: submission_failed
  at_least_tests: 
  - 'test 1'
  - 'test 2'
  message: >
   | Ojo, parece que no estás soportando floantes

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla sólo el test dado
- type: submission_failed
  only_test: 'test 1'
  message: >
   | Ojo, parece que no estás soportando floantes

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla sólo el conjunto de tests dados
- type: submission_failed
  only_tests: 
  - 'test 1'
  - 'test 2'
  message: >
   | Ojo, parece que no estás soportando floantes

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla sólo el conjunto de tests dados
- type: submission_failed
  only_tests: 
  - 'test 1'
  - 'test 2'
  message: >
   | Ojo, parece que no estás soportando floantes

Explicación:

  • Tenemos una lista de reglas rules. Las reglas se evalúan todas (alla prolog, no hay prioridades)
  • Cada regla puede ser de varios tipos:
    • submission_failed
    • submission_errored
    • submission_passed_with_warnings
    • content_empty
  • Algunas reglas pueden tomar parámetros adicionales
  • Todas las reglas tienen uno o más mensajes:
    • message si es un único mensaje
    • messages si son varios mensajes, que pueden variar en función de cuál es el número de intento: first_attemp, second_attemp, o default, para todo otro caso no especificado.
@flbulgarelli
Copy link
Member Author

flbulgarelli commented May 23, 2018

@mumuki/learning-experts

@flbulgarelli
Copy link
Member Author

flbulgarelli commented May 25, 2018

Segunda propuesta, con algunos recortes para simplificar la escritura y procesamiento de las reglas:

rules: 

# Este mensaje se muestra cuando le estudiante envía una solución vacía
- type: content_empty
  message: Ojo, tenés que mandar una solución zaraza

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- type: submission_errored
  message: Ojo, ¡tu solución no compila!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- type: submission_errored
  message:
   - 1: Ojo, ¡tu solución no compila (primer intento)!
   - 2: Ojo, ¡tu solución no compila (segundo o tercer intento)!
   - 4: Ojo, ¡tu solución no compila (cuarto a noveno intento)!
   - 10: Ojo, ¡tu solución no compila (décimo intento en adelante)!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
# y tiene un cierto texto
- type: submission_errored
  contains: 'missing method zaraza' 
  message: Ojo, no te olvides de que para que sean polimórficos tienen que...

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# independientemente de la falla
- type: submission_failed
  message: Ojo, los tests no pasaron

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla el conjunto de tests dados, independientemente de las demás fallas
- type: submission_failed
  tests: 
    - 'f -2 should return 1'
    - 'f -5 should return 1'
  message: Ojo, tu solución debe funcionar con números negativos 

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla SOLO el conjunto de tests dados (los demás dan verde)
- type: submission_failed
  tests: 
    - 'f -2 should return 1'
    - 'f -5 should return 1'
  exact: true
  message: Ojo, tu solución debe funcionar con números negativos 

@flbulgarelli
Copy link
Member Author

flbulgarelli commented May 25, 2018

Y propuesta para el feedback de las expectativas:

rules: 
# Este mensaje se muestra cuando le estudiante envía una solución que pasa pero tiene 
# inspecciones que fallan, y falla el conjunto de inspecciones dadas, independientemente
# de las demás
- type: submission_passed_with_warnings
  expectations: 
    - 'Foo DeclaresMethod:getBar'
    - 'Foo DeclareAttribute:bar'
    - 'Foo.bar TypesAs:int'
    - 'Foo.getBar TypesReturnAs:int'
  message: Tu solución debe declarar el atributo bar, de tipo int, y el getter correspondiente. 

@flbulgarelli flbulgarelli changed the title Lenguaje para configurar explicaciones progresivas y adaptativas Lenguaje para configurar sugerencias progresivas May 25, 2018
@ghost ghost assigned flbulgarelli May 27, 2018
@flbulgarelli
Copy link
Member Author

Propuesta final, tal como se implementa en PR:

rules: 

# Este mensaje se muestra cuando le estudiante envía una solución vacía
- when: content_empty
  then: ojo, tenés que mandar una solución zaraza

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- when: submission_errored
  then: ojo, ¡tu solución no compila!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- when: submission_errored
  then:
   - Ojo, ¡tu solución no compila (primer a tercer intento)!
   - Ojo, ¡tu solución no compila (cuarto a sexto intento)!
   - Ojo, ¡tu solución no compila (séptimo intento o más)!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
# y tiene un cierto texto
- when: 
    error_contains: 'missing method zaraza' 
  then: ojo, no te olvides de que para que sean polimórficos tienen que...

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# independientemente de la falla
- when: submission_failed
  then: ojo, los tests no pasaron

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla el conjunto de tests dados, independientemente de las demás fallas
- when: 
    these_test_failed: 
      - 'f -2 should return 1'
      - 'f -5 should return 1'
  then: ojo, tu solución debe funcionar con números negativos 

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla SOLO el conjunto de tests dados (los demás dan verde)
- when: 
    only_these_tests_failed:
      - 'f -2 should return 1'
      - 'f -5 should return 1'
  then: ojo, tu solución debe funcionar con números negativos 


# Este mensaje se muestra cuando le estudiante envía una solución que pasa pero tiene 
# expectativas que fallan
- when: submission_passed_with_warnings
  then: rcordá que tu solución debe ser polimórica

# Este mensaje se muestra cuando le estudiante envía una solución que pasa pero tiene 
# inspecciones que fallan, y falla el conjunto de inspecciones dadas, independientemente
# de las demás
- when: 
    these_expectations_failed: 
      - 'Foo DeclaresMethod:getBar'
      - 'Foo DeclareAttribute:bar'
      - 'Foo.bar TypesAs:int'
      - 'Foo.getBar TypesReturnAs:int'
  then: Tu solución debe declarar el atributo bar, de tipo int, y el getter correspondiente. 

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant