Essa página tem como objetivo criar tutoriais em português para o pacote exams. O pacote permite a geração automática de exames baseado em questões no formato Markdown ou LaTeX, possibilitando incluir código R para geração dinâmica de elementos de questões.

Após a criação das questões, o examinador escolhe quais questões quer utilizar para formar o exame. Os formatos de saída dos exames podem ser em PDF, HTML, Docx, entre outros. As provas podem ser aplicadas de forma escrita ou online.

Tutoriais

Info

Informações iniciais

  1. Com o pacote exams é possível criar o mesmo exame:
  • Com ordem aleatória das alternativas. Cada examinado receberá uma prova com a ordem das alternativas de forma aleatória.
  • Com várias alternativas, porém escolhendo a quantidade que irá aparecer. Exemplo: o examinador cria 7 alternativas da mesma questão, porém ele quer que sejam mostradas apenas 4 delas. Dessa forma o pacote exams escolhe aleatoriamente 3 alternativas erradas + alternativa correta.
  • Sendo a resposta correta variando conforme variáveis numéricas da questão sendo geradas aleatoriamente. É possível que todas as respostas certas sejam valores diferentes.
  1. Torna-se mais difícil a possibilidade de trapacear no teste devido os motivos apresentados no tópico 1.
  2. Os exames são corrigidos automaticamente da seguinte forma:
  • Exames são gerados, impressos e entregues aos alunos.
  • Os alunos preenchem a folha resposta e entregam ao examinador.
  • As folhas resposta são escaneadas e lidas pelo pacote.
  • O resultado final com a pontuação dos examinados é gerado automaticamente.

Primeiros Passos

Olhada inicial: instalação e questões prontas

  1. Será necessário ter instalado:
  • Software R;
  • Sistema tipográfico LaTeX;
  • IDE para utilizar o R, por exemplo o RStudio;
  • Conversor de documentos Pandoc, já vem instalado no RStudio.
  1. Instalar o pacote exams e ativá-lo
install.packages("exams", dependencies = TRUE)
library("exams") # ativar pacote
  1. Criar pasta para receber arquivos. No meu caso, criei uma pasta chamada exames.
  2. Abrir o R neste diretório ou indicar o caminho para ele
setwd("/camiho/para/diretorio/exames")
  1. Importar arquivos/exercícios já prontos do pacote exams
exams_skeleton(markup = "markdown", encoding = "UTF-8",
  writer = c("exams2html", "exams2pdf", "exams2moodle"))
  1. Foram criados dentro do diretório:
  • Pasta exercises contendo 31 exercícios em formato Rmarkdown
  • Pasta template com modelos em formato LaTeX
  • 4 arquivos formato R demonstrando como criar exames nos formatos HTML, Moodle e PDF
dir() # verificar o que há no diretório
  1. Utilizar o exercício Swiss Capital (capital da Suíça) para visualizar a questão em PDF e HTML. Os arquivos não são salvos, apenas renderizados.
exams2html("exercises/swisscapital.Rmd") # gera questão em HTML
exams2pdf("exercises/swisscapital.Rmd") # gera questão em PDF
  1. Também é possível abrir com outros templates:
  • exam.tex, com problema, solução e folha de resposta não preenchida
  • plain.tex, apenas problema e solução
  • solution.tex, com problema, solução e folha de resposta preenchida
exams2pdf("swisscapital.Rmd",
          template = "templates/exam.tex")
exams2pdf("swisscapital.Rmd",
          template = "templates/plain.tex")
exams2pdf("swisscapital.Rmd",
          template = "templates/solution.tex")
  1. Abrir o arquivo swisscapital.Rmd para ver como foi editado. Lembre-se que está salvo dentro da pasta exercises.

Exame escrito

Criando exames na prática com questões prontas

Atenção

Se você acabou de ver a aba Primeiros Passos, apenas dê continuidade. Caso não tenha visto os Primeiros Passos, confira os passos de 1 a 5 antes de dar início a esse tutorial.

  1. Criar questões:
  • Aleatórias formando um banco de questões
  • Questões específicas para um determinado exame
Atenção

Neste tutorial será utilizado questões já prontas do pacote. Para aprender como montar as questões, confira a aba XXX.

  1. Selecionar questões que serão utilizadas no exame. Neste caso montaremos com 6 questões.
exame <- list(
  "tstat2.Rnw",
  "ttest.Rnw",
  "relfreq.Rnw",
  "anova.Rnw",
  c("boxplots.Rnw", "scatterplot.Rnw"), # qual a diferença?
  "cholesky.Rnw"
)
  1. Precisamos indicar:
  • lista de exercícios (chamamos a lista de exame anteriormente)
  • quantos exames precisamos (n)
  • a pontuação de cada exercício (points)
  • em qual pasta os exames ficarão salvos, a pasta será criada automaticamente (dir)
  • nome dos exames (name)
  • data (date)
  • mostrar os pontos na prova (showpoints)
set.seed(403) # semente aleatória da demonstração
ex1 <- exams2nops(exame, n = 2,
                  dir = "nops_pdf", name = "demo", date = "2015-07-29",
                  points = c(1, 1, 1, 2, 2, 3), showpoints = TRUE)

Alguns detalhes:

  • Perceba que foi criado uma pasta chamada nops_pdf que contém 3 arquivos:
    • 2 exames: demo1 e demo2
    • arquivo demo.rds onde contém informações sobre os exames criados
  • Os exames em PDF demo1 e demo2, já contém:
    • folha de resposta
    • 1 folha em branco caso seja impresso frente em verso a folha resposta. Caso não deseje, insira o argumento duplex = FALSE
    • 6 questões sem solução
    • folhas de rascunho
  • Argumentos para adicionar na função exams2nops() para personalizar:
    • institution: nome da instituição
    • title : título do exame
    • language : trocar idioma, language = "pt" para português
  1. Imprimir os arquivos gerados
Atenção

É recomendado imprimir com o clipe do lado esquerdo no topo, e NÃO escolher a opção “Ajustar a área imprimível”.

  1. Criar arquivo com o registro (possivelmente matrícula), nome e id de cada examinado. Arquivo precisa estar no formato .csv, e pode ser gerado num editor de planilhas. O código abaixo representa uma demonstração de planilha criada dentro do R
write.table(data.frame(
  registration = c("1501090", "9901071"),
  name = c("Jane Doe", "Ambi Dexter"),
  id = c("jane_doe", "ambi_dexter")
), file = "Exam-2015-07-29.csv", sep = ";", quote = FALSE, row.names = FALSE)
  • Observe que é necessário utilizar os argumentos:
    • registration: registro de cada examinado contendo 7 números
    • name: nome de cada examinado
    • id: identificação de cada examinado
    • file: nome do arquivo .csv que será criado
  1. Aplicar os exames impressos
  • Campos de preenchimento disponívels nos exames:
    • Dados pessoais: sobrenome, nome e assinatura (não obrigatórios)
    • Número de registro: os mesmos colocados no arquivo .csv (obrigatório)
    • Respostas das questões (não obrigatório)
Atenção!
  • Campo obrigatório: ocorrerá erro na leitura dos exames se não for preenchido ou se for preenchido de forma incorreta

  • Campo não obrigatório: não interfere na eficácia da leitura dos exames

  • Cada aluno deverá ter um número de registro diferente dos demais

  1. Escanear folha de resposta

Os examinados devem destacar a folha resposta e entregar ao examinador. O examinador, por sua vez, deve escanear a folha. A imagem escaneada deve ser no formato PNG ou PDF. Caso esteja em outro formato pode ser transformada com outro pacote:

install.packages("magick")  # instalar pacote Magick
library(magick) # carregar pacote
exame1 <- image_read("/diretorio/com/imagens/escaneadas") # carregar imagem dentro do software
image_write(exame1, path = "exame1.png", format = "png") # trocar formato e salvar

Por motivos de demonstração, utilizamos 2 folhas já impressas, preenchidas e escaneadas disponíveis no pacote e que nos servirão de exemplo:

img <- dir(system.file("nops", package = "exams"), pattern = "nops_scan",
  full.names = TRUE) # localizar imagens já processadas
dir.create("nops_scan") # criar pasta nops_scan
file.copy(img, to = "nops_scan") # inserir imagens dentro da pasta
  • Observe dentro da pasta exames:
    • a pasta nops_scan foi criada
    • 2 folhas de resposta em formato PNG foram inseridas dentro da pasta nops_scan
  1. Importar folha de resposta para que o software leia os dados
nops_scan(dir = "nops_scan") # leitura das imagens dentro da pasta nops_scan
  • Note que dentro da pasta nops_scan um novo arquivo ZIP foi gerado contendo as 2 imagens escaneadas e um arquivo Daten.txt contendo:
    • nome do arquivo das imagens escaneadas;
    • Exame ID;
    • Número de registro;
    • resposta de cada questão
Observações

Se houve problema na hora de criar o arquivo ZIP (error status 127), há uma possibilidade de solução a ser testada:

  • Instalar Rtools nesse link
  • Localizar onde o arquivo foi instalado, provavelmente C:\Rtools
  • Adicionar C:\Rtools\bin no caminho do sistema em Variáveis do ambiente. Caso não saiba onde encontrar isso, é facilmente encontrado no google.
  • Dentro da variável PATH adicionar o texto ;C:\Rtools\bin
  1. O pacote irá comparar os dados da folha de resposta dos examinandos (Daten.txt) com as respostas corretas geradas pelo examinador durante a criação das questões (demo.rds), através da função nops_eval()
ev1 <- nops_eval(
  register = "Exam-2015-07-29.csv",
  solutions = "nops_pdf/demo.rds",
  scans = Sys.glob("nops_scan/nops_scan_*.zip"),
  eval = exams_eval(partial = FALSE, negative = FALSE),
  interactive = FALSE
)
dir() # perceba que foram adicionados 2 arquivos
  • Note que foram passados como argumentos alteráveis principais:
    • register: nome da planilha criada no passo 5 (character do argumento file)
    • solutions: caminho onde está salvo o arquivo RDS quando foi criado os exames passo 3
  • Adicionados os arquivos nops_eval.csv e nops_eval.zip contendo página HTML com:
    • nome do examinado
    • número de registro
    • pontos obtidos em cada questão
    • questões certas e erradas

Exame online

  1. Criar passo-a-passo ainda

Criando questões

Mostrar quais são os campos fundamentais para criar uma questão (o que é necessário), por exemplo:

  • Question
  • Solution
  • Meta-information

E o que é necessário em cada um.

Fazer dois exemplos bem simples (pode ser aqueles de teste de hipótese por exemplo), um schoice e um mchoice.