Purpose: The author argues for the need for precise definitions of computation and computational thinking. He describes many models of computation and points out that there are some fields where effective models do not yet exist (e.g., computational models for biological processes).
Findings: Useful models of computation for solving problems arising in sequential computation can range from simple finite state machines to Turing-complete models such as random access machines. Useful models of concurrent computation for solving problems arising in the design and analysis of complex distributed systems are still a subject of current research. The message-passing Actor model is given as an example of concurrent computation model. This model was designed for parallel computing. Other models include Petri nets and the process calculi. In cloud computing, there are still a host of poorly understood concerns for systems of this scale. The architectural tradeoffs needed to achieve the desired levels of reliability, performance, scalability and adaptivity in the services these systems are expected to provide need to be better understood. There are no appropriate abstractions to describe these properties in such a way that they can be automatically mapped from a model of computation into an implementation.
Recommendations: Currently existing models of computation should be taken into account when developing a definition of computational thinking. Because there are phenomena for which computational models do not yet exist, however, the definition may also require new formalisms to be invented.