Take the 2-minute tour ×
Computer Science Stack Exchange is a question and answer site for students, researchers and practitioners of computer science. It's 100% free, no registration required.

I am preparing to graduate high school. Although I do not intend to study computer science in college, I feel like it might be useful to familiarize myself with the theoretical CS concepts taught in academia (eg. algorithms, structures, compilers). Can you recommend books that are either frequently used in current CS curricula or equate what one would learn in a CS curriculum?

Right now, I am planning on buying The C Programming Language, The Algorithm Design Manual, Algorithms + Data Structures = Programs, and Compilers: Principles, Techniques, and Tools.

share|improve this question

closed as primarily opinion-based by Luke Mathieson, D.W., FrankW, Raphael Feb 28 at 8:40

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

    
re close votes because opinion based-- think its worthwhile (reference) question in that there are only a handful of leading books that are widely used & the voting can also help determine their popularity... –  vzn Feb 28 at 4:31
2  
CS is like dancing. You are unlikely to learn it only by reading books. –  babou Feb 28 at 8:01
1  
There are good books nobody knows and mediocre books with wide use. Also, tastes and needs differ. Best way to find good books is go to a library and peek into many. –  Raphael Feb 28 at 8:41
1  
I don't see why this question is primarily opinion-based! Can you recommend books that are either frequently used in current CS curricula or equate what one would learn in a CS curriculum? Although the background might be. –  usul Feb 28 at 15:09
    
There are many, many resources available on the 'net. Also, which books are useful for you depends quite a lot on exactly what you try to do. To understand the inards of an operating system requires a different set than networking, compilers have their own extensive theory, for numerical methods yet another set is essential. –  vonbrand Mar 1 at 17:38
add comment

2 Answers 2

up vote 7 down vote accepted

For Computer Science, I would recommend you

Computer Science: An Overview 11th J. G. Brookshear.

If you are more interested, you can attend one of the online courses, you can register for free and finish these courses online with exercises. I recommend you one of these:

  • An Introduction to Computer Science from Harvard, more informations you can find here EDX
  • Computer Science from Stanford, more info here

Algorithms, you can find relevant online courses following these books on EDX and Coursera as well. Depends on how much time you have and want to spend on these subjecs, and how deep you want to go.

Algorithms (4th Edition) by Robert Sedgewick and Kevin Wayne

or

Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein

share|improve this answer
add comment

The theoretical "core" of a CS degree would consist of (1) basic data structures and algorithms, (2) formal languages, automata, complexity, computability.

For the first, "CLRS" is the most-used textbook: http://mitpress.mit.edu/books/introduction-algorithms

For the second, Sipser: http://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/113318779X

On the more "applied" side there is systems, programming languages, and of course experience with coding. Systems includes for instance operating systems and compilers. The dragon book might be a classic but I would guess overkill for what you're looking for. The best way to learn OS or compilers might be to just take a class in it; I'm not sure if there are "canonical" textbooks. For a textbook that hits lots of these basics, though, SICP comes highly recommended and is free online: http://mitpress.mit.edu/sicp/ . If you are interested in learning more programming languages and seeing variety, I would look up "Learn You a Haskell For Great Good" and SICP as mentioned above. For the theoretical side, maybe something like Pierce's "Types and Programming Languages"?

I would not spend time and money on language-definition or tutorial books like "The C programming language". I'd learn and practice programming online instead. Sites like topcoder's algorithms contests, SPOJ, and projecteuler provide good practice and you can find tutorials to get you going.

There is also some mathematics background, but you can go far on very little: linear algebra, calculus, hopefully some practice with probability and combinatorics.

share|improve this answer
    
I'd recommend against SICP. It is an outstanding book, written for/in an outstanding language. But sadly far from mainstream. And "The C Programming Language" isn't "just" a "learn to code in language X" book, it goes far beyond. If you are interested at least a bit in C, it is a must. No other book on C comes close, IMVHO. For the "big picture", Jon Bentley's "Programming Pearls" is an eye opener in more than one area. –  vonbrand Mar 1 at 17:42
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.