So what? That's not what the original question was about. It was about how to get someone to be able to program in C#, and giving that person some theoretical books on computer science is probably a very bad idea.
Some people learn very well just by reading a book, most people don't. It's impossible to answer the original question in a good way without knowing how that person learns best, what he knows beforehand, what he's done so far, and what he wants to use programming for.
Are you implying that self-taught programmers can only ever write 'something that compiles'? Because frankly, the best programmers I have met thus far have largely not studied computer sciences.
Yes, but these books teach you more than writing something that compiles. Just read the ToC of SICP: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#...