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.
Datastructures and languages: Formal syntax and semantics. Context-free grammars and applicative grammars. Languages as algebraic spaces.
Into the future
Natural Language Understanding