Minds and Machines

, Volume 17, Issue 2, pp 135–167 | Cite as

Three Paradigms of Computer Science

  • Amnon H. Eden
Original Paper


We examine the philosophical disputes among computer scientists concerning methodological, ontological, and epistemological questions: Is computer science a branch of mathematics, an engineering discipline, or a natural science? Should knowledge about the behaviour of programs proceed deductively or empirically? Are computer programs on a par with mathematical objects, with mere data, or with mental processes? We conclude that distinct positions taken in regard to these questions emanate from distinct sets of received beliefs or paradigms within the discipline:
  • The rationalist paradigm, which was common among theoretical computer scientists, defines computer science as a branch of mathematics, treats programs on a par with mathematical objects, and seeks certain, a priori knowledge about their ‘correctness’ by means of deductive reasoning.

  • The technocratic paradigm, promulgated mainly by software engineers and has come to dominate much of the discipline, defines computer science as an engineering discipline, treats programs as mere data, and seeks probable, a posteriori knowledge about their reliability empirically using testing suites.

  • The scientific paradigm, prevalent in the branches of artificial intelligence, defines computer science as a natural (empirical) science, takes programs to be entities on a par with mental processes, and seeks a priori and a posteriori knowledge about them by combining formal deduction and scientific experimentation.

We demonstrate evidence corroborating the tenets of the scientific paradigm, in particular the claim that program-processes are on a par with mental processes. We conclude with a discussion in the influence that the technocratic paradigm has been having over computer science.


Philosophy of computer science Ontology and epistemology of computer programs Scientific paradigms 



Special thanks go to Ray Turner for reviewing draft arguments and for his guidance and continuous support, without which this paper would not have been possible; to Jack Copeland for his guidance on matters of traditional philosophy; and to Bill Rapaport for his detailed comments. We also thank Tim Colburn (2000) and Bill Rapaport (2005) without whose extensive contributions the nascent discipline of philosophy of computer science would not exist; Barry Smith for his guidance; Susan Stuart for developing the contentions made of this paper; Naomi Draaijer for her support; Yehuda Elkana, Saul Eden-Draaijer, and Mary J. Anna for their inspiration. This research was supported in part by grants from UK’s Engineering and Physical Sciences Research Council and the Royal Academy of Engineering.


  1. Abran, A., & Moore, J. W. (Eds.) (2004). Guide to the Software Engineering Body of Knowledge—SWEBOK (2004 ed.) Los Alamitos: IEEE Computer Society.Google Scholar
  2. Abelson, H., Sussman, J.J. (1996). Structure and Interpretation of Computer Programs. (2nd ed.) Cambridge: MIT Press.Google Scholar
  3. Aho, A. V., Sethi, R., & Ullman, J. D. (1986). Compilers: Principles, techniques, and tools. Reading: Addison Wesley.Google Scholar
  4. Balaguer, M. (2004). Platonism in metaphysics. In: E. N. Zalta (Ed.), The Stanford Encyclopedia of philosophy (Summer 2004 ed.) Available (Accessed March 2007.)
  5. Bedau, M. A. (2004). Artificial life. In: L. Floridi (Ed.), The Blackwell guide to philosophy of computing and information. Malden: Blackwell.Google Scholar
  6. Berry, H., Pérez, D. G., & Temam, O. (2005). Chaos in computer performance. Nonlinear Sciences arXiv:nlin.AO/0506030.Google Scholar
  7. Brent, R., & Bruck, J. (2006). Can computers help to explain biology? Nature, 440, 416–417.CrossRefGoogle Scholar
  8. Bundy, A. (2005). What kind of field is AI? In: D. Partridge, & Y. Wilks (Eds.), The foundations of artificial intelligence. Cambridge: Cambridge university Press.Google Scholar
  9. Carr, N. G. (2004). Does IT matter? Information technology and the corrosion of competitive advantage. Harvard Business School Press.Google Scholar
  10. Cohn, A. (1989). The notion of proof in hardware verification. Journal of Automated Reasoning, 5(2), 127–139.zbMATHCrossRefGoogle Scholar
  11. Colburn, T. R. (2000). Philosophy and computer science. Armonk, N.Y.: M.E. Sharpe.Google Scholar
  12. Copeland, B.J. (2002). The Church-Turing thesis. In: Edward N. Zalta (Ed.) The Stanford Encyclopedia of Philosophy (Fall 2002 ed.) Available (Accessed Mar. 2007).
  13. Copeland, B.J. (2006). Are computer programs natural kinds? Personal correspondence.Google Scholar
  14. Devaney, R. L. (1989). Introduction to chaotic dynamical systems (2nd ed.). Redwood: Benjamin-Cummings Publishing.zbMATHGoogle Scholar
  15. Debian Project, The. Accessed March 2007.
  16. DeMillo, R. A., Lipton, R. J., & Perlis, A. J. (1979). Social processes and proofs of theorems and programs. Communications of the ACM, 22(5), 271–280.CrossRefGoogle Scholar
  17. Denning, P. J. (1989). A debate on teaching computing science. Communications of the ACM, 32(12), 1397–1414.CrossRefGoogle Scholar
  18. Denning, P. J., Comer, D. E., Gries, D., Mulder, M. C., Tucker, A., Turner, A. J., & Young, P. R. (1989). Computing as a discipline. Communication of the ACM, 32(1), 9–23.CrossRefGoogle Scholar
  19. Dijkstra, E.W. (1988) On the cruelty of really teaching computing science. Unpublished manuscript EWD 1036.Google Scholar
  20. Dybå, T., Kampenesa, V. B., & Sjøberg, D. I. K. (2006) A systematic review of statistical power in software engineering experiments. Information and Software Technology, 48(8), 745–755.CrossRefGoogle Scholar
  21. Eden, A. H., Hirshfeld, Y., & Kazman, R. (2006) Abstraction classes in software design. IEE Software, 153(4), 163–182. London, UK: The Institution of Engineering and Technology.Google Scholar
  22. Einstein, A. (1934). Mein Weltbild. Amsterdam: Querido Verlag.Google Scholar
  23. Fasli, M. (2007). Agent technology for E-commerce. London: Wiley.Google Scholar
  24. Fetzer, J. H. (1993). Program verification. In: J. Belzer, A. G. Holzman, A. Kent, & J. G. Williams (Eds.), Encyclopedia of computer science and technology (Vol. 28, Supplement 13). New York: Marcel Dekker Inc.Google Scholar
  25. Gamma, E., Helm, R., Johnson, R., & Vlissides, J. M. (1995). Design patterns: Elements of reusable object-oriented software. Reading: Addison-Wesley.Google Scholar
  26. Georick, W., Hoffmann, U., Langmaack, & H. (1997). Rigorous compiler implementation correctness: How to prove the real thing correct. Proc. Intl. Workshop Current Trends in Applied Formal Method. Lecture Notes in Computer Science, Vol. 1641, pp. 122–136. London, UK: Springer-Verlag.Google Scholar
  27. Gibbs, W. W. (1994) Software’s chronic crisis. Scientific American, 271(3), 86–95.CrossRefGoogle Scholar
  28. Hall, A. (1990). Seven myths of formal methods. IEEE Software, 7(5), 11–19.CrossRefGoogle Scholar
  29. Hoare, C. A. R. (1969). An axiomatic basis for computer programming. Communications of the ACM, 12(10), 576–583zbMATHCrossRefGoogle Scholar
  30. Hoare, C. A. R. (1986). The mathematics of programming: an inaugural lecture delivered before the Univ. of Oxford on Oct. 17, 1985. New York: Oxford University PressGoogle Scholar
  31. Hoare, C. A. R. (2006). The ideal of program correctness. Transcript of lecture, Computer Journal. London: British Computer Society. Available: (Accessed Mar. 2007)
  32. IEEE Std 610.12-1990 (1990). IEEE Standard Glossary of Software Engineering Terms. Los Alamitos: IEEE Computer Society.Google Scholar
  33. Knuth, D. E. (1968). The art of computer programming, Vol. I: Fundamental algorithms. Reading, MA: Addison Wesley.Google Scholar
  34. Knuth, D. E. (1974). Computer science and its relation to mathematics. The American Mathematical Monthly, 81(4), 323–343.zbMATHCrossRefMathSciNetGoogle Scholar
  35. Knuth E. D. (Undated). On the game of life, free will and determinism.(Video). Available: (Accessed Mar. 2007)
  36. Kuhn, T. (1962). The structure of scientific revolutions. Chicago: University of Chicago Press.Google Scholar
  37. Loux, M. J. (1998). Nominalism. Routledge Encyclopedia of Philosophy (electronic Ver. 1.0). London and New York: Routledge.Google Scholar
  38. Mahoney, M. S. (2002). Software as science—Science as software. In: U. Hashagen, R. Keil-Slawik, & A. Norberg (Eds.), History of computing: software issues. Berlin: Springer Verlag.Google Scholar
  39. Mainzer, K. (2004). System: an introduction to systems science. In: L. Floridi (Ed.), The Blackwell guide to philosophy of computing and information. Malden: Blackwell.Google Scholar
  40. Markie, P. (2004). Rationalism vs. Empiricism. In: E. N. Zalta (Ed.), The Stanford Encyclopedia of Philosophy. Available (Accessed Mar. 2007).
  41. McCarthy, J. (1960). Recursive functions of symbolic expressions and their computation by machine, Part I. Communications of the ACM, 3(4), 184–195.zbMATHCrossRefMathSciNetGoogle Scholar
  42. McCarthy, J. (1962). Towards a mathematical science of computation. Proceedings of IFIP.Google Scholar
  43. McClure, R. M. (2001). Introduction. Addendum to: (Naur & Randell 1969). Available: (Accessed Mar. 2007)
  44. McLaughlin, B. (2004). Computationalism, connectionism, and the philosophy of mind. In: L. Floridi (Ed.), The Blackwell guide to philosophy of computing and information. Malden: Blackwell.Google Scholar
  45. Meyer, B. (1997). UML—The Positive Spin. American Programmer, 10(3). Available: (Accessed Mar. 2007)
  46. Milner, R. (2007). Memories of Gilles Kahn, and the informatic future. Transcript of speech before Colloquium in memory of Gilles Kahn, INRIA Research Institute.Google Scholar
  47. Naur, P., & Randell, B. (Eds.) (1969). Software Engineering: Report of a conference sponsored by the NATO Science Committee (7–11 Oct. 1968), Garmisch, Germany. Brussels, Scientific Affairs Division, NATO.Google Scholar
  48. Newell, A., & Simon, H. A. (1976). Completer science as empirical inquiry: Symbols and search. Communications of the ACM, 19(3), 113–126.CrossRefMathSciNetGoogle Scholar
  49. Olson, E. T. (1997). The ontological basis of strong artificial life. Artificial Life, 3(1), 29–39.Google Scholar
  50. OMG (Object Management Group). (2005). Unified Modeling Language (UML), Ver. 2.0. Technical report (2005). Available (Accessed Mar. 2007)
  51. Ophir, S. (2006). Computer science and commercial forces: Can computer science be considered science? In Proc. 4th European conf. Computing And Philosophy—ECAP, Trondheim, Norway.Google Scholar
  52. Parnas, D. L. (1972). On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12), 1053–1058.CrossRefGoogle Scholar
  53. Perry, D. E., & Wolf, A. L. (1992). Foundation for the study of software architecture. ACM SIGSOFT Software Engineering Notes, 17(4), 40–52.CrossRefGoogle Scholar
  54. Pierce, J. R. (1968). Keynote address. Conference on Academic and Related Research Programs in Computing Science (5–8 June 1967). Reprinted in: A. Finerman (Ed.), University Education in Computing Science. New York: Academic Press.Google Scholar
  55. Popper, K. (1963). Conjectures and refutations: The growth of scientific knowledge. Routledge, London.Google Scholar
  56. Putnam, H. (1975). Minds and machines. In: Philosophical papers, Vol. 2: Mind, Language, and reality. pp. 362–385. Cambridge: Cambridge University Press.Google Scholar
  57. Quine, W. V. O. (1969). Natural kinds. In: Ontological reality and other essays. Columbia University Press.Google Scholar
  58. Rapaport, W. J. (2007). Personal correspondence.Google Scholar
  59. Rapaport, W. J. (2005). Philosophy of computer science: An introductory course. Teaching Philosophy, 28(4), 319–341.MathSciNetGoogle Scholar
  60. Raymond, E. S. (1996). The New Hacker’s Dictionary (3rd ed.). Cambridge: MIT Press.Google Scholar
  61. Simon, H. A. (1969). The sciences of the artificial (1st ed.) Boston: MIT Press.Google Scholar
  62. Sommerville, I. (2006). Software engineering (8th ed.) Reading: Addison Wesley.Google Scholar
  63. Stack, G. S. (1998). Materialism. Routledge Encyclopedia of Philosophy (electronic Ver. 1.0). London and New York: Routledge.Google Scholar
  64. Steinhart, E. (2003). Supermachines and superminds. Minds and Machines, 13(1), 155–186.zbMATHCrossRefGoogle Scholar
  65. Stoy, J. E. (1977). Denotational semantics: The Scott-Strachey approach to programming language theory. Cambridge: MIT Press.Google Scholar
  66. Strachey, C. (1973). The varieties of programming language. Tech. Rep. PRG-10 Oxford University Computing Laboratory.Google Scholar
  67. Szyperski, C. A. (2002). Component software—Beyond object-oriented programming (2nd ed.). Reading: Addison-Wesley.Google Scholar
  68. Turing, A. M. (1936). On computable numbers, with an application to the entscheidungsproblem. In Proc. London Math. Soc. Ser., 2, 43(2198). Reprinted in Turing & Copeland (2004).Google Scholar
  69. Turing, A. M. (1950). Computing machinery and intelligence. Mind, 59, 433–460.CrossRefMathSciNetGoogle Scholar
  70. Turing, A. M., & Copeland, B. J. (Ed.) (2004). The essential Turing: Seminal writings in computing, logic, philosophy, artificial intelligence, and artificial life plus the secrets of Enigma. Oxford, USA: Oxford University Press.Google Scholar
  71. Turner, R. (2005). The foundations of specification. Journal of Logic & Computation, 15(5), 623–663.zbMATHCrossRefGoogle Scholar
  72. Turner, R. (2007). Personal correspondence.Google Scholar
  73. Wegner, P. (1976). Research paradigms in computer science. In Proc. 2nd Int’l Conf. Software engineering, San Francisco, CA, pp. 322–330.Google Scholar

Copyright information

© Springer Science+Business Media B.V. 2007

Authors and Affiliations

  • Amnon H. Eden
    • 1
    • 2
  1. 1.Department of Computer ScienceUniversity of EssexColchesterUK
  2. 2.Center for InquiryAmherstUSA

Personalised recommendations