Computer science is what came out of asking: what kind of maths can actually be effectively carried out in the physical world? Theoretical computer science, looks at the more theoretical (as opposed to applied) aspects of this question.
The nature of computation by Moore and Mertens (looks like a nice book). Good reads page and Amazon page
Leonid A. Levin. Fundamentals of Computing.
Turing triad (as defined by Leslie Valiant), see his PAC book):
These pattern is followed by most computational theories, like:
...need to organize this better.
Structure and interpretation of computer programs Companion site
Functional programming
http://learnyouahaskell.com/introduction
Higher-order functions. Composition.
Examples in JS: .filter, map, reduce