I've always been a largely independent learner gleaning what I can from Wikipedia and various books. However, I fear that I may have biased my self-education by inadvertent omission of topics and concepts. My goal is to teach myself the equivalent of an undergraduate degree in Computer Science from a top university (doesn't matter which one).
To that end, I've purchased and started reading a few academic textbooks:
As well as a few textbooks I have left over from classes I've taken at a mediocre-at-best state university:
My questions are:
Software engineering books are welcome, but in the context of academic study only please. I'm aware of Code Complete and the Pragmatic Programmer, but I'm looking for a more theoretical approach. Thanks!
Biggest two omissions I see:
For operating systems I prefer the Tanenbaum instead of the Silberschatz but both are good:
And about the order, that would depend on your interests. There aren't many prerequisites, automata for compilers is the most obvious one. First read the automata book and then the dragon one.
I don't know all the books you have, but the ones I know are good enough so that may mean the others are decent as well.
You are missing some logic and discrete math books as well.
And let's not forget some database theory books!