# Computer Science

Created | Updated Jul 21, 2002

Computer science has recently become one of the most lucrative degrees to have. Telling people that your degree is in computer science is likely to evoke images of programmers slaving over a hot keyboard, or of a geeky character pottering around a large mainframe with a mug of coffee clutched in his hand.^{1} This image is likely due, in part, to the recency of computer science as a visible field. Before the PC Revolution of the Eighties, computers were vaguely heard of and tended to be thought of as 'electronic brains', number-crunching machines that were owned by big-business and governments.^{2} In a similar way, most programmers for these systems tended to be the computer scientists that had developed them. Because of this beginning, and because the best programmers tend to have had teaching in the theory behind computers, computer scientists have become synonymous with programmers and computer science has become seen (by some programmers as well) as nothing more than a form of engineering.

Contrary to these impressions, computer science can be best described as a branch of mathematics. The foundations for such a view lie with heavyweight mathematicians such as Bool, Cantor, Church, Turing and Curry. This entry will trace the history of computer science as the maths of language, from the first order logic of Bool to the applicative grammars of Curry and the development of the two main models of computations -- the imperative model of Turing and the functional model of Church and Curry.

### Truth and beauty

The algebras of George Bool.

### The Madman and the Librarian

Cantor's sets, Hilbert's programme and Russel's paradox (resolution by TYPED set theories).

### The death of a dream

The ending of Hilbert's programme at the hands of Godel.

### The infinite ticker-tape parade

The Turing Machine and Turing Completeness.

### Fallout from Sets

Lambda calculus and function theory as the remains of a solution to Russel's paradox.

### Communicating ideas

Datastructures and languages: Formal syntax and semantics. Context-free grammars and applicative grammars. Languages as algebraic spaces.

### Into the future

Natural Language Understanding

^{1}This image persists despite the likelyhood of a modern computer programmer to be drinking espresso rather than last week's coffee kept tepid by the coffee maker.

^{2}The figure proposed by IBM in the Fourties for the number of computers that would be needed worldwide was a few dozen.