2

Is there a way to include open-ended/free-form questions that are ungraded or skipped by r-exams?

Use case: we want to have an exam with mostly multiple choice questions using the package and its grading capability, but also have 5-10 open ended questions that are printed in the same exam. Ideally, r-exams would provide the grade for the first MCQ section, and we could manually add the grade of the open-ended questions.

dthomas
  • 53
  • 4

2 Answers2

2

I forked the package and made some small changes that allows one to control how many questions are printed on the first page and to remove the string-question pages.

The new parameters are number_of_closed_questions and include_string_pages. It is far away from being ideal, but works for me.

As an example let us have 6 mpc/single-choice questions and one essay question (essayreg):

# install devtools if you do not have it!
# install the fork
devtools::install_github("johannes-titz/exams")

library("exams")
myexam <- list(
  "tstat2.Rnw",
  "ttest.Rnw",
  "relfreq.Rnw",
  "anova.Rnw",
  c("boxplots.Rnw", "scatterplot.Rnw"),
  "cholesky.Rnw",
  "essayreg.Rnw"
)

set.seed(403)
ex1 <- exams2nops(myexam, n = 2,
  dir = "nops_pdf", name = "demo", date = "2015-07-29",
  number_of_closed_questions = 6, include_string_pages = FALSE)

This will produce only 6 questions on the front page (instead of 7) and will also exclude the string-question pages.

enter image description here

If you want normal behavior, just exclude the new parameters. Obviously, one will have to set the number of closed questions manually, so one should be really careful.

I guess one could automatically detect how many string questions are loaded and from this determine the number of open-ended/closed-ended questions, but I currently do not have the time to write this and the presented solution is usable for my case.

I am not 100% sure that the scans will work this way, but I assume there should not be any bigger problems as I did not really change much. Maybe Achim Zeileis could comment on that? See my commit: https://github.com/johannes-titz/exams/commit/def044e7e171ea032df3553acec0ea0590ae7f5e

Johannes Titz
  • 972
  • 6
  • 11
1

There is built-in support for up to three open-ended "string" questions that are printed on a separate sheet that has to be marked by hand. The resulting sheet can then be scanned and evaluated along with the main sheet using nops_scan() and nops_eval(). It's on the wish list for the package to extend that number but it hasn't been implemented yet.

Another "trick" you could do is to use the pages= argument of exams2nops() to include a separate PDF sheet with the extra questions. But this would have to be handled completely separately "by hand" afterwards.

Achim Zeileis
  • 15,710
  • 1
  • 39
  • 49
  • The trick would still leave the "open-ended" questions on the first page, which might be confusing to students. I think the wanted functionality by dthomas is something very basic for a written exam. I am actually quite surprised that it is not supported. Is it difficult to implement with the current structure or are you simply not focusing much on written exams at the moment? – Johannes Titz Sep 21 '20 at 12:12
  • I think that using two different answer formats for different exercises in a written exam will always cause a certain amount of confusion. If the open-ended questions were not shown on the first page, other participants would be confused. The experiences from our faculty (with thousands of first-year students) did not indicate that our current format was particularly confusing. – Achim Zeileis Sep 21 '20 at 13:14
  • As for the why: The focus of `exams2nops()` is on large-scale exams that can be automatically evaluated and hence it was created only for multiple-choice exercises. Adding full support for open-ended questions that can be scanned and evaluated automatically as well is not trivial, hence we have only the current solution. When you don't need the scanning/evaluation features then you can used `exams2pdf()` and use any layout in the `template=` that you like. – Achim Zeileis Sep 21 '20 at 13:16