Functionalism
Functionalism is one of two "broad branches" of computer science, chiefly concerned with abstract machines and mathematical computing. It is a broad grouping that originated with the lambda calculus, and is commonly known to programmers today under the banner of functional programming, although it includes purportedly multi-paradigm languages too, such as C++ and Python. The other "broad branch" of computer science is called mechanicalism.
Definition
In computer science, there are two kinds of programming, one dealing with abstract machines, and the other dealing with real machines. The latter might be called software engineering, but the former is called functionalism. Abstract machines have imaginary properties that may not correspond to any real world object such as a transistor or a circuit path, and commonly include "objects" such as tuples, lists, numbers and so on. These abstract machines are then simulated on real computers by some sort of runtime, usually provided by the developers of the language the program is written in. This runtime is often written in more imperative languages like C, but it is always translated into a machine code that only the real computer can understand.
Significance
Functionalism is the sole cornerstone of experimental research in computing. It is the method for approaching unsolved problems, both imaginary and real world, thanks to its unparalleled ability to model in the abstract.
Functionalism is, however, a lot less useful for solving concrete problems with computers. This is because it encourages unchecked growth of complexity through its providing of abstractions that can be used to "stand in" for a complex function so that the programmer need not care about how it works. This unchecked growth of complexity makes the systems unstable, and this causes their usefulness to become limited, as programming integrity-critical applications – such as those in aeronautics or finance – are placed permanently out of reach. With present levels of complexity abound, it is inevitable that such a system will have a bug that allows a catastrophic exploit — that is, an exploit that falsifies the abstract model provided by the functional system, which all its users and programmers depend on holding true.