--- 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.