John's overview of Computer Science

This is still in preparation!

I think it is important to see how the different areas of a subject fit together, and encourage students to develop an awareness of the subject as a whole. I have my own view (which is, of course, right) on how Computer Science is structured; here is a summary, as best I can express it in a few minutes of HTML-writing:

The process and meaning of computation
This is the core of computer science, and contains several tightly linked areas:
The representation of computable values
Computation requires things in the domain or field of the computation to be represented in the computer; representable values take simple forms such as numbers and text strings, or more complex values built from these. There are two aspects to representing a value in a computation system:
The actual meaning of a value (outside the system in which it is represented) is called the extension of the value
The form in which a value is represented (inside the computation system) is called the intension of the value.
The connection between these is called abstraction. (Note: this is not a very good definition of this term!) The subject which covers this area is type theory.
The representation of things to compute
The process of computation requires the computation to be specified within the computing system; this is done through the use of programming languages. Specifications for computation take various forms including:
functional programs
There are few purely functional languages; languages which are largely functional include ML.
logic programs
Prolog programs are largely logic programs.
algorithmic / procedural programs
This covers most programming languages, such as Modula-3, C, Pascal, Fortran etc.
Since programs are represented inside the computation system, they may be worked on by it as data values. There are several models of computation, which are equally powerful: that is, any computation which can be specified in one of them can be specified in any of them. It is possible to convert programs from any one of these to any others; a common form of this is compilation.
The process of computation
This is what makes processes from programs.
I think this is more of a subject in its own right, that builds on several subjects including computer science. It is, however, rightly taught in computer science courses.
Computer graphics
Like communications, I see this as a separate subject from computer science itself... it is more of an application of computer science.

John C. G. Sturdy
[John's home] Last modified: Sun Jun 10 21:39:56 GMT Daylight Time 2007