Must Read CS Books For Self Self-Taught Programmers
It really depends on what you feel you're missing and what you're hoping to do (definitions of "daily work" vary widely). If you're looking to get up on theory by doing your own program of sorts, you could do worse than start with these (in roughly this order):<p>Structure and Interpretation of Computer Programs - Abelson, Sussman, and Sussman<p>Introduction to Algorithms - Cormen, Leiserson, Rivest, and Stein<p>The Art of Assembly Language - Hyde<p>a digital logic book (not sure which is most recommended), and an architecture book (see reply by tftfmacedo)<p>Modern Operating Systems - Tanenbaum<p>Introduction to the Theory of Computation - Sipser<p>Compilers: Principles, Techniques, and Tools - Aho, Lam, Sethi, and Ullman (a.k.a. "Dragon Book")<p>Programming Language Pragmatics - Scott<p>A database design book (one that covers Relational Algebra, not just a book on SQL), and maybe a book on Networks. Also, Roy Fielding's paper on REST is both academic and applicable (and more approachable than you'd expect of a Ph.D paper). If you want to go all the way, an undergraduate program usually also has Calculus, Discrete Math, Linear Algebra, and Statistics. Some schools would also require Physics and Differential Equations. I'm sure I'm missing some topics, too, particularly electives.<p>If you can get through those and the associated problem sets, you'll have a better foundation than most.