---
title: "Workflow Pattern for Large Undergraduate Courses"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Workflow Pattern for Large Undergraduate Courses}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
```

This vignette is an illustrative scenario. Actual classroom deployment is not verifiable from repository contents.

Large undergraduate courses need consistent materials, reproducible updates, and clear handoffs between instructors and teaching assistants. `tutorizeR` is designed for this kind of operational teaching workflow.

## Course folder workflow

```text
course/
  lessons/
    week01-introduction.qmd
    week02-data-import.qmd
    week03-visualization.qmd
  question-bank/
    core-concepts.yml
  tutorials/
  reports/
```

## Batch conversion

```{r eval=FALSE}
library(tutorizeR)

course_dir <- file.path(tempdir(), "course")
qb <- load_question_bank(file.path(course_dir, "question-bank"))

folder_report <- convert_folder(
  dir = file.path(course_dir, "lessons"),
  recursive = TRUE,
  output_dir = file.path(course_dir, "tutorials"),
  format = "learnr",
  assessment = "both",
  question_bank = qb,
  mcq_source = "mixed",
  lint_strict = TRUE,
  overwrite = TRUE
)

print(folder_report)
```

## Teaching assistant review

Teaching assistants can review generated outputs and reports before release:

```{r eval=FALSE}
library(tutorizeR)

lint <- lint_source(
  input = file.path(course_dir, "lessons", "week03-visualization.qmd"),
  question_bank = qb,
  strict = FALSE
)

print(lint)
```

## Operational benefits

The main benefit is not that tutorials are generated automatically once. The benefit is that a whole course team can regenerate the same materials after corrections, new datasets, or revised learning objectives.
