• No results found

Sub-question 1: What kind of thing does computer science seek to understand?

In my thesis I have been able to answer the first sub-question. I have shown that computer science seeks to understand algorithmic computation as an abstract concept.

Algorithmic computation is the process of calculating an output from the input of a specific function by following the steps of a

mathematical solution procedure. Humans can perform algorithmic computation. But the steps of an algorithm can be carried out by a machine too.

115 Computer science seeks to understand these algorithms as an aspect of our intuitive concept of structure. In this sense, computer science is akin to mathematics. In my chapter about mathematics, I have shown that mathematics is able to develop understanding through developing our intuitive concept of structure.

We are born with an intuitive idea of the structure of reality. By interpreting reality in terms of this structure, we are able to understand it. We see structural patterns in the winds and waves, in the size of animal populations, in the behavior of human beings and everywhere else. The field of mathematics seeks to further develop this concept of structure.

We understand algorithmic computation as a structure too. This structure was first described by Church (1936) and Turing (1936). Computer science has refined our understanding of this concept of structure. This means that computer science does not actually seek to understand actual algorithmic computation processes. It seeks to develop our understanding of the underlying structure of these processes. Computer science therefore, seeks to develop an

understanding of algorithmic computation as an abstract concept.

Sub-question 2:

How do they develop an understanding of

this thing?

In my thesis, I have also been able to answer my second sub-

question. I have found out how computer science is able to develop an understanding of the structure of algorithmic computation. Computer science combines reasoning about formal descriptions of algorithmic computation with experience with a physical model of algorithmic computation.

In my chapter about mathematics, I explained how the different subfields of mathematics seek an understanding of the different aspects of our intuitive concept of structure. When mathematicians want to further develop their understanding of a specific structure, they try to precisely articulate their intuitive ideas about this structure. This enables them to create a precise description of this structure. This description provides a clear starting point for further inference about this basic structure. By reasoning about

116 this basic structure, they learn what this basic structure entails and what kinds of things follow from it.

Computer science took quite a different route. The study of algorithmic computation started like many other mathematical

subjects. Mathematicians articulated their intuitive ideas about the structure of algorithmic computation into a precise, formalized description (Church, 1936; Turing, 1936). They used this structure to make mathematical inferences. But after a few years, something else happened: the first stored-program computers were developed. Because stored-program computers are physically able to perform the process of algorithmic computation, they are a physical model for this process. By externalizing their understanding of algorithmic computation in a physical device, people had created a machine that was able to do such computations.

Mathematical descriptions of structure bring understanding because they allow you to reason about them. But this ‘description’ could do parts of this reasoning itself. People could observe what their concept of algorithmic computation entailed, by putting this concept to work. This model afforded a kind of interaction that traditional mathematical descriptions could not provide.

Actually working with a model, interacting with the model and

receiving feedback from it, can build a deep form of understanding. This understanding may be much deeper that the understanding you develop by reasoning about a model. By working with the first stored-program computers, many people were able to develop a deep understanding of algorithmic computation, whether they realized this or not.

In the late 1950’s and early 1960’s, the modern conception of a programming language emerged. Programming languages are formal, mathematical descriptions of the structure of algorithmic

computation. These models described algorithmic computation with an abstract concept of the stored-program computer. By offering an abstract description of the stored-program computer, this model built forth on people’s existing understanding of stored-program computers. People were now able to express and communicate the deep

117 understanding of computation they developed by working with actual computers.

This newly developed understanding gave the mathematical study of algorithmic computation a new impulse. People used their existing understanding of stored-program computation to study algorithmic computation in an abstract sense. This new approach proved very fruitful. It enabled the mathematical study of computation to develop into the new field of computer science.

These new computer scientists had taken an interesting detour in their path towards understanding the structure of algorithmic

computation. Usually, people begin with formalizing their intuitions in a mathematical model. Then they use that model as a starting point to develop their understanding further. But in computer

science, many people started with developing their understanding by working with a model (the computer) and then developed formalized descriptions of their understanding.

Research question: How can the field of computer science