- SICP to learn about abstraction(s), divide-and-conque, programming in the small.<p>- Knuth TAO - reference for algorithms and data structures, as well as reasoning about runtime, and to learn to what length true perfectionists can go (and to also learn that if you live like that you may get famous but you will never live long enough to deliver chapter 12 of the book you promised your publisher as a Ph.D. candidate).<p>If you only ever read two books and you want to know what is computer science, these two represent the very best in writing that the discipline has produced. But there's plenty more fabulous work, of course:<p>- Cormen et al. and Skiena about algorithms and data structures - to learn and to become familiar with the standard inventory<p>- K&R - C programming
- Stevens - to learn about UNIX and systems programming.<p>- ...and any random Python text book<p>But after that standard canon one could branch out into the various sub-fields of CS, from compilers (dragon book, Wirth), formal languages & automata (Aho, Hopcroft & Ullman; Salomaa), over machine learning (Murphy; Hastie/Tabshirani/Friedman), databases and data mgt. (Lemahieu/vanden Broucke/Baesens), software engineering (Sommerville), ... each of which have their standard texts.
I don't understand why this list does not have Sedgewick, Wayne's book Algorithms.<p>That book was as good as a book gets.<p>It really explains concepts and teach algorithms to you, and not shying away from the math.<p>I would always suggest the combination of SW, Skiena, and DPV to learn and get a full picture of Algorithms.