title: What books should I read to have an undergraduate education in Computer Science?
body: <p>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). </p>
  
  <p>To that end, I've purchased and started reading a few academic textbooks:</p>
  
  <ul>
  <li><a href="https://rads.stackoverflow.com/amzn/click/com/0262011530" rel="nofollow noreferrer" rel="nofollow noreferrer">Structure and Interpretation of Computer Programs</a></li>
  <li><a href="https://rads.stackoverflow.com/amzn/click/com/0262032937" rel="nofollow noreferrer" rel="nofollow noreferrer">Introduction to Algorithms</a></li>
  <li><a href="https://rads.stackoverflow.com/amzn/click/com/0137903952" rel="nofollow noreferrer" rel="nofollow noreferrer">Artificial Intelligence: A Modern Approach</a></li>
  </ul>
  
  <p>As well as a few textbooks I have left over from classes I've taken at a mediocre-at-best state university:</p>
  
  <ul>
  <li><a href="https://rads.stackoverflow.com/amzn/click/com/0805377581" rel="nofollow noreferrer" rel="nofollow noreferrer">An Introduction to Computer Simulation Methods</a></li>
  <li><a href="https://rads.stackoverflow.com/amzn/click/com/007330929X" rel="nofollow noreferrer" rel="nofollow noreferrer">Calculus: Concepts and Connections</a></li>
  <li><a href="https://rads.stackoverflow.com/amzn/click/com/0131856448" rel="nofollow noreferrer" rel="nofollow noreferrer">Computer Organization and Architecture</a></li>
  <li><a href="https://rads.stackoverflow.com/amzn/click/com/0471694665" rel="nofollow noreferrer" rel="nofollow noreferrer">Operating System Concepts</a></li>
  <li><a href="https://rads.stackoverflow.com/amzn/click/com/013600637X" rel="nofollow noreferrer" rel="nofollow noreferrer">A First Course in Database Systems</a></li>
  <li><a href="https://rads.stackoverflow.com/amzn/click/com/0763737984" rel="nofollow noreferrer" rel="nofollow noreferrer">Formal Languages and Automata</a></li>
  </ul>
  
  <p>My questions are:</p>
  
  <ul>
  <li>What topics aren't covered by this collection?</li>
  <li>Are there any books that are more rigorous or thorough (or even easier to read) than a book listed here?</li>
  <li>Are there any books that are a waste of my time?</li>
  <li>In what order should I read the books?</li>
  <li>What does an MIT or Stanford (or UCB or CMU ...) undergrad learn that I might miss?</li>
  </ul>
  
  <p><em>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!</em> </p>