feat: add learning objective targets
Pipeline / check (pull_request) Failing after 3m25s
Pipeline / docs (pull_request) Skipped
Pipeline / nightly (pull_request) Skipped
Pipeline / release (pull_request) Skipped

This commit is contained in:
2026-09-21 14:02:34 -04:00
parent 9755417899
commit 8ec48fb185
32 changed files with 2396 additions and 448 deletions
+7 -7
View File
@@ -390,13 +390,13 @@ fn solution_body(out: &mut String, item: &Item) {
/// The `Tests:` line naming the objectives this item measures.
fn objectives_line(out: &mut String, item: &Item, course: &CourseFile) {
if item.learning_objectives.is_empty() {
if item.learning_targets.is_empty() {
return;
}
let texts: Vec<String> = item
.learning_objectives
.learning_targets
.iter()
.map(|id| course.objective_text(id))
.map(|id| course.text_for(id))
.collect();
out.push_str(&format!("**Tests:** {}\n\n", texts.join("; ")));
}
@@ -542,7 +542,7 @@ items:
status: draft
level: 1
stem: At constant pressure, the heat exchanged equals which quantity?
learning_objectives: [lo-enthalpy]
learning_targets: [lo-enthalpy]
options:
- { id: A, text: "the enthalpy change", correct: true, feedback_student: "Right: P dV work is folded into H." }
- { id: B, text: "the internal energy change", misconception: "ignores expansion work" }
@@ -556,7 +556,7 @@ items:
level: 2
format: open_response
stem: Explain why, at constant pressure, the heat exchanged equals the enthalpy change.
learning_objectives: [lo-enthalpy]
learning_targets: [lo-enthalpy]
solution:
model_answer: "At constant pressure the P dV expansion work is folded into H = U + PV, so q_p is the change in H."
rubric:
@@ -599,7 +599,7 @@ items:
bonus: false,
key: vec!["A".into()],
level: None,
learning_objectives: Vec::new(),
learning_targets: Vec::new(),
credit_overrides: Default::default(),
dropped: false,
dropped_as: None,
@@ -613,7 +613,7 @@ items:
bonus: false,
key: Vec::new(),
level: None,
learning_objectives: Vec::new(),
learning_targets: Vec::new(),
credit_overrides: Default::default(),
dropped: false,
dropped_as: None,