He would spend hours manually re-running student code snippets, hunting for misplaced indices or a forgotten import numpy as np . It was exhausting. It was unsustainable. And at 64, he was tired.
The official solutions manual existed. It was a PDF—dry, terse, and filled with answers that looked like this: “Answer: x = 2.374. See section 3.2.” It was useless for learning. It didn't explain why the Newton-Raphson method diverged if you started too far from the root. It didn't show the catastrophic cancellation error in a naive finite difference. It was a cheat sheet, not a teacher.
Alistair noticed immediately. The homework submissions became eerily identical—same variable names ( x_solution , error_norm ), same comments ( # Set up the tridiagonal matrix ). He called Liam into his office.
For (Boundary Value Problems), she included a comparison of the finite difference method versus the shooting method, with a runtime table. The table revealed something surprising: on a stiff ODE, the shooting method failed unless you used an adaptive Runge-Kutta. The finite difference method with a sparse matrix solver was faster and more stable.
The next morning, he uploaded the PDF to the course website. He added a single line in the syllabus: “The solutions manual is now a learning tool, not a shortcut. Use it wisely. And if you copy without understanding, the algorithm will find you—because the residual won’t converge to zero.”
He smiled. Then he replied: “Maya. You have one semester. And I will hold you to a higher standard than I ever did in class.”
Then he opened his laptop and started writing an email to Maya:
Alistair forwarded that reflection to Maya. She replied: “This is exactly why I added the ‘Discussion of Pitfalls’ section. But maybe we need a ‘Common Student Mistakes’ appendix.”