Book recommendation: basic, broad and solid overview for advanced learners
It is a bit hard to capture all of that. Unfortunately*, the best book is probably The Structure and Interpretation of Computer Programs but that assumes the person is willing to do some programming. 

But one can learn a lot on Paul Graham's Essay Page, just by choosing interesting titles to explore. 



*Unfortunately = work involved, not just browsing.