Teaching

The code is there so we can see the mathematics.

CMNA was written around a fairly simple idea: a numerical method is easier to understand when we can see the algorithm, run the code, change the problem, and watch what happens next. The teaching material here keeps that sequence intact.

This is not a substitute for a theorem-and-proof numerical analysis text, and it was never meant to be. The book is most useful in the space between the mathematics on the board and the production routine we eventually call from R. We state the problem, build enough of the method to understand its machinery, implement it plainly, and then make the implementation do some work.

That last step matters. A student who can reproduce the update rule but cannot predict what happens when the starting value moves, the step size changes, or the assumptions fail has learned less than the code suggests. The laboratories make those changes cheap. The teaching notes make them deliberate.

Instructor resources

Enough structure to teach with. Not another textbook.

Course design

Fourteen weeks with CMNA

A full-semester path through the book, the package, and the laboratories, with enough slack for students to think before we ask them to compute.

Open resource →
Chapter guide

What each chapter is trying to teach

Learning objectives, software links, live laboratories, and the mistakes worth provoking on purpose.

Open resource →
In the room

Teaching with the laboratories

Prediction questions, demonstrations, and follow-up prompts for every major interactive laboratory on the site.

Open resource →
Assignments

Break It

Exercises built around failure: bad starting values, unstable step sizes, ill-chosen matrices, roundoff, and algorithms doing exactly what we told them to do.

Open resource →
Worked problems

The Numerical Zoo

Wilkinson, Hilbert, Runge, Himmelblau, cancellation, oscillatory integrals, and other examples kept around because they know how to expose an assumption.

Open resource →
Adoption

Using CMNA in a course

Prerequisites, software expectations, possible roles for the book, and language an instructor can adapt for a syllabus.

Open resource →

A note on failure

A method that fails in public is doing us a favor.

Most instructional examples are chosen because they work. That is sensible for the first five minutes and dangerous after that. Bisection needs a bracket. Newton needs a useful derivative and a tolerable starting point. Jacobi cares about the matrix. Explicit PDE schemes care very much about the relationship between space and time steps. Floating-point arithmetic eventually notices when we subtract nearly equal numbers.

Those are not footnotes to the algorithms. They are part of the algorithms. So several of the resources here ask students to make a method misbehave on purpose, explain what assumption was violated, and then repair the problem. We learn more from that than from another page of reassuring output.