# 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

- `code`: generate exercise and solution scaffolds.
- `mcq`: generate MCQ blocks only.
- `both`: generate code exercises, solutions, and MCQs.

## 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))