Knuth discusses what distinguishes a "computer scientist" from a "computer programmer" but neatly side steps actually separating the two terms. Choosing to instead explain how computer science is about thinking about problems in a different way. (You'll have to ready the article to see what I mean.)
There is some discussion about Knuth's The Art of Computer Programming. Which Charles Moss tells me is a wonderful read. I'm not sure I believe that but the MSU library has volumes 1-3 in case I want to check them out.
I must quote this because one of my coworkers is just fanitical about C++. To him, everything that is not C++ is crap with the exception of javascript and ruby.
DDJ: You've mentioned Edsgar Dijkstra. What do you think of his work? DK: His great strength is that he is uncompromising. It would make him physically ill to think of programming in C++.
Kunth followed that quote up with some very reassuring comments about trying to find the middle ground between very specific control of code and allowing a library to be used without knowing how it was implemented.
[W]hen you write a program, think of it primarily as a work of literature. You're trying to write something that human beings are going to read. Don't think of it primarily as something a computer is going to follow. The more effective you are at making your program readable, the more effective it's going to be: You'll understand it today, you'll understand it next week, and your successors who are going to maintain and modify it will understand it.