Live data from Hacker News

Ask HN: I'm looking for a good book on the fundamentals of CS

news.ycombinator.com

131–140 of 190 posts

Re: Ask HN: I'm looking for a good book on the fundamentals of CS

#131

I had a good relantionship with Segdewick's books, before being turned off by Cormen a few times. They are less math focused, and overall have a beginner friendliness to them. They won't take you by the hand an explain things like you are 5, but nevertheless they are more easy to digest. Also as a non-popular opinion in this current age, I recommend you to learn how to implement your algorithms in C, rather than an e…

I'm a big fan of Sedgewick's books myself. I like how he has parallel series of his books, for different programming languages. So you get "Algorithms in Java" or "Algorithms in C++" or whatever, depending on your preference. I think he has at least C, C++, and Java versions.

https://www.cs.princeton.edu/~rs/

Re: Ask HN: I'm looking for a good book on the fundamentals of CS

#132
I liked Algorithms by Dasgupta-Papadimitriou-Vazirani

http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-...

It's written in an approachable, almost conversational style.

Beyond that, for a broader view of algorithms and computing that includes AI, there's Artificial Intelligence: A Modern Approach by Russell/Norvig. My favorite part of that book is actually the "Foundations of Artificial Intelligence" which goes into the deep history of computation (as far back as ancient and medieval times).

Re: Ask HN: I'm looking for a good book on the fundamentals of CS

#133
Hope you're searching first, lots of book threads every few months here:

a month ago Ask HN: What are some of the best well-written books on computer science? https://news.ycombinator.com/item?id=29182386

3 months ago Ask HN: What are your top 5 favorite computer books? https://news.ycombinator.com/item?id=28308141

7 months ago Ask HN: Best book for software engineers (besides the well-known ones)? https://news.ycombinator.com/item?id=26833319

Re: Ask HN: I'm looking for a good book on the fundamentals of CS

#134

Hope you're searching first, lots of book threads every few months here: a month ago Ask HN: What are some of the best well-written books on computer science? https://news.ycombinator.com/item?id=29182386 3 months ago Ask HN: What are your top 5 favorite computer books? https://news.ycombinator.com/item?id=28308141 7 months ago Ask HN: Best book for software engineers (besides the well-known ones)? https://news.ycomb…

Reminder: you can enjoy and contribute to the thread without upvoting

Re: Ask HN: I'm looking for a good book on the fundamentals of CS

#135
post #109
post #64

I highly recommend "An Introduction to General Systems Thinking, by Gerald Weinberg. An orthogonal piece of advice that I got from a different book of Gerald Weinbergs' is to learn 3 or 4 Very Different languages simultaneously, to grasp the enormous difference between them all. In 2021 I'd recommend C (lowest level other than assembler: 1st caveat, I haven't looked at Rust) and then at least one Lisp-family language…

I would personally de-recommend Python. It essentially has no unique paradigm or even one that it does really well. I'd replace the Python suggestion with an ML-dialect such as F# or Ocaml. I agree with you though. I think everyone needs a bit of experience with a Lisp/Scheme, an ML dialect, a Smalltalk, Elixir/Erlang, Prolog, and Forth. And I think it's better to think in paradigms rather than languages in that you…

Python contains CS clusterfumbles like calling evaluated expressions "literals", failing to distinguish between variable initialization and assignment, and evaluating the default expressions of optional arguments at function definition time, rather than call time.

Someone learning CS who already knows Python has to unlearn and relearn material in the area of programming language semantics.

Python is fine for introducing complete beginners to algorithmic thinking. Almost anything is.

Re: Ask HN: I'm looking for a good book on the fundamentals of CS

#136
post #83

A lot of recommendations here, so I would like to ask for some (hope that's allowed). - Operating Systems. I had a course on OS (I'm a student), but I felt it was kind of lacking, and would like to explore more. - Compilers? Seems very interesting Also I've started with a bit of haskell to learn functional programming, would love some pointers from the more experienced people here :D (Also networking?? So much to lea…

If you already know the basics of what an OS does, it's best to just get into some more detail of how it does it. "The Design and Implementation of the FreeBSD operating system" is a great book for the structure of a *nix system. If you understand the design of one of these systems, none of the others is hard to figure out.

Beyond that, if you want a more academic read it's good to read up on some other architectures. This paper on the history of the L4 microkernel family is a really good discussion of the design decisions and evolution of that system that gets into some classic OS issues: https://trustworthy.systems/publications/nicta_full_text/898...

Other kernel designs worthy of interest are exokernels and unikernels. Also with regard to systems design I've always liked "end-to-end arguments to system design" (https://web.mit.edu/Saltzer/www/publications/endtoend/endtoe...) and another paper on the duality of OS structures (http://occs.oberlin.edu/~ctaylor/classes/341F2012/lauer78.pd...)

Re: Ask HN: I'm looking for a good book on the fundamentals of CS

#137
I can't recommend How to Design Programs (HtDP) enough.

The authors care deeply about not just the content, but the learning process itself. It may at times feel repetitious and even boring, but it's a principled introduction to CS which will set you up for success in ANY programming language. And the book is free online :)

https://htdp.org/

From here you can graduate to lower level programming concepts in C (or Rust), more practical languages like Ruby, Python or even Java for high level application design. Basically, it's time to learn about full-fledged memory management one way or another. Don't miss out on some type theory along the way, remembering that they are just codified data definitions and function signatures.

Re: Ask HN: I'm looking for a good book on the fundamentals of CS

#138
I’m addition to all of the canonical texts folks have posted here, it might be worth noting the ACM has a publication in which they define what makes a complete Computer Science curriculum:

https://dl.acm.org/doi/10.1145/240483.240502

This is behind their paywall, and I would discourage you from paying, but someone might be able to find the same document with a simple web search.

Re: Ask HN: I'm looking for a good book on the fundamentals of CS

#139
I’m addition to all of the canonical texts folks have posted here, it might be worth noting the ACM has a publication in which they define what makes a complete Computer Science curriculum:

https://dl.acm.org/doi/10.1145/240483.240502

This is behind their paywall, and I would not discourage you from paying, but someone might be able to find the same document with a simple web search.

Re: Ask HN: I'm looking for a good book on the fundamentals of CS

#140
Algorithmics by David Harel is not much mentioned anymore, but it's really good if you can find it. An easy and inviting read, it was written as a popular book not a textbook but nevertheless covers many topics with very thorough and clear explanations, and also touches on history and culture. I recall there were several versions with different titles - Algorithmics: The Soul of Computing was, I think, a cut-down version.

Seconding Petzold's Code for hardware and low-level programming. Also seconding Downey's Think Python (which has appeared in several versions with different titles). It is an easy read but is a bit deeper than many introduction to Python books.

Also seconding Wirth's Algorithms + Data Structures = Programs but it requires a lot more concentration and study than the previous suggestions. It is also old-fashioned, from the late 1970s I think, uses Pascal as its programming language. It teaches and celebrates a rigorous, economical programming method and coding style which is not much in vogue any more.

Post reply on HN