Computational abstraction of engineering design leads to an elegant theory defining (1) the process of design as an abstract model of computability, the Turing machine; (2) the artifacts of design as enumerated strings from a (possibly multidimensional) grammar; and (3) design specifications or constraints as formal state changes that govern string enumeration. Using this theory, it is shown that engineering design is a computable function. A computational methodology based on the theory is then developed that can be described as a form follows function design paradigm.