MIT lecturer Ana Bell discusses books to learn CS and programming
Her recommendations are poor. You dont read books on software development methodologies when "learning to program". Nor would you learn type theory. That's like suggesting to someone who wants to learn to sail, the intricacies of weaving cloth fibers into a sail.There's a huge tower of abstractions to deal with in learning any new discipline, and it's important to enter at an appropriate level, ie, one that engages the learner to continue because the relationship to the end goal is clear (to the learner).I would suggest CLRS to someone mathematically mature for the best introduction to algorithms. I don't have a book suggestion for learning to program in some language, but I do consider this a far less difficult and important obstacle compared to learning to think algorithmically.When the interest is piqued people will naturally dig deeper and eventually find out for themselves, other aspects in the tower, be it silicon doping or reinforcement learning.