Computer Science for All
Every so often discussion amongst scientists in a conference hotel bar turns to the question of what the public should know about their science; specifically, what constitutes the baseline knowledge we would like to be common currency. It can boil down to a discussion of exactly where the boundary of acceptable ignorance lies. There is a reasonable consensus that understanding the scientific method is vital. Beyond that, this sort of debate is rather like compiling a list of the greatest films or sports events, enjoyable but ultimately more revealing of the participants than of the question being addressed. It is in full consciousness of this that I set out to consider the question of what the baseline general knowledge of computer science should constitute. I have organised this in the form of 16 tweets (a limit of 140 characters) as an exercise in self discipline.
Computer Science (CS) is concerned with studying the design, construction & use of information processing systems, particularly computers
CS uses methods from the physical sciences, engineering & social sciences, separately & in combination. It deploys both analysis & synthesis
CS helps develop applications of information processing that are of great social & economic utility. It gives us powerful tools for thought
Information processing systems comprise an assemblage of hardware (a physical machine) & software (instructions to direct its operation)
CS uses artificial languages with a well defined form (syntax) and meaning (semantics) to express software & studies language properties
Communication is intrinsic to information processing systems and to coordinating computation
Computation is a physical process that requires energy to be expended, there are physical limits that constrain computing
Information processing is a natural phenomenon and CS studies natural systems in which computing occurs
The hardware resources of a computer are limited and must be managed with care
When designing information processing systems it is difficult to get them to behave as you would like, errors are common & difficult to spot
Information processing systems are amenable to representation as mathematical objects so that they can be reasoned about & properties proved
To get an information processing system to perform a task you must represent that task & the information it uses in information structures
Methods that can solve problems efficiently are known as algorithms. Different algorithms suit different tasks & have different properties
Modelling & abstraction (disciplined simplification) are used as tools to identify suitable information structures & algorithms
Not all problems can be expressed in terms that allow them to be solved with a computer
Information processing systems interact with people. Understanding interactivity & the context of use is important to develop applications