Skip to content

Add an ungraded prerequisite self-test page - #168

Open
d-morrison wants to merge 5 commits into
mainfrom
claude/project-thread-v8rqiw
Open

d-morrison wants to merge 5 commits into
mainfrom
claude/project-thread-v8rqiw

Conversation

@d-morrison

@d-morrison d-morrison commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Ezra · project thread

Closes #167.

Why

A student asked to take Calc I concurrently.
The course uses precalculus and CSCI 141/145 programming, not calculus (a grep of chapters/ here and of mcsg's assessments for derivatives, integrals, limits and "calculus" finds only "precalculus" and "lambda calculus").
A self-test that every student gets before day 1 is a fairer readiness check than the catalog prerequisite alone, and a basis for answering exemption requests.

What

  • chapters/prerequisite-self-test.qmd, under Course Logistics in both the navbar and the sidebar: 21 one-question exercises.
    • Programming (9): a Boolean expression, //, %, nested loops, tracing a recursive function, saying what it computes, writing one, a stack, a queue.
    • Math (12): two on exponents, two on logarithms (one with floor), composition in both orders, evaluating and writing a sum, two algebra steps from induction proofs, and two inequalities.
  • Each solution is a collapsed #sol- callout that explains the answer and links a review page (mcs chapters and Math Reference pages, mds algebra pages, and the OpenStax algebra text already in mds/references.bib).
  • The page is ungraded, so its answers are public. Its items are new and differ from the graded week-1 Quiz 0 in mcsg, so publishing them gives none of that quiz away; a comment in the page says so.

Size

44 files and about 600 lines, over the 10-file cap. 42 of the files are the one-div-per-file subfiles that the chapter convention requires, one exercise and one solution each (5 to 25 lines), after the review's rule that each exercise asks one thing. It is one page, and this session can push only one branch, so it cannot go out as stacked PRs.

Checks

  • Rendered quarto render chapters/prerequisite-self-test.qmd --to html; check-rendered-page.py reports the page clean, and every cross-reference resolved (no ?@).
  • Read the rendered text in full. That caught solutions whose bare first line (15.) Pandoc turned into an ordered-list number, hiding the answer; every solution now opens with a sentence. Quiz 0's key in mcsg has the same bug: Morrison-Lab/mcsg#89.
  • Student test (on the first, 12-exercise version): a fresh agent read only the rendered exercises, used no tools, and answered all 12 correctly in about 46 minutes. Acted on: the time is "about 45 minutes", the halving and fraction questions were reworded, and the intro says only final answers need checking. The split version keeps the same items minus seven dropped parts, so it is shorter.
  • First automated review: no bugs; it asked to split multi-part exercises and to break lines at clauses. Both are done in 0ea6e7d.

🤖 Generated with Claude Code

https://claude.ai/code/session_019xfc9nXugm38Fy1oztMzQ7

Students can check before day 1 whether they have the programming
(CSCI 141/145) and precalculus background the course assumes. A student
asked to take Calc I concurrently; the course uses precalculus, not
calculus, so a self-test is a fairer readiness check than the catalog
prerequisite alone.

The page is ungraded, so its answers sit in collapsed solutions with a
review link each. Its items are new and differ from the graded week-1
Quiz 0 in mcsg, so publishing them gives none of that quiz away.

Closes #167

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xfc9nXugm38Fy1oztMzQ7
A simulated student answered all 12 items correctly in about 46 minutes
and found the halving question and 'one fraction in factored form'
ambiguous.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xfc9nXugm38Fy1oztMzQ7
Copilot AI balanced review requested due to automatic review settings November 13, 2026 21:32

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

check-avoided-words flagged a trailing (@def-floor) crossref and the
words 'things' and 'recently'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xfc9nXugm38Fy1oztMzQ7
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

The automated review found two content rules broken: psw teaching.qmd
says to split every multi-part exercise (with its solution), and lines
must break at clause boundaries. The 12 exercises become 21, each with
one question and its own solution; a few parts were dropped rather than
split (the call count, 4^5/2^6, (2^3)^4, log_3(1/9), the halving count,
the formula for f(g(x)) and 3*3^n - 3^n). Trailing crossrefs become
linked phrases, as check-avoided-words asks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xfc9nXugm38Fy1oztMzQ7
Copilot AI balanced review requested due to automatic review settings November 13, 2026 21:37

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@github-actions

Copy link
Copy Markdown
Contributor

Claude finished review — View run


I reviewed the 59-file range since the last round, 0a414053..0ea6e7d2, and found no blocking issues. This is a re-review of that range; it is not a repeat of the earlier verdict.

What changed since the last round

Commit 0ea6e7d split each multi-part exercise into one exercise per question, each with its own _sol file.

  • Single-ask exercises: algebra-square, algebra-fraction, composition-fg, composition-gf, inequality-solve, inequality-negate, integer-division, remainder, power-product, power-double, log-power, log-floor, stack, queue, summation-evaluate, summation-write and recursion-meaning.
  • Reworded in place: boolean, nested-loops, trace-recursion and write-recursion now ask one question each.
  • Clause-level breaks: the prose lines I checked were rebroken, in chapters/prerequisite-self-test.qmd and in the solution subfiles.

Commit abfd644 links floor in its sentence and drops two avoided words.

What I checked

  • Rule 7 (multi-part exercises): every exercise now asks one thing, so the prior blocking finding is resolved.
  • Rule 12 (clause-level breaks): I went through every added prose line and found no line with two or more clauses.
    • One borderline line: chapters/prerequisite-self-test.qmd:30, "and names a page to review if you missed the exercise." It is a compound predicate with a short "if" clause, so I treat it as acceptable and did not flag it.
  • Cross-references: all these ids resolve to a div in _subfiles/ here or in mds/_subfiles/algebra/:
    • thm-neg-ineq, thm-mult-ineq, thm-power-sum and thm-double-exp
    • def-power-exponent, def-divides, def-summation and def-logarithm
    • thm-log-exp, def-floor, def-composition and def-logical-connective
  • Macros: \floor and \paren are defined at latex-macros/macros.qmd:57 and :5. The math uses bare f, g, n, k and i as generic function and index symbols, with no semantic-category symbol written as a literal.
  • Answers: I re-derived every worked answer.
    • Boolean expression: True.
    • 2027 // 10 is 202 and 2027 % 10 is 7.
    • Nested loops: count is 15.
    • p(3, 4) is 81.
    • Stack pops return 2, 7 and 8, and queue removes return 5, 8 and 2.
    • 2^13, 2^{n+1} and ⌊log₂ 100⌋ = 6, with halving steps 100, 50, 25, 12, 6, 3, 1.
    • log₂(8⁵) = 15.
    • f(g(2)) = 11 and g(f(2)) = 25.
    • Sums 31 and Σ_{k=1}^{10} 3k.
    • 2n+1 and (n+1)(n+2)/2.
    • n > 6, and the negated inequality statement is false.
  • Spelling: "nonnegative" already appears in other pages here, and CSCI and Racket are in inst/WORDLIST.

Suggestions (non-blocking)

  • Public answers: the comment at chapters/prerequisite-self-test.qmd:11-16 says these items must differ from the graded Quiz 0 in the private mcsg repository. I can't open that repository, so I can't confirm the items differ.
  • Rule 5: terms such as "stack" and "queue" are not linked at first use inside the exercise divs, so a reader who hasn't started the course sees them unlinked. The solutions link only to review pages. I left this as an author decision.

The earlier review is at #168 (comment). It gave Needs more work, for rules 7 and 12. This commit addresses both.

Verdict

Ready for merge

Structured Review Data (JSON)
{
  "schema_version": "1.1",
  "reviewer": "claude",
  "commit_sha": "0ea6e7d2d4382c97e911d9a3dec9c22378121148",
  "verdict": "CLEAN",
  "findings": [],
  "detailed_assessment": "The split subfiles such as _log-floor_sol.qmd and _trace-recursion_sol.qmd have correct answers, every referenced def- and thm- id resolves, and no prose line holds two or more clauses.",
  "holistic_assessment": "Both blocking findings from the prior round (multi-part exercises and clause-level breaks) are resolved without scope creep; only the unverifiable non-overlap with the private Quiz 0 remains as a non-blocking note."
}

I fetched PR #168 live. It is open, not a draft, and not merged. Its head is still 0ea6e7d2d4382c97e911d9a3dec9c22378121148, the commit I reviewed, so the review below still applies.

The review of 0ea6e7d found no blocking issues. I did not check CI status or merge state, so "Ready for merge" is my review's conclusion, not a statement that the PR can merge now.

Verdict

Ready for merge

Structured Review Data (JSON)
{
  "schema_version": "1.1",
  "reviewer": "claude",
  "commit_sha": "0ea6e7d2d4382c97e911d9a3dec9c22378121148",
  "verdict": "CLEAN",
  "findings": [],
  "detailed_assessment": "The split subfiles such as _log-floor_sol.qmd and _trace-recursion_sol.qmd have correct answers, every referenced def- and thm- id resolves, and no prose line holds two or more clauses.",
  "holistic_assessment": "Both blocking findings from the prior round (multi-part exercises and clause-level breaks) are resolved without scope creep; only the unverifiable non-overlap with the private Quiz 0 remains as a non-blocking note."
}

Reviewed commit: 0ea6e7d

@github-actions

Copy link
Copy Markdown
Contributor

💰 Cost: $0.3611 (review) — run

@github-actions

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.2
🚀 Preview available at: https://Morrison-Lab.github.io/mcs/pr-preview/pr-168/

Built to branch gh-pages at 2026-11-13 21:51 UTC.

@d-morrison d-morrison self-assigned this Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

Annotation dispositions for head 0ea6e7d:

  • 39 runs carry GitHub's routine ubuntu-latest migration notice: not about this PR, no action.
  • 1 notice says SUBMODULES_TOKEN is empty, so submodules clone anonymously: both submodules (latex-macros, mds) are public and checked out, so it is a false positive here.

No warning or failure annotations.

Posted by Claude Code (AI agent) --- not written by a human.


Generated by Claude Code

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add an ungraded prerequisite self-test page

3 participants