An ordinary differential equation is an equation relating an unknown function to itself and its derivatives at a single independent variable, and the theory of such equations is a study of how information about rates determines behaviour over time. Equations are classified by order, by linearity, and by homogeneity, and only a small number of classes admit solution in closed form. A first order separable equation splits into two integrals after a rearrangement, a linear first order equation is handled by an integrating factor obtained from the coefficient of the derivative, an exact equation is the differential form of a gradient field and is recognised by a test on partial derivatives, and a Bernoulli equation reduces to a linear one by a substitution. Second order linear equations admit a solution space of dimension two, and reduction of order, variation of parameters, and power series methods supply the standard tools, while systems of equations are handled through eigenvalues and eigenvectors, the diagonalisation of which reveals the independent modes along which the system relaxes or oscillates. The existence and uniqueness of solutions is the first theorem of the subject, and it is delicate: Peano's theorem guarantees local existence under mere continuity, while the Picard-Lindelof theorem adds local Lipschitz continuity of the right-hand side and then guarantees uniqueness in a neighbourhood. The size of that neighbourhood is usually a very pessimistic estimate, which is one reason the general theory is more useful for qualitative statements than for predicting numbers. The qualitative theory of differential equations is far richer than the impression of formulas suggests. An equilibrium is a state whose time derivative vanishes, and its stability is determined either by a linearisation or, in its most useful form, by the existence of a function that is positive definite and strictly decreasing along solutions, an idea due to Lyapunov which certifies stability without any explicit solution. Separatrices divide regions of qualitatively different behaviour, and the portrait of a planar autonomous system, with its equilibria, cycles and separatrix curves, carries more information than a dozen numerical trajectories. This is the setting in which numerical methods earn their keep. The explicit Euler method advances a solution by taking a tangent line step, is simple enough to memorise, and carries a global error that grows proportionally to the step size over a fixed interval, which is a fair price for almost no implementation effort. Higher order Runge-Kutta methods evaluate the right-hand side several times per step with carefully chosen coefficients and achieve errors proportional to a higher power of the step size, so that the work per step increases while the step size needed for a given accuracy falls much faster, and the trade is always worthwhile in the accuracy range that engineers actually need. Two difficulties organise the choice of method. Stiff systems, such as the chemical kinetics of a fast intermediate reacting with a slow product, have widely separated time scales, and explicit methods require step sizes governed by the fastest scale even when the solution itself varies slowly, which wastes enormous effort; implicit methods, in which the right-hand side is evaluated at the unknown future value and solved for by a linear or nonlinear solve, relax this restriction and possess large regions of absolute stability. Conservative systems, whose energy is conserved exactly, such as the orbits of celestial bodies or the vibrations of a molecule, need a different remedy: symplectic methods, including the Verlet schemes familiar from molecular dynamics, preserve a nearby geometric invariant for ever so slightly modified energy rather than allowing secular drift, an advantage that only becomes apparent over very long integrations. Adaptive methods accept this by monitoring an error estimate at each step and varying the step size accordingly, and the engineering discipline of the subject consists largely of knowing which failure mode a particular equation will exhibit. Error analysis deserves more attention than it usually receives. A global error estimate must accumulate the local truncation errors over all steps and must also account for the accumulation of roundoff, so the error observed in practice is frequently much larger than the formal prediction, especially in long integrations and in problems with widely separated scales. The convergence order, defined as the rate at which the error falls when the step size is halved, is the standard figure of merit for a method, and the choice of a method is in practice a negotiation among order, stability and the cost of each step. Verification experiments, in which the step size is reduced and the computed solution compared with the result obtained at the finer step, provide the only honest answer about the accuracy actually achieved, and performing them separates professional numerical work from a plausible looking table of numbers.