While I admire both *The Art of Computer Programming* and *Structure and Interpretation of Computer Programs*, I thought I'd mention two other books in answer to the first of your two questions. 

J. Glenn Brookshear's *Computer Science: An Overview*, 10th ed. is intelligently organized and quite well written. It also has worthwhile chapter review problems and useful bibliographies at the end of each chapter.

David J. Eck's *The Most Complex Machine: A Survey of Computers and Computing* might be worth looking at. If I remember correctly, Eck received his PhD in mathematics from Brandeis University in 1980.