MCQ and Assessment Modes

User goal

Assessment modes let instructors decide whether a lesson should generate coding practice, conceptual questions, or both.

Minimal examples

library(tutorizeR)

work_dir <- file.path(tempdir(), "tutorizeR-assessment")
source_file <- file.path(work_dir, "lesson.qmd")

tutorize(source_file, output_dir = work_dir, assessment = "code")
tutorize(source_file, output_dir = work_dir, assessment = "mcq")
tutorize(source_file, output_dir = work_dir, assessment = "both")

Modes

Realistic source pattern

question: "Which variable identifies the academic program?"
answers:
  - text: "program"
    correct: true
  - text: "quiz_score"
    correct: false

In a source lesson, this YAML would be placed inside a tutorizeR-mcq fenced block.

Realistic installed example

library(tutorizeR)

example_dir <- system.file("examples", "example_course_module", package = "tutorizeR")
work_dir <- file.path(tempdir(), "tutorizeR-assessment")
dir.create(work_dir, recursive = TRUE, showWarnings = FALSE)
file.copy(file.path(example_dir, "lesson-source.qmd"), work_dir, overwrite = TRUE)
file.copy(file.path(example_dir, "student_activity.csv"), work_dir, overwrite = TRUE)

qb <- load_question_bank(file.path(example_dir, "question-bank"))

report <- tutorize(
  input = file.path(work_dir, "lesson-source.qmd"),
  output_dir = work_dir,
  assessment = "both",
  question_bank = qb,
  mcq_source = "mixed",
  overwrite = TRUE,
  verbose = FALSE
)

print(report$mcq)

Limits

Generated MCQs are scaffolds. Instructors should verify that questions are aligned with learning objectives and that distractors are plausible. The package does not measure whether an MCQ improves learning.

Reproducibility checklist

lines <- readLines(report$output_file)
any(grepl("learnr::question", lines, fixed = TRUE))