We present formal models for some of the known algorithmic design paradigms. Ideally, a formal model of a paradigm should: (1). Include all or nearly all of the known algorithms intuitively classified as examples of the technique; (2). Capture the intrinsic characteristics of the paradigm; (3). Be useful in lower bounding the limits of the technique through proofs of negative results for all algorithms in the formal model. Building on \cite{BNR} we give submodels for greedy algorithms and dynamic programming.