Live data from Hacker News

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

news.ycombinator.com

181–190 of 190 posts

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

#181

I'll take the opportunity to hop on to this thread and admit that I have never properly learned C (I have seen some code here and there). Considering there are several comments advising on using C as the language to implement the algorithms, what is your recommendation to get started with C? I'm looking for something that is not too long (I have a problem continuing with big books) and yet is concise and teaches the…

If you don't know C at all, hunt down a old book called The C Primer by Hancock and Krieger. It is the best introduction to C for absolute noobs. It was based on teaching notes used at Bell Labs itself and is quite easy to read and follow (i owe my career to having read this book when i was a noob). You can then move on to K&R.

Next you should checkout Data Structures and Program Design in C by Kruse, Tondo et al. This book teaches Algorithms/Data Structures but using good structuring techniques in C. Follow up with Sedgewick's books.

To learn about C and Low-level details there is nothing better than Computer Systems: A Programmer's Perspective by Bryant and O'Hallaron.

Finally, to learn about the dark corners of C checkout C Traps and Pitfalls by Andrew Koenig and Expert C Programming: Deep C Secrets by Peter Van Der Linden.

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

#182
https://fsharpforfunandprofit.com/

Functional programming is not essential but helpful. It will help you fill your tool box. Fsharp for fun and profit teaches the concepts in an easy to learn way.

I'd recommend learning what a monad is. Then you'll see it all over. When you use tools like map or promises.

I wish I'd learnt this earlier.

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

#183

Earlier quoted context omitted.

I’ll sort of second this by saying that Sedgewick’s Algorithms I/II courses on Coursera are top-notch and completely free. He is a truly thoughtful educator. Completing those courses was probably the most useful thing I did when prepping for interviews as part of a career change 6 years ago.

Awesome!! Any other tips you have for someone going through that career change as well? I have a Mathematics BA, and worked as an actuary. I've self taught myself varying degrees of SQL, Python, JavaScript, and C, but I've found it difficult not to feel like an imposter without formal qualifications, even though I know I'm a capable learner and love solving challenging problems.

There are various approaches to becoming a good Software developer, and to be honest I think math fundamentals are as important as algorithmic foundations, which you can probably also pick up quite well with your background.

The one major difference (it is a tendency, not absolute) between software devs who came from CS and those that changed careers into it is a deep passion for computers and how they work. Look at HN, there's a lot of talk about Lisp, Assembly, C etc. although few people actually need it for their jobs. Dealing with these things usually comes from a place of passion more than a place of necessity, and they do make you a better dev, too.

A book I can warmly recommend if you want to see how deep your own interests go is "Principles of Programming languages" by MacLennan. He takes a historical approach, explaining the design principles of programming languages by looking at historically game-changing programming languages that few people still use today. The exercises get progressively more complex, and the last exercise is to design and implement your own programming language, a task I haven't yet done myself.

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

#184

Based on the description you give, you probably want a Data Structures/Algorithms intro. The canonical Algorithms textbook is Introduction to Algorithms by Cormen et al. The MIT OpenCourseware course on Algorithms -- which includes videos and assignments -- follows along with that book: https://ocw.mit.edu/courses/electrical-engineering-and-compu... Note: In your case, I'll recommend against SICP as a first resource,…

CLRS is great, no doubt about it, but I think Sedgewick is probably friendlier to someone studying on his or her own. Note that there are several versions of Sedgewick, which use different languages (I think there are at least C, C++, and Java versions). I'd go with Sedgewick, then get CLRS and Knuth for use as reference material.

If I had to learn algorithms again, and especially if I had to self-study the topic, I would personally choose a somewhat lighter textbook as an entry point, and then use CLRS for more rigor when needed. I used Skiena's excellent book for this purpose, but Sedgewick's might also be a good option. Note that Skiena doesn't cover all the topics in CLRS, but you should find most of it in there. But what you DO find is a much entertaining and motivating read.

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

#185

Earlier quoted context omitted.

Note that a 4th edition of this book (frequently referred to as CLRS) is coming out sometime early next year.

So this one? By Cormen, Leiserson, Rivest, and Stein (CLRS) https://mitpress.mit.edu/contributors/charles-e-leiserson

yep, that's the one!

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

#187
post #87

Earlier quoted context omitted.

Note that a 4th edition of this book (frequently referred to as CLRS) is coming out sometime early next year.

slightly unrelated : the javascript edition of SICP is also coming in April 2022. https://mitpress.mit.edu/books/structure-and-interpretation-...

Truly thanks. I have Scheme and Racket editions, wasn't aware of JS version coming out.

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

#188
post #162

Earlier quoted context omitted.

The Harel book is "Algorithmics: The Spirit of Computing", not "The Soul of Computing". The book was actually originally just called "The Science of Computing" and published in 1987. The second edition in 1992 had the name changed to "Algorithmics: The Spirit of Computing". The third edition in 2004 kept that name and had Yishai Feldman added as coauthor. There was a 2012 reprinting of that which had a new preface wr…

Thank You. I have the 3rd edition and have often wondered whether i should look at the earlier editions for some insights; maybe i should hunt down a cheap used copy to add to my collection.

Oops...it turns out I didn't quite get the early history right.

The first edition was in fact called "Algorithmics: The Spirit of Computing". The book I have, "The Science of Computing" is the trade edition [1] of that, published one year later.

The trade edition has "carefully modified to reflect the slightly less technical background of a typical reader". The structure and much of the text remained the same but some passages were rewritten and "several of the starred subsections that appeared in small font in the original edition have been eliminated". Those often contained proofs and other more mathematical things.

[1] an edition of a book intended for general distribution, as opposed to a text edition which is an edition of a book prepared for use especially in schools and colleges.

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

#189

Earlier quoted context omitted.

I found them extremely accessible, and I was a high-school dropout. (Admittedly a very late dropout, but a dropout nonetheless.) That was back when volume 4 didn't even exist as listicles yet. And, let's face it, the sheer size (and cost) of the thing, even then, was a bit intimidating, but there's nothing in it that can't be followed with a bit of algebra and the barest hint of what the kids these days call "pre-cal…

Concrete Mathematics , which isn't the easiest but also not the hardest math textbook, developed out of a course teaching the math from Chapter 1 of TAOCP . For people who find the first chapter, in particular, intimidating because of the math portions, it may be a good option to study before resuming TAOCP rather than just dropping TAOCP .

+1 for Concrete Mathematics. Learning more about discrete math had an immediate impact on my job as a data scientist.

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

#190
post #10

I'm currently going through TAOCP [1]. So far, seems pretty good (although I found one mistake in an exercise). Also, I can never recommend Computer Systems: A Programmer's Perspective [1] enough. (Also features a rare mistakes in an exercise or two, but that's detail.) And for network protocols, Comer's Internetworking with TCP/IP [3] was just great (you only need volume 1). I've read Stevens' books on socket and IP…

Hm - I've read all three books and even tried working the exercises... I can't say I'd recommend TAOCP to somebody who's looking for a book on the fundamentals of CS. The books are fascinating, don't get me wrong, and I recommend every programmer read them, but they go way too deep into minutiae, while simultaneously ignoring other important topics to be useful as an introduction.

Agreed. I like that there are so many resources for people who want to learn how to program to hit the ground running. Some of the classic textbooks are wonderful for going back and filling in knowledge gaps. I'm at a point in my career where Dover's old proof-based math books start making sense. TAOCP is similar. If you already know the subject matter being covered, you'll have a lot of "Oh THAT'S why it works that way!" moments.
Post reply on HN