Beki Grinter

Three Paradigms of Research in Computer Science

In academia, computer science, discipline on October 13, 2009 at 12:25 pm

Recently I wrote about some of the challenges that the new discipline of ICT4D faces (based on my reading of other’s scholarly discussions), and what the discussion of those challenges tells us about Computer Science. I suggested that new fields provide an opportunity to look under the disciplinary hood of Computer Science, because disciplinary challenges are usually reflections of previously hidden assumptions.

But there’s another way to example the assumptions of a discipline which is to read papers that discuss them openly. I recently read Ammon H. Eden’sThree Paradigms of Computer Science” which does just that. He suggests that Computer Science is “unusual” in that it has three mutually exclusive paradigms that guide research in the discipline. The paradigms reflect three questions that in my own experience are asked about Computer Science. Is it a branch of Mathematics, Engineering or the Sciences? Currently he suggests that all three paradigms are at work in the methods and results being produced under the banner of Computer Science. So what are the three models?

Before turning to each of the paradigms note that for Eden, activity in Computer Science is organised around the program (including databases, WWW applications, OS, device drivers, viruses etc…) and as it is written and as it is run. So compares the paradigms based on how they treat the program methodologically, ontologically and epistemologically.

Rationalist Paradigm: Computer Science as a Branch of Mathematics (uses Theoretical CS as example)

As a branch of mathematics, writing programs is treated as a mathematical activity, and “deductive reasoning is the only accepted method of investigating problems.” p144. Programs are mathematical expressions. Research results, i.e., knowledge, focuses on program understanding their completeness (full and formal specification) and emphasizes a priori reasoning.

Technocratic Paradigm: Computer Science as a Branch of Engineering (uses Software Engineering as example)

The technocratic paradigm, Eden argues evolved in the face of arguments that the complexity of systems put the rationalist paradigm out of reach for classes of programs. Eden draws on the DeMillo, Lipton, Perlis (1979) as early evidence of this paradigm. As a branch of engineering, methods emphasize the production of reliable programs. The discipline draws on established engineering methods as well as demonstrating through rigourous testing that programs exhibit reliable behaviours. It’s impractical (or impossible?) to formally specify a program, so we turn to a posteriori knowledge (i.e., results from experience). And in this paradigm, he argues that the ontology is one of nominalism, programs do not exist in the abstract but only in the concrete. But he’s also quick to point out that there’s actually no clear theoretical commitment to the concept of a program by within this paradigm.

Scientific Paradigm: Computer Science as a Natural/Emprical Science (uses Artificial Intelligence as example)

This paradigm draws from Newell and Simon (1976). But, it’s an orientation to Computer Science as an empirical and experimental science. And it includes the experimental science of human-built entities, since programs are made by people. Eden argues that this paradigm differs from the Technocratic paradigm because the focus is not on reliability, but on scientific experimentation that is hypothesis driven, and includes also the use of programs as a tool in a hypothesis driven examination of phenomena that exist in the human or natural world. Methodologically, the scientific paradigm relies on deduction and empirical validation to explain, model and predict program behaviour. The difficulty, in practice, of always being able to deduce program properties means that the paradigm relies on both a priori and a posteriori knowledge. And the ontological assumptions made are that programs in execution are similar to mental processes.

Beki’s take away. I’ve been hearing discussions about whether Computer Science is math, engineering or science for a long time now. This helps understand that the discipline is actually all three. But, now I wonder whether it can survive as all three. Perhaps these are the cleaving points for a future for Computer Science? I also wonder whether my colleagues would subscribe to these paradigms, I’m guessing not all of them do. But I can’t help feeling that within all of this, and perhaps not entirely characterised by this piece, are some important things to understand about Computer Science. It’s definitely got me thinking, and a paper that does that is worth its weight in gold.

Newell and Simon’s Turing Award Speech from 1976.

“Computer Science is an empirical discipline. We would have called it an experimental science, but like astronomy, economics, and geology, some of its unique forms of observation and experience do not fit a narrow stereotype of the experimental method. Never the less they are experiments. Each new machine that is build is an experiment. ACtually constructing the machine poses a question to nature and we listen carefully for the answer by observing the machine in operation and analysing it by all analytical and measurement means possible.”


“We build computers and programs for many reasons. We build them to serve society and as tools for carrying out the economic tasks of society. But as basic scientists we build machines and programs as a way of discovering new phenomena and analyzing phenomena we already know about. Society often becomes confused about this, believing that computers and programs are to be constructed only for the economic use that can be made of them (or as intermediate items in a development sequence leading to use use). It needs to understand that the phenomena surrounding computers are deep and obscure, requiring much experimentation to assess their nature. It needs to understand that, as in any science, the gains that accrue from such experimentation and understand pay off in the permanent acquisition of new techniques; and that it is these techniques that will create the instruments to help society in achieving its goals.”

  1. There’s quite a lot to be read on this topic.

    Have you seen “Clark M. (2003) Computer Science: A hard-applied discipline?, Teaching in Higher Education, 8 (1), 71-87”, at

    • No I haven’t thanks. This is of course related to my interest in ICT4D, and my broader interest in trying to figure out where this is all headed. Thanks for the pointer.

  2. I get so disappointed when I read research like this that, to my read, removes any of the bits of computer science that seem interesting to me from the field. Eden seems to reject that people might be doing valid research in HCI in a computer science department that might involve epistemologies of design, of sociology, of psychology, and yet those considerations are so fundamentally important even in the paradigmatic approaches discussed above (like software engineering) that it seems criminal to neglect them.

    Furthermore, I can’t help but think that this kind of categorization is emblematic of departmental approaches to computer science I keep seeing in academia that make it alright to refuse people tenure or employment because the computer science they’re doing is not computer science enough. And the same intellectual hubris results in graduating students with the intent of having them go out in the world and write programs who may understand all about B-trees but have no idea that one might wish to test a program on a user because that’s not part of the curriculum.

    Have you read Goldstein’s “Foucault among the sociologists”? He makes the point that as disciplines evolve, one of the stages they go through is making a declarative statement about what it is that they do, declaring that their approach is the only valid way to solve that problem, and then getting legal support for allowing only people certified by [their organization] to solve those problems. The American Medical Association is his prime example, but I can’t help but think of it when I see pieces like this, or even things within our own field (I think there was a workshop at CHI last year called “Towards a Unified Definition of User Experience” by the quantitative UX crowd…)

    • I wasn’t quite so pessimistic, I felt that there was room in the Scientific Paradigm that’s one of the reasons I added the lengthy Newell and Simon quotes. Drawing on theory a priori I thought was open to the possibility, although the terminology (which may be as much about my paraphrasing as about the piece itself) might not help.

    • Oh, and one other thing 🙂 If you didn’t see it take a look at my piece on ICT4D, that’s got a lot of what’s not CS and why…

  3. nice summary. this looks like a very useful article to help understand a topic that comes up OVER and over in CS departments. There is room for all 3 approaches.

    Jofish, I think you might be over reacting. I think there is room for the approaches you mention in the three styles this article mentions. On the other hand, that doesn’t mean that someone who practices those approaches exclusively is necessarily a computer scientist.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: