One unknown, three ways to represent it
What changes from one method to the next is where a degree of freedom lives and how much continuity it assumes with its neighbours — everything downstream (assembling the system, solving it, refining the mesh) is built once and shared.
FEM — shared nodes
A degree of freedom sits at a node and is shared by every cell that touches it. The solution is continuous by construction; the matrix is sparse and, for a diffusion problem, symmetric.
DG — one block per cell
A cell owns its degrees of freedom outright — nothing is shared. Continuity is not assumed; it is enforced weakly by a numerical flux at every face, the same device a finite volume scheme uses.
VF — one value per cell
The simplest of the three: a single value per cell (its average), no local polynomial at all. What crosses a face is a flux, exactly as for DG — VF is the ``order 0'' member of the same family.
Where to go next
FEM solver
The base method, a worked 2D Laplacian, and where multigrid and basis functions come in.
DG solver
Same problem, one block per cell and a numerical flux instead of shared nodes.
Finite volumes
Cell averages and a two-point flux — the cheapest discretization in the library.
Multigrid
What makes a Krylov solve stop slowing down as the mesh refines — shared by FEM and DG.
Basis functions
Lagrange, Taylor and B-spline — the three local polynomial families FEM and DG build on.
Nonlinear solvers
Fixed point, Newton, Newton preconditioned by multigrid, and FAS — for when the PDE itself is nonlinear.
Inverse problems
Recovering an unknown coefficient from data, by differentiating straight through the forward solve.