Structure and Interpretation of Computer Programs. If you can only buy one book about Computer Science in your life, that's the one to get. It's not dirt cheap (even used), but it's an incredible value nonetheless:
I like the Scheme version :) haven’t worked through the newer one. I do understand their impetus for it though (even if I personally don’t agree with it).
That’s what made his classes brilliant. IIRC, the exams were not questions you could memorize the answers to. Instead they were problems you had to solve in real time. You had to exercise the problem solving and algorithm building you learned throughout the course and discover the solution. I never felt so smart, even now, than when I figured out the solution to a difficult problem on those exams.
Do you already have the standard undergraduate books?
* Introduction to Algorithms (Cormen, Leiserson, Rivest, Stein)
* Compilers: Principles, Techniques, and Tools (Aho, Lam, Sethi, Ullman)
Knuth is also great to have as a reference - I've only needed to consult it professionally two or three times, but it's saved a _lot_ of time when I have.
That seems unusually high? ISBN 978-0262046305 is the latest edition, which I see on Amazon.de for 116€ (and you can get older/used editions for less).
Really hard to make a recommendation without knowing what you know, where you’re at in your computer science education, what you’ve already read and liked, etc.
My favorite is The Turtle Book "Computer Science" by Aho & Ullman. I also liked the books "Computer Algorithms" (by Baase et al), The Wizard Book, The Dragon Book, The Tiger Book (about compiler) and "The Comet Book" (about os)
It would be nice if people could add why their suggestion is the best value computer science book, now it's just a bunch of suggestions without any context.
- Grokking Algorithms: Simple and to the point explanations of common algorithms with pictorial representations.
- Let Over Lambda: A Guide to making the most of macros in Common Lisp.
- Starting Forth: Never used or hear of Forth? No problem, this book teaches this very unique language in terms that are easy to grasp. Forth is perhaps my favorite way to program microcontrollers.
Oh, and one book I rather enjoyed was Ideas That Created the Future, which is not exactly a textbook (but is probably used by the author as such) so much as a survey on the history of computer science via primary sources. Each source has a 1-2 page summary providing context, but the meat is reading the original papers on computer design, Complexity Theory, various papers on logic and proofs and proofs of software properties, theorem provers, NP completeness, neural networks, etc.
One thing I learned is that the idea of a computational neural network predates actual working general purpose computers by a few years, and is actually cited in the construction of computers as an inspiration.
Mm, okay. ThriftBooks is my go-to for used books, because I first discovered them through Internet Archive. However, IA's partnership is with Better World Books, (BWB) which is a completely different site.
Checking orders, there was a switch from BWB to ThriftBooks. I don't know how the switch happened, but you'd think I would notice when receipts stopped having anthropomorphized messages.
So, I'm not able to link IA with ThriftBooks, unless OpenLibrary linked them and I happened to stick with them after the first real delivery.
(Or, maybe ThriftBooks happened to have better inventory at the time.)
> advertising
With the above as context--well, it worked for me. Classics one or two orders of magnitude cheaper is a good deal.
That brings us to
> recommending books
Hard to say¹ without more context. First, I'll add a constraint: don't get only one book priced at 100 euro, especially since many books in this thread are inarguably valuable for much less. Then really, what OP can afford is a collection of books. Then, there is no "one best" book.
For the sheer number of exercises, can't go wrong with Deitel & Deitel How to Program series: Java, C, C++, or Python. I know folks will scream, but without much more to go on, there's enough material to get solid on fundamentals.
It's not the best book on CS, but it's one of the best to get started.
The way OP mentions "circle of interest" makes me assume they have some knowledge of things, so let's skip Data Structures & Algorithms, and head straight to electives: operating systems, databases, advanced algorithms, functional programming, software engineering, networking, assembly, etc.
The solution here is to buy multiple books from the suggested ones in this thread, where the books
* are not already available for free
* are used books
Along with the consideration for book bundles from Humble Bundle, where past publishers have included Pragmatic Programmer, Manning, Mercury, O'Reilly, Packt, Apress, Wiley, and No Starch Press.
But that would only likely be available after converting from Amazon to a generic gift card.
There's a few solid free books on algorithms, but I'm not aware of anything comparable to "Concepts, techniques, and models of computer programming" by Peter Van Roy and Seif Haridi available for free, (besides SICP and HtDP) so my advice is to check it out and then buy it.
I'm biased towards more practical books but here you go
- Designing Data-Intensive Applications by Kleppmann - not in your circle of interest necessarily but not in your circle of non-interest either.
- Introduction to the Design & Analysis of Algorithms by Levitin - not very popular but a great book. Interestingly, it groups algorithms around design techniques e.g. decrease-and-conquer, divide-and-conquer, greedy, DP.
- Algorithms by Sedgewick and Wayne - great algorithms book if your main programming language is Java, I keep coming back to it.
In one of them, Bentley shows some advanced uses of awk, involving its associative arrays, in a short awk program to do some sort of processing, and says that an equivalent C program would be a few hundred lines, IIRC.
https://www.amazon.com/Structure-Interpretation-Computer-Pro...