I am a high school student, I know some basic programming in java,python and visual basic. I love combinatorics and I have encountered various cases in which I have found some problems are really hard, and that's that. Sometimes I am told the problem is NP-complete or #P hard or something like that, and apparently that means there's nothing we can do about it.
I have also heard about things like Turing machines, Oracle machines and busy beavers and Halting problem, This sounds like it is very interesting but I don't get it. I would like some textbooks which explain all of these concepts to a mathematician, the less it has to do with actual computers (like the one I'm typing in right now) the better, I want to learn from a mathematicians point of view. An ideal book would be one which assumes I don't know much about computers but have a decent understanding of math.
Note I want to learn these things properly, I don't want a book that vaguely explains it. I would like a proper book.
Thank you very much