Commit 2e43c7a2a2c6d55e5fd1b42a821cd98727fb4254
1 parent
bbfa03c9
Exists in
master
and in
1 other branch
updates demo-tutorial
Showing
3 changed files
with
34 additions
and
32 deletions
Show diff stats
demo/demo.yaml
| @@ -22,7 +22,7 @@ title: Teste de demonstração (tutorial) | @@ -22,7 +22,7 @@ title: Teste de demonstração (tutorial) | ||
| 22 | 22 | ||
| 23 | # Duration in minutes. | 23 | # Duration in minutes. |
| 24 | # (0 or undefined means infinite time) | 24 | # (0 or undefined means infinite time) |
| 25 | -duration: 5 | 25 | +duration: 20 |
| 26 | 26 | ||
| 27 | # Automatic test submission after the given 'duration' timeout | 27 | # Automatic test submission after the given 'duration' timeout |
| 28 | # (default: false) | 28 | # (default: false) |
| @@ -37,11 +37,6 @@ show_points: true | @@ -37,11 +37,6 @@ show_points: true | ||
| 37 | # (default: no scaling, just use question points) | 37 | # (default: no scaling, just use question points) |
| 38 | scale: [0, 5] | 38 | scale: [0, 5] |
| 39 | 39 | ||
| 40 | -# DEPRECATED: old version, to be removed | ||
| 41 | -# scale_max: 20 | ||
| 42 | -# scale_min: 0 | ||
| 43 | -# scale_points: true | ||
| 44 | - | ||
| 45 | # ---------------------------------------------------------------------------- | 40 | # ---------------------------------------------------------------------------- |
| 46 | # Base path applied to the questions files and all the scripts | 41 | # Base path applied to the questions files and all the scripts |
| 47 | # including question generators and correctors. | 42 | # including question generators and correctors. |
demo/questions/generators/generate-question.py
| @@ -8,6 +8,7 @@ Arguments are read from stdin. | @@ -8,6 +8,7 @@ Arguments are read from stdin. | ||
| 8 | from random import randint | 8 | from random import randint |
| 9 | import sys | 9 | import sys |
| 10 | 10 | ||
| 11 | +# read two arguments from the field `args` specified in the question yaml file | ||
| 11 | a, b = (int(n) for n in sys.argv[1:]) | 12 | a, b = (int(n) for n in sys.argv[1:]) |
| 12 | 13 | ||
| 13 | x = randint(a, b) | 14 | x = randint(a, b) |
| @@ -18,10 +19,13 @@ print(f"""--- | @@ -18,10 +19,13 @@ print(f"""--- | ||
| 18 | type: text | 19 | type: text |
| 19 | title: Geradores de perguntas | 20 | title: Geradores de perguntas |
| 20 | text: | | 21 | text: | |
| 21 | - Existe a possibilidade da pergunta ser gerada por um programa externo. O | ||
| 22 | - programa deve escrever no `stdout` uma pergunta em formato `yaml` tal como os | ||
| 23 | - exemplos anteriores. Pode também receber argumentos para parametrizar a | ||
| 24 | - pergunta. Aqui está um exemplo de uma pergunta gerada por um script python: | 22 | + |
| 23 | + As perguntas podem ser estáticas (como as que vimos até aqui), ou serem | ||
| 24 | + geradas dinâmicamente por um programa externo. Para gerar uma pergunta, o | ||
| 25 | + programa deve escrever texto no `stdout` em formato `yaml` tal como os | ||
| 26 | + exemplos das perguntas estáticas dos tipos apresentados anteriormente. Pode | ||
| 27 | + também receber argumentos de linha de comando para parametrizar a pergunta. | ||
| 28 | + Aqui está um exemplo de uma pergunta gerada por um script python: | ||
| 25 | 29 | ||
| 26 | ```python | 30 | ```python |
| 27 | #!/usr/bin/env python3 | 31 | #!/usr/bin/env python3 |
| @@ -46,7 +50,7 @@ text: | | @@ -46,7 +50,7 @@ text: | | ||
| 46 | ``` | 50 | ``` |
| 47 | 51 | ||
| 48 | Este script deve ter permissões para poder ser executado no terminal. | 52 | Este script deve ter permissões para poder ser executado no terminal. |
| 49 | - Podemos testar o programa no terminal `./gen-somar.py 1 50` e verificar que | 53 | + Podemos testar o programa no terminal `./gen-somar.py 1 100` e verificar que |
| 50 | o output é uma pergunta válida em formato `yaml`. Agora é necessário indicar | 54 | o output é uma pergunta válida em formato `yaml`. Agora é necessário indicar |
| 51 | que este script deve ser usado para gerar uma pergunta. | 55 | que este script deve ser usado para gerar uma pergunta. |
| 52 | 56 | ||
| @@ -60,7 +64,8 @@ text: | | @@ -60,7 +64,8 @@ text: | | ||
| 60 | args: [1, 100] | 64 | args: [1, 100] |
| 61 | ``` | 65 | ``` |
| 62 | 66 | ||
| 63 | - O programa pode receber uma lista de argumentos declarados em `args`. | 67 | + O programa pode receber uma lista de argumentos de linha de comando |
| 68 | + declarados em `args`. | ||
| 64 | 69 | ||
| 65 | --- | 70 | --- |
| 66 | 71 |
demo/questions/questions-tutorial.yaml
| @@ -24,9 +24,8 @@ | @@ -24,9 +24,8 @@ | ||
| 24 | duration: 60 # duração da prova em minutos (default: inf) | 24 | duration: 60 # duração da prova em minutos (default: inf) |
| 25 | autosubmit: true # submissão automática (default: false) | 25 | autosubmit: true # submissão automática (default: false) |
| 26 | show_points: true # mostra cotação das perguntas (default: true) | 26 | show_points: true # mostra cotação das perguntas (default: true) |
| 27 | - scale_points: true # recalcula cotações para [scale_min, scale_max] | ||
| 28 | - scale_max: 20 # limite superior da escala (default: 20) | ||
| 29 | - scale_min: 0 # limite inferior da escala (default: 0) | 27 | + scale: [0, 20] # limites inferior e superior da escala (default: [0,20]) |
| 28 | + scale_points: true # normaliza cotações para a escala definida | ||
| 30 | debug: false # mostra informação de debug no browser | 29 | debug: false # mostra informação de debug no browser |
| 31 | 30 | ||
| 32 | # -------------------------------------------------------------------------- | 31 | # -------------------------------------------------------------------------- |
| @@ -48,9 +47,9 @@ | @@ -48,9 +47,9 @@ | ||
| 48 | points: 3.5 | 47 | points: 3.5 |
| 49 | 48 | ||
| 50 | - ref: pergunta2 | 49 | - ref: pergunta2 |
| 51 | - point: 2.0 | 50 | + points: 2.0 |
| 52 | 51 | ||
| 53 | - # a cotação é 1.0 por defeito, se omitida | 52 | + # a cotação é 1.0 por defeito |
| 54 | - ref: pergunta3 | 53 | - ref: pergunta3 |
| 55 | 54 | ||
| 56 | # uma string (não dict), é interpretada como referência | 55 | # uma string (não dict), é interpretada como referência |
| @@ -153,17 +152,19 @@ | @@ -153,17 +152,19 @@ | ||
| 153 | entre 0 e 1, sendo atribuída a respectiva cotação, mas só o valor 1 | 152 | entre 0 e 1, sendo atribuída a respectiva cotação, mas só o valor 1 |
| 154 | representa uma opção certa. | 153 | representa uma opção certa. |
| 155 | 154 | ||
| 156 | - Por defeito, as opções são apresentadas por ordem aleatória. | ||
| 157 | - Para manter a ordem definida acrescenta-se: | 155 | + Por defeito, as opções são apresentadas por ordem aleatória, mas é possível |
| 156 | + usar a ordem predefinida. Por exemplo, para manter a ordem e indicar que a | ||
| 157 | + resposta correcta é a do meio define-se: | ||
| 158 | 158 | ||
| 159 | ```yaml | 159 | ```yaml |
| 160 | + correct: [0, 0, 1, 0, 0] | ||
| 160 | shuffle: false | 161 | shuffle: false |
| 161 | ``` | 162 | ``` |
| 162 | 163 | ||
| 163 | - Por defeito, as respostas erradas descontam, tendo uma cotação de | ||
| 164 | - $-1/(n-1)$ do valor da pergunta, onde $n$ é o número de opções apresentadas | ||
| 165 | - ao aluno (a ideia é o valor esperado ser zero quando as respostas são | ||
| 166 | - aleatórias e uniformemente distribuídas). Para não descontar acrescenta-se: | 164 | + As respostas erradas descontam, tendo uma cotação de $-1/(n-1)$ do valor da |
| 165 | + pergunta, onde $n$ é o número de opções apresentadas ao aluno (a ideia é o | ||
| 166 | + valor esperado ser zero quando as respostas são aleatórias e uniformemente | ||
| 167 | + distribuídas). Para não descontar acrescenta-se: | ||
| 167 | 168 | ||
| 168 | ```yaml | 169 | ```yaml |
| 169 | discount: false | 170 | discount: false |
| @@ -269,7 +270,7 @@ | @@ -269,7 +270,7 @@ | ||
| 269 | Neste caso, as respostas aceites são `azul`, `Azul` ou `AZUL`. | 270 | Neste caso, as respostas aceites são `azul`, `Azul` ou `AZUL`. |
| 270 | 271 | ||
| 271 | Em alguns casos pode ser conveniente transformar a resposta antes de a | 272 | Em alguns casos pode ser conveniente transformar a resposta antes de a |
| 272 | - comparar, por exemplo para remover espaços ou converter para maiúsculas. | 273 | + comparar, por exemplo para remover espaços ou converter para minúsculas. |
| 273 | A opção `transform` permite dar uma sequência de transformações a aplicar à | 274 | A opção `transform` permite dar uma sequência de transformações a aplicar à |
| 274 | resposta do aluno, por exemplo: | 275 | resposta do aluno, por exemplo: |
| 275 | 276 | ||
| @@ -278,10 +279,10 @@ | @@ -278,10 +279,10 @@ | ||
| 278 | correct: ['azul'] | 279 | correct: ['azul'] |
| 279 | ``` | 280 | ``` |
| 280 | 281 | ||
| 281 | - Neste momento estão disponíveis as seguintes transformações: | 282 | + Estão disponíveis as seguintes transformações: |
| 282 | 283 | ||
| 283 | - * `trim` remove os espaços do início e fim da resposta, os do meio mantêm-se | ||
| 284 | - inalterados. | 284 | + * `trim` remove os espaços do início e fim da resposta, os espaços do meio |
| 285 | + mantêm-se inalterados. | ||
| 285 | * `remove_space` remove todos os espaços (início, meio e fim). | 286 | * `remove_space` remove todos os espaços (início, meio e fim). |
| 286 | * `normalize_space` remove espaços do início e fim (trim), e substitui | 287 | * `normalize_space` remove espaços do início e fim (trim), e substitui |
| 287 | múltiplos espaços por um único espaço (no meio). | 288 | múltiplos espaços por um único espaço (no meio). |
| @@ -375,10 +376,11 @@ | @@ -375,10 +376,11 @@ | ||
| 375 | são as mais flexíveis. | 376 | são as mais flexíveis. |
| 376 | 377 | ||
| 377 | A resposta é enviada para um programa externo para ser avaliada. | 378 | A resposta é enviada para um programa externo para ser avaliada. |
| 378 | - O programa externo é um programa escrito numa linguagem qualquer, desde que | ||
| 379 | - seja executável pelo sistema operativo (pode ser um script ou binário). | ||
| 380 | - Este programa recebe a resposta submetida pelo aluno via `stdin` e devolve | ||
| 381 | - a classificação via `stdout`. | 379 | + O programa externo é um programa que tem de ser executável pelo pelo |
| 380 | + sistema operativo (pode ser um binário ou script desde que o respectivo | ||
| 381 | + interpretador instalado). | ||
| 382 | + Este programa externo recebe a resposta submetida pelo aluno via `stdin` e | ||
| 383 | + devolve a classificação via `stdout`. | ||
| 382 | Exemplo: | 384 | Exemplo: |
| 383 | 385 | ||
| 384 | ```yaml | 386 | ```yaml |
| @@ -566,7 +568,7 @@ | @@ -566,7 +568,7 @@ | ||
| 566 | duas possibilidads: | 568 | duas possibilidads: |
| 567 | 569 | ||
| 568 | - Imagens inline: não têm título definido e podem ser incluídas no meio de | 570 | - Imagens inline: não têm título definido e podem ser incluídas no meio de |
| 569 | - uma linha de texto usando``. | 571 | + uma linha de texto usando ``. |
| 570 | - Imagens centradas com título: ``. | 572 | - Imagens centradas com título: ``. |
| 571 | O título é colocado por baixo da imagem. Pode ser uma string vazia. | 573 | O título é colocado por baixo da imagem. Pode ser uma string vazia. |
| 572 | 574 |