**Abstract:** **Abstract**—Biomimetics is the examination of nature, its models, systems, processes, and elements to emulate or take inspiration from, in order to solve human problems. The term Biomimetics comes from the Greek words bios, meaning life, and mimesis, meaning to imitate. Applications of Biomimetics have led to innumerable advances in science and engineering. The Computer Science field is no exception. The von Neumann Architecture, on which modern computers are based, took significant inspiration from the brain. The human mind represents the pinnacle of natural creation when it comes to logical processing of information. Conceptually, computer systems are information processors, like our minds. As a consequence of Biomimetics principles, computer systems can be significantly improved by mimicking the conceptual model used by the mind: overall complexity, mathematical foundation, encapsulation, decoupling, scalability, interoperability, and realistic correspondence.

**Galvis E.** A. & Galvis D. E., Freedom Software

1. INTRODUCTION & MOTIVATION

The main contribution of this abstract is the specification of the *Turing-complete* Conceptual computing model mimicked from the mind. A mathematical formulation for the model is described. It has been recommended that in order to fully describe the proposed model, we will need to rely on conceptual models studied by several disciplines including psychology, philosophy, and cognition (see Related Work). They will be mentioned when appropriate. *Relevant ideas such as realism (realistic correspondence), reductionism, and Occam's razor have had a prominent impact on science and scientific models [30, 29, 35]*; specifically, in the field of computer science where researchers have leveraged them before. Philosophical realism states that reality exists independent of the observer and that the *truth of a representation or model is determined by how it corresponds to reality (The Correspondence Theory of Truth[30])*. There are several key aspects that serve as motivation for *reductionism* [52]. Among them: *a)** Unification of science. ***b)** Minimization of terms and concepts used by theories in order to encourage theoretical simplicity and eradicate redundancy (Occam’s razor). This aspect should make science more accessible and easier to learn (learning curve).**c) **Filling in of gaps and elimination of contradictions between theories.

The issues associated with information technologies and solutions based on traditional models of computing have been studied by several authors [26,36,14,13,20]. The list of limitations includes the following.

Consider the following quotes: “We can note in passing that one of the *biggest problems* in the development of object-oriented SW architectures, particularly in the last 25 years, has been an enormous over-focus on objects and an under-focus on messaging (most so-called object-oriented languages *don’t really* use the looser coupling of *messaging*, but instead use the much tighter *gear meshing of procedure calls* – this hurts *scalability and interoperability*).” Alan Kay et al.

“the complex machinery of procedure declarations including elaborate naming conventions, which are further complicated by the substitution rules needed in calling procedures. Each of these requires a complex mechanism to be built into

the framework so that variables, subscripted variables, pointers, file names, procedure names, call-by-value formal parameters, and so on, can all be properly interpreted.“[26].

The implementation of traditional multithreaded/distributed information technologies and solutions is a complex endeavor, costly, and hampered by risks [26,14,13,4,5,15]: a) Complexities dealing with distributed information technologies [13, 14, 15, 20]. b) Complexity dealing with multithreaded information technologies. c) Mathematical foundations associated with traditional software/information technologies are often “complex, bulky, and not useful*” *[26]. “Another important shortcoming is their lack of useful mathematical properties and the obstacles they present to reasoning about programs” [26].

In his paper titled “Can Programming Be Liberated From the von Neumann Style?”, Backus described several of the multiple issues associated with traditional models of computing [26]. Such issues are still relevant today. Several of them have been mentioned in this section. Several authors have also suggested the need for new models more adaptable, flexible, reliable, interactive, and natural – founded on information processing and natural computation [36, 29].

“This essay presents several ideas that combined result in a new view of natural, interactive computing as *information processing*, with *broad consequences* relevant for not only computer science and closely related fields of physics, mathematics and logic but even for traditionally non-mechanizable fields of biology, cognitive sciences and neuroscience. We have still much to learn from *nature* and especially from naturally intelligent *information processing* systems such as humans and animals which will bring about *new models of computation and intelligence *[*A=(f(m),I)/C*].” Gordana Dodig-Crnkovic [36]

2. Mathematical Model (Information Machines)

“The truth that the ultimate *laws of thought are mathematical in their form*, viewed in connexion with the fact of the possibility of error, establishes a ground for some *remarkable conclusions*. If we directed our attention to the scientific truth alone, we might be led to infer an almost exact parallelism between the intellectual operations and the movements of external nature.” George Boole (!) [1].

“My contention is that machines can be constructed which will simulate the behavior of the human mind very closely.” Alan Turing

There are three main concepts involved as part of the mathematical computing model. The mathematical formulation is very intuitive, based on abstractions that everyone can relate to and readily grasp.

**Information Machine (A):** An automatic machine able to perform computations via the information primitive which defines the machine’s single function (or purpose). The machine A is defined by a two-tuple A= (*processInformation(message)*, I). A is Turing complete. It can also be expressed as *A= (f(m), I)**,* where *f *represents any computable function.

** ****Message (m): **incoming information is processed in the forms of messages (m), also called information packets or chunks (IC). A message (m) is expressed by a n-tuple m = (b1, … , bn) where b1, … , bn are symbols in a finite set of symbols (alphabet (∑)).
** ****Information (I): **Information machines include a memory subcomponent able to store and retrieve information. The information stored (i.e. known) by the machine is represented by I = (IC1, … ,ICn), where IC1, … ,ICn are information chunks (or packets). ICi = (b_{i1}, … , b_{in}); b_{i1}, … , b_{in} ϵ ∑; i ϵ [1.. n].
** ****Information primitive**: *processInformation (message) *represents a function* f: *∑**à* ∑*

To be rigorous, ∑ needs to be included as part of the machine definition: *A= (f(m), I, *∑*)**. *For the sake of simplicity, it is usually excluded. Information itself (I) can be classified into two categories: conceptual (C) and non-conceptual. The following definitions apply to conceptual information.

** ****Concept (C)**: conceptual information expressed by a single language Construct, C = (a1,a2, … ,an) where a1,a2, … ,an are information associations.
** ****Information association****(a)**: a_{i} is an association of the form (xi, yi), meaning that xi is equal or associated to yi (xi = yi) where xi and yi are defined as follows.

- xi = (b1, …, bn); b_{i} ϵ ∑; i ϵ [1 .. n], or xi represents a concept as defined by C.

- yi = (b1, …, bn); b_{i} ϵ ∑; i ϵ [1 .. n], or yi represents a concept as defined by C.

In summary, the model consists of following main concepts: information, messaging, and processing of information as defined by a single mathematical function (*f(m))*. It should become obvious why information is the fundamental concept behind the model. A complex problem has been reduced, via conceptualization, to a complete and streamlined set of implementable concepts part of a straightforward mathematical model (Turing complete). Messaging is tightly intertwined with the concept of information. Through the concept of messaging, information is transferred and the machine is able to interact with its physical environment. To visualize the natural concepts involved, you may want to think about the human mind and the associated entities. Obviously, since the model attempts to mimic the mind, there is a realistic *one-to-one* correspondence. As usual, nature is leading the way in terms of a paradigm for computing and information processing: *conceptual paradigm*. One straightforward implementation of the Information Machine is via an encapsulated and decoupled component or object, consisting of a single method with a single parameter (message)[2, 4, 5, 9]. The method may return information in the form of a concept (C). A component/object that implements the Information Machine abstraction is called a Live or Animated component (see Implementation Considerations) [2, 4, 5, 9]. It can be visualized as a computer (mini-computer) since both have equivalent processing power.

From a conceptual perspective, it should be clear from observation of reality that the same three concepts leveraged by the Turing-complete information machine apply to the mind, in agreement with realism and The Correspondence Theory of Truth [30]. The information machine represents a *model* of the mind. It should be stated that scientific *models *do not need to be exact in order to be valid, but approximately true (see Models in Science [30]). Multiple valid models of the same natural phenomena are also feasible. Consider the weather models, for instance. Regardless of how closely the proposed mathematical *model* mimics the conceptual mind, it is *Turing complete*; also presents a wide range of measurable qualities applicable to information technologies (see Model Evaluation and Metrics [9]).On the other hand, it should be emphasized that realism (i.e. realistic correspondence) is a key aspect while evaluating scientific models.

Additional aspects related to realistic correspondence between the proposed mathematical model and the conceptual mind have been studied and documented in more detail (see Physical Foundation [9] and Related Work). Most of such aspects, mainly related to cognitive architectures, are substantial and beyond the scope of this paper, which focuses on the computing model (information machine) and its mathematical specification (*A=(f(m),I)/C)*.

3. Consequences

The consequences and qualities associated to the Conceptual computing model are derived from its mathematical foundation. Applications and components built based on the model inherit such qualities [9,4,5,2]. It should be obvious why information is the model’s fundamental concept which does not come as a surprise since we are dealing with *information* technologies. Every aspect should be viewed from the standpoint of information.

**Simplicity and Occam’s razor**: the conceptual model is straightforward – Turing-complete information machine (*A= (f(m),I))*, single information primitive, and single Concept construct to represent information (C). The Conceptual model is perhaps the simplest one, yet Turing complete. All redundant abstractions and primitives add complexities and are unnecessary. Consider the simplification in terms of the number of concepts, components, and single primitive required for implementation: most entities in the world around us need to be realistically represented as concepts (C) because they are unable to process information (passive entities). The approach and associated mathematical formulation reduce (i.e. *conceptualize*) the universe of *information* technologies to a streamlined set of implementable concepts: information, messaging, and information machine.

“William of Occam opposed the proliferation of entities, but only when carried beyond what is needed --procter necessitatem! … But computer scientists must also look for something *basic* which underlies the various models; they are interested not only in individual designs and systems, but also in a *unified theory* of their ingredients.” Robin Milner [29]

**Completeness**: the Conceptual approach is based on a Turing-complete information machine (*A=(f(m),I))*, and single language construct (Concept) [4,9]. Turing completeness has been demonstrated via formal proof (see Information Machine and Turing Completeness). Therefore, it can be used for the complete conceptualization and implementation of *arbitrary* information technologies.

**Encapsulation****.** The Conceptual model and associated abstractions improve encapsulation. Component functionality, information (I), and processing mechanism are encapsulated into a single entity. They should not be artificially modeled as separate objects or components. It should be fairly obvious that the information machine (*A= (f(m),I*)) is a fully encapsulated and independent entity.

**Coupling****.** Decoupling is improved by the Conceptual model. Component functionality, processing/treading mechanism, and messaging mechanism are decoupled. Each one can be modified independently without impacting the others. Again, it should be fairly obvious that the information machine (*A=(f(m),I*)) is fully decoupled from its environment. The Conceptual model does not present the web of interdependencies required by traditional APIs based on “gear meshing of procedure calls”.

**Interoperability**: the Conceptual model helps improve interoperability [9,4,5,2]. The concept construct of the form C = {(x1, y1), … , (xn, yn)} can be freely transferred between systems and components regardless of technologies, languages, protocols, and data representation. The same principle applies to any arbitrary concept (C). In a sense, the concepts construct (C) is a fluid abstraction that can be interchanged between heterogeneous technologies, systems, components and applications. A process, based on the Turing-complete Conceptual computing model, can transparently incorporate components (*A=(f(m),I))* and applications that use multiple technologies, languages, platforms, protocols, and so forth.

**Scalability****:** As discussed by Alan Kay et al, technologies and models based on gear meshing of procedure calls present drawbacks in terms of scalability (see Introduction & Motivation). On the other hand, the Conceptual computing model does not present scalability limitations; client component, server component, and communication mechanism are decoupled. Servers can be upgraded one by one without an impact on the client application and the rest of the infrastructure. Once all the servers have been gradually upgraded, clients can be upgraded to take advantage of the new software functionality. As a consequence, an infrastructure based on the Conceptual model can scale well and handle an arbitrary number of servers and clients 24/7. This application of the proposed approach assumes that the new software version relies on backward-compatible messaging.

**Realistic correspondence:** there is an accurate correspondence between the Conceptual model and the way information is transferred and processed in the real world (The Correspondence Theory of Truth[30]). In particular, the *unified* model attempts to mimic the mind’s conceptual framework. Artificial abstractions/primitives are redundant and may exhibit complexity, limitations, and/or inefficiencies (like gear meshing of procedure calls). Notice the faithful correspondence between the mathematical model and reality. All the relevant concepts are included: information (concept construct (C)), messaging, and processing of information. All of them cooperate in harmony and unity. The Conceptual computing model is also in close correspondence with or supported by leading psychological, cognitive, and philosophical theories of the mind (see Related Work).

“It is necessary to remark that there is an ongoing synthesis of computation and communication into a **unified** process of *information processing*. Practical and theoretical advances are aimed at this synthesis and also use it as a tool for further development. Thus, we use the word computation in the sense of *information processing* as a whole. Better theoretical understanding of computers, networks, and other information processing systems will allow us to develop such systems to a

higher level. ” Mark Burgin [36]

4. IMPLEMENTATION CONSIDERATIONS

The separation between the involved concepts (model) and their implementation needs to be emphasized, which is a common characteristic found in related approaches [46], [11]. Thus, multiple valid implementations (i.e. realizations) of the same Turing-complete mathematical model are feasible. As a specific example, a Turing machine represents a mathematical model that can have multiple realizations.

One straightforward software implementation of the Turing-complete information machine *(A=(f(m),I))* is via an encapsulated object or component consisting of a single method with a single parameter (message). Such component/object is called a Live or Animated component. As an example, the following software snippet uses Java/Android for implementation. The appendix includes a complete example.

public Class AnimatedComponent {

/* Process component messages */

public Object processMessage (Object message) {

Object reply;

// Add logic to process the message here. Intuitively, any function or procedure can be implemented.

//Optionally, auxiliary internal methods (private) may be invoked from this

// single information primitive implementing messaging.

...

// Return a reply (output)

return (reply); } }

Due to Turing-completeness, the Live/Animated component is able to implement any computable function or algorithm (*f(m))*. Therefore, Live/Animated components can be leveraged to implement arbitrary information technologies. For instance, the group of components required to provide comprehensive distributed capabilities: distributed access, messaging, and security.

5. Information Machine and Turing Completeness

This section discusses the proposed mathematical model and demonstrates its Turing-completeness. A Turing machine is specified as a 7-tuple *M= (Q,**Γ,b,Σ ,δ,q*_{0}, F). Given an arbitrary Turing machine, let us demonstrate that an equivalent information machine (*A=(f(m),I))* can be built based on the information primitive *f(m).* To be rigorous, ∑ needs to be included as part of the machine definition: *A= (f(m),I,∑)*. For the sake of simplicity, it is usually excluded.* *

The machine tape can be implemented as an array, vector, or any other comparable data structure. It is part of the information (I) stored in the machine’s memory subcomponent. The machine’s transition table, current state, initial state, and set of final states are also part of (I).

// Pseudocode implementation based on the information primitive *(f(m))*.

// The message (m) consists of a single symbol.

void processInformation (symbol) {

Transition transition; // Consists of next state, symbol to be written,

// and tape movement (‘L’ or ‘R’)

// Transition table being replicated.

transition = transitionTable[currentState, symbol];

// The following two operations on the machine tape mimic the ones implemented

// by a Turing machine

updateTape(transition.symbol); // Update the machine tape* *

moveHead (transition.movement); // Move the head

currentState = transition.nextState ; // Part of the information stored in the

// machine’s memory

}

For any arbitrary Turing machine (M), an equivalent information machine (A) can be built, which demonstrates that *A= **(f(m),I)* is Turing complete. As a consequence, and based on the Church-Turing thesis, any computable function or algorithm can be computed by using the information machine (A).

*f:*∑**à* ∑* is a generalization of *processInformation(symbol) *applicable to messages (information chunks) of finite length (∑*), as opposed to a single symbol. Animated/Live components represent a software implementation of Turing-complete information machine. In other words, Animated/Live components based on the information primitive (*f(m))* can be used to implement any arbitrary computer technology, protocol, language, and/or framework including secure, distributed, and fault-tolerant technologies. There is an alternative approach to demonstrate Turing completeness (see Information Machine and Turing Completeness [9]). Intuitively, for any computable function (*f’(m))* of your choosing*, * an information machine or corresponding Animated/Live component can be built (*A= **(f’(m),I)) *to compute it.

6. Evidence, EVALUATION, and Metrics

*A reference implementation of the Conceptual computing model has been produced which demonstrates its applicability and qualities in a tangible fashion (tangible evidence). An evaluation of the model and its reference implementation has been performed in qualitative and quantitative terms (see Model Evaluation and Metrics [9])***. ***Several production quality applications have been built based on the reference implementation of the Conceptual model. Tangible research results based on the Conceptual approach have been published earlier [4, 5, 2]. * *Turing completeness has been demonstrated via formal proof (see Information Machine and Turing Completeness). *

7. Related Work

The study of the conceptual mind is a multidisciplinary endeavor. Multiple related disciplines have made significant contributions: psychology, neuroscience, computer science, mathematics (logic), and philosophy. *Relevant ideas such as realism (realistic correspondence), reductionism, and Occam's razor have had a prominent impact on science and scientific models [30, 29]*: specifically, in the field of computer science where researchers have leveraged them before. Clearly, these ideas have significant relevance to the realistic computing model being presented.

The Conceptual approach represents a *mathematical computing model (Turing complete)*. Multiple models of computing have been proposed [26]: operational, applicative, and von Newmann models (see Model Evaluation and Metrics [9]). Through the years, additional approaches of parallel computation have been proposed [45]: PRAM (parallel random-access machine), BSP (Bulk synchronous parallelism), and LogP. Related mathematical models of concurrency have been proposed: Actor Model, Process Algebras, and Petri Nets [7, 29]. All of these models of computing have a distinctly different mathematical foundation. There are conceptual differences as well, in terms of degree of realistic correspondence, abstractions, simplicity (Occam’s razor), single information primitive, applicability (focus/ problem area), natural inspiration (Biomimetics), and overall goal of mimicking the mind’s framework/model for information processing (see appendix on Related Models and Approaches [9]).

The Turing-Complete Conceptual model can be applied to the implementation of arbitrary computing/information technologies. Due to its versatility and wide applicability, it can be compared to a large variety of related models which is challenging because of diversity and number. However, due to size constraints, it is not feasible to completely cover all of them within this section. For a complete discussion, please check reference 9. It should be stated that all related models, technologies, reuse approaches, and architectural styles are distinctly different because of their mathematical foundations (i.e. model). As a general rule of thumb, if the technology, approach or architectural style is not based on the proposed Turing-complete mathematical formulation **(***A=(f(m),I)***/***C*), then it is clearly different. Furthermore, if the underlying model consists of more abstractions than the ones proposed (3), there is redundancy that should be ‘shaved away’ according to reductionism/Occam’s razor and the concepts exhibited by the natural mind. Redundant abstractions bring forth unnecessary complexity. In agreement with Occam’s razor, reductionism, Biomimetics, and the Turing-complete Conceptual computing model, all *information* models, technologies, approaches, and architectural styles can be reduced (unified/simplified) to the concepts part of the model: *information*, messaging, and information processor/machine (*A=(f(m),I)).*

As mentioned before, the Turing-complete Conceptual model is in correspondence with and/or supported by well-known theories and related disciplines [9, 30, 25, 31, 32, 21, 53]: computational theory of mind (CTM), The Language of Thought Hypothesis (LOTH), cognitive psychology, psychology, psychological associationism, Unified Theories of Cognition (UTC), Physical Symbol System Hypothesis (PSSH), and philosophical conceptualism/realism. References 9 covers the realistic correspondence between the mathematical model and the conceptual mind in more detail, as part of the cognitive area, which is substantial and beyond the scope of this paper (see Cognitive/AI Architecture and appendix on Related Theories, Studies, and Research[9]).

A Conceptual computing model is a broad subject applicable to a wide variety of information technologies and problem areas (due to Turing completeness). It is not feasible to cover all the relevant information and supporting evidence within a single document. Thus, this extended abstract includes *multiple cross references*. If a specific area of interest seems to be missing information, I would recommend you to review the references. Reference 9 provides a more detailed picture of the overall effort. It covers information that had to be excluded or condensed due to size constraints. In particular, comparisons with related models and approaches are discussed (see appendix on Related Models and Approaches [9]). Reference implementation of the model, formal demonstrations (Turing completeness), detailed evaluation/metrics, code examples, and additional implementation/technical consideration are also discussed in detail.

REFERENCES (for actual/complete paper)

[1] George, B. *An Investigation of the Laws of Thought on Which are Founded the Mathematical Theories of Logic and Probabilities.* Macmillan. Reprinted with corrections, Dover Publications, New York, NY, 1958. Originally published in 1854.

[2] Galvis, A. *Messaging Design Pattern and Pattern Implementation*. 17^{th} conference on Pattern Languages of Programs - PLoP 2010.

http://sites.google.com/site/conceptualparadigm/documents/Messaging.docx?attredirects=0&d=1

[3] Turing, A. *Computing Machinery and Intelligence.* Mind 1950.

[4] Galvis, A. *Process Design Pattern and a Realistic Information Model*. 18^{th} conference on Pattern Languages of Programs (writers’ workshop) - PLoP 2011.

http://sites.google.com/site/conceptualparadigm/documents/Realistic.docx?attredirects=0&d=1

[5] Galvis, A. *Messaging Design Pattern and Live or Animated Objects*. 18^{th} conference on Pattern Languages of Programs (writers’ workshop) - PLoP 2011.

http://sites.google.com/site/conceptualparadigm/documents/AnimatedComponent.docx?attredirects=0&d=1

[6] Lamport, L. *The implementation of Reliable Distributed Multiprocess Systems*. Computer Networks. 1978.

[7] Hewitt, C. E. et al*. Actors and Continuous Functionals* *.* MIT. Laboratory for Computer Science. MIT/LCS/TR - 194, December 1977.

[8] Gregor Hohpe and Bobby Woolf. *Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solution.* Addison-Wesley, 2004.

[9] Galvis, E. A. *Conceptual Model (Compilation of papers and reports)*

http://sites.google.com/site/conceptualparadigm/documents/ConceptualE.docx?attredirects=0&d=1

[10] Galvis, E. A. *Jt - Java Pattern Oriented Framework, An application of the Messaging Design Pattern*. IBM Technical Library, 2010.

[11] Gamma, E. et al. *Design Patterns: Abstraction and Reuse of Object-Oriented Design. *ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming.

[12] Fielding, R. T. *Architectural Styles and the Design of Network-based Software Architectures. Ph.D. Dissertation.* University of California, 2000.

[13] Bih, J. *Service Oriented Architecture (SOA) a new paradigm to implement dynamic e-business solutions*. ACM ubiquity, August, 2006.

[14] Henning, M. *Rise and Fall of CORBA*. ACM queue, June, 2006.

[15] Loughran S. et al. *Rethinking the Java SOAP Stack.* IEEE International Conference of Web Services (ICWS) 2005. Orlando, USA, 2005.

[16] Schneider, F. B. *Implementing fault-tolerant services using the state machine approach: A tutorial.* ACM Computing Surveys. 1990.

[17] Michael B. et al. *BPELJ:BPEL for Java*.BEA Systems Inc. and IBM Corp.USA, 2004.

[18] Wollrath, A. et al. *A distributed Object Model for the Java System*. Proceeding of the USENIX 1996. Toronto, Canada, 1996.

[19] *BRAIN 2025 Report, A Scientific Vision.* U. S. National Institute of Health (NIH). June 2014.

[20] Goth, G. *Critics say Web Services need a REST*. IEEE distributed systems online. Vol. 5. No. 12, 2004.

[21] Sowa, J. *Cognitive Architectures for Conceptual Structures*, Proceedings of ICCS 2011, Heidelberg: Springer, 2011, pp. 35-49.

[22] Roberts, S. on George Boole. *The Isaac Newton of Logic*. The Globe and Mail. March 27, 2004*.* http://www.theglobeandmail.com/life/the-isaac-newton-of-logic/article1129894/?page=1

[23] Von Newmann, J. *First Draft of a Report on the EDVAC*. 1945.

[24] Chen, P. *The Entity-Relationship Model--Toward a Unified View of Data*. In Communications of the ACM, 1(1).1976.

[25] Newell, A. and Simon, H. *Computer Science as Empirical Inquiry: Symbols and Search*. In Communications of the ACM, 19 (3).1976.

[26] Backus, J. *Can* *Programming Be Liberated From the von Neumann Style?* 1977 Turing Award Lecture.

[27] Sowa, J. *Conceptual graphs for a database interface.* IBM Journal of Research and Development, vol. 20, no. 4, pp. 336-357. 1976

[28] Nilsson, N. *The Physical Symbol System Hypothesis: Status and Prospects*. In M. Lungarella, et al., (eds.), 50 Years of AI, Festschrift, LNAI 4850, pp. 9-17, Springer, 2007.

[29] Milner, R. *Elements of interaction*, ACM, 36(1), January 1993.

[30] *Stanford Encyclopedia of Philosophy*. http://plato.stanford.edu/

[31] Tegmark, M. *The Mathematical Universe*. Foundations of Physics 38 (2): 101–150. 2008.

[32] Newell, A.*Unified Theories of Cognition*, Harvard University Press. 1994.

[33] Landauer, R. *The physical nature of information*. Physics Letters A 217, 1996.

[34] Johnson-Laird, P. *Mental models: Towards a cognitive science of language, inference, and consciousness*. 1983.

[35] *Anderson, P. W**. More is different*. Science, August 1972.

[36] Dodig-Crnkovic, G. *Significance of Models of Computation, from Turing Model to Natural Computation*. Minds and Machines, May 2011.

[37] *Chidamber S. and Kemerer C**. A metrics suite for object-oriented design*. IEEE Trans. on Software Engineering, June 1994.

[38] *Basili, V. et at**. A Validation of Object-Oriented Design Metrics as Quality Indicators. *IEEE Trans. on Software Engineering, October 1996.

[39] Rosenberg, L. et al. *Risk-based object oriented testing*. Twenty Fourth Annual Software Engineering Workshop, NASA, 1999

[40] Tegarden, D. et al. *A software complexity model of object-oriented systems.* Decision Support Systems: The International Journal, January 1993.

[41] Lorenz, M. et al. *Object-Oriented software metrics*, Prentice-Hall*.* 1994.

[42] Lie, W. et at. *Object-oriented metrics that predict maintainability*. Journal of Systems and Software. February 1993.

[43] Wooldridge, M. *Multiagent Systems: Introduction (2*^{nd} Edition). John Wiley & Sons. 2009.

[44] Krueger, C. W. *Software reuse.* ACM Computing Surveys, 24(2), June 1992.

[45] Savage, J. E. *Models of Computation*. Addison-Wesley*, *1998.

[46] Nenad Medvidovic and Richard N. Taylor. *Exploiting Architectural Style to Develop a Family of Applications*. October 1997*.*

[47] Application Architecture Guide (Patterns & Practices), Microsoft. September 2009.

[48] Culler, D. et al. *LogP: Towards a Realistic Model of Parallel Computation. *ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, May 1993.

[49] Skillicorn, D. and Talia, D. *Models and Languages for Parallel Computation. *ACM Computing Surveys, June 1998.

*[50] *Xu Liu et al. *Optogenetic stimulation of a hippocampal engram activates fear memory recall*. Nature, April 2012.

[51] Nirenberg, S., Pandarinath, C. *Retinal prosthetic strategy with the capacity to restore normal vision*, Proceedings of the National Academy of Sciences (PNAS), 2012.

[52] *Internet Encyclopedia of Philosophy*. http://www.iep.utm.edu

[53] Fodor, J.* The Language of Thought*, Harvard University Press. 1975.