Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
Wikipedia's Computer science.
Structure and Interpretation of Computer Programs (by Harold Abelson and Gerald Jay Sussman with Julie Sussman, foreword by Alan J. Perlis).
Wikipedia's Computability theory.
An interesting area related to computabilty theory: Exact real arithmetic. For me, it was surprising, how it connected problems in mathematical analysis, arithmetic and computability theory.
There are several (equivalent) definitions to the concept of algorithm:
These can be conceived also as computer programming languages -- there should be implemented as many of them as possible. And some of them can be very good for making such jokes as
- self replication programs or self-representing formulas
- metacircular interpreters.
- to write a combinatory logic expression which is equivalent to its own quotation (term representation)
- to specify and implement a programming language, which could be seen as an experimentable, playable incarnation of recursive function theory -- it could yield a playground for learning concepts like iteration theorem, recursion theorem, fixed point theorem
Although there are many differences between Combinatory logic and recursive function theory, I suspect they have some important common features
- both of them allow us to avoid the concept of variable
- both of them can be used well for metaprogramming