I hated this course, and later taught it at Stanford after enough years of real engineering that I didn’t even remember the topics. By that time I had developed my own way of doing everything: linear algebra notation, ODE and PDE solvers, etc. If you start with the solver, it makes more sense. For instance: let’s say you have something like a driven heat equation in front of you. It is a second-order mess, foreign and unrecognizable. Now discretize it. It becomes stupidly obvious: change in heat occurs at a rate proportional to the sum of differences with the neighbors. Okay, now I get it, and I can write out the solver iteration. How can you speed up the solution? Convolution. Derive that kernel from your solver iteration. We can also do that in a transformed space like Fourier. Okay so, now let’s transform the original equations and then use some magic tricks to simplify. Wow, look how much faster our solution is! Does it give the same result as our simple simulator? Great, now we know why we’re learning this.