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 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 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 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:
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
- functional programs
- There are few purely functional languages;
languages which are largely functional include
- logic programs
- Prolog programs are largely logic programs.
- algorithmic / procedural programs
- This covers most programming languages, such as
Modula-3, C, Pascal, Fortran etc.
- 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