Research paradigms in computer science

  • Authors:
  • Peter Wegner

  • Affiliations:
  • -

  • Venue:
  • ICSE '76 Proceedings of the 2nd international conference on Software engineering
  • Year:
  • 1976

Quantified Score

Hi-index 0.00

Visualization

Abstract

This paper explores the ramifications of four influential definitions of computer science: 1. Computer science is the study of phenomena related to computers, Newell, Perlis and Simon, 1967 2. Computer science is the study of algorithms, Knuth, 1968 3. Computer science is the study of information structures, Wegner, 1968, Curriculum 68 4. Computer science is the study and management of complexity, Dijkstra, 1969. The first definition reflects an empirical tradition since it asserts that computer science is concerned with the study of a class of phenomena. The second and third definitions reflect a mathematical tradition since algorithms and information structures are two abstractions from the phenomena of computer science. The fourth definition reflects the great complexity of engineering problems encountered in managing the construction of complex software-hardware systems. It is argued in section 1 that computer science was dominated by empirical research paradigms in the 1950s, by mathematical research paradigms in the 1960s and by engineering oriented paradigms in the 1970s. Section 2 illustrates how these three phases of development are reflected in the field of programming languages. The remaining sections consider in greater detail how empirical, mathematical and engineering research paradigms have affected the development of computer science. Section 3 indicates that although the phenomena of computer science are created by man they can be studied using the empirical techniques of the natural sciences. Section 4 distinguishes between “micro computer science” concerned with the study of individual algorithms and “macro computer science” concerned with the study of mechanisms and notations for specifying all algorithms; and between intensional “how” specifications and extensional “what” specifications for programs and computing systems. Section 5 distinguishes between the uses of the term “complexity” in software engineering and the analysis of algorithms and suggests that different terms be used to denote these two kinds of complexity. In a final section it is argued that the diversity of research paradigms in computer science may be responsible both for our difficulties in deciding how computer scientists should be trained and for divergences of opinion concerning the nature of computer science research.