Live data from Hacker News

Ask HN: How do I choose the right resource to learn CS fundamentals?

news.ycombinator.com

41–50 of 93 posts

Re: Ask HN: How do I choose the right resource to learn CS fundamentals?

#41
The bad news: you can't know what parts of what you don't know will be important. I can give you some recommendations, but so can everybody else, and they'll be different from each person. I'd look to high-level people in the field like Peter Norvig for recommendations, but that only narrows your options slightly. If you know what you want to do more specifically (i.e. security) try to find recommendations by an expert in that area (i.e. Bruce Schneier). But ultimately you're still hearing opinions, not facts.

The good news: It probably doesn't matter that much. Different programming books will give you different strengths and weaknesses, and that's a good thing because teams need diverse skillsets. It's been years since I wrote production code in a strongly typed, statically typed language, but I did that for so long that I still think in types, and I bring that structured way of thinking to the table in Python/Javascript, which means I avoid a lot of the mistakes those languages allow you to make. I've worked with people who were very comfortable with metaprogramming, which always feels messy to me because it inherently muddles types. It's not a tool I ever reach for, and I push back when people add metaprogramming to codebases, which is a good thing, because too much metaprogramming can be bad. But sometimes, judiciously used, it can be very effective, so people with metaprogramming skill will solve problems that would be very difficult for me to solve. If we had both read all the same fundamental programming books, we'd never have these diverse skills that make our teams effective.

TL;DR: Pick the first one from a reputable organization and do it. Time spent agonizing on this decision is time wasted.

Re: Ask HN: How do I choose the right resource to learn CS fundamentals?

#42
+ The foundation of computer science is Knuth's The Art of Computer Programming. Everything else is footnotes. Knuth is hard. And easy. And everything in between. You won't understand all of it. But you'll have to be ok with not understanding all of CS anyway. Nobody does. You can spend your time searching for a silver bullet. Or you can just read the manual. Knuth is the manual.

+ Bach's The Design of the Unix Operating System describes how operating systems and file systems work. Even Windows describes it's similarities and differences using the same terminology.

+ Hellerstien's Berkeley CS 186 Intro to Databases lectures. Databases get more love at Berkeley than elsewhere. https://archive.org/details/UCBerkeley_Course_Computer_Scien...

Re: Ask HN: How do I choose the right resource to learn CS fundamentals?

#44
The more you engage with the content the more benefits you will get, the knowledge will stay longer.

By engaging I mean doing exercises, implementing algorithms in code, writing pet projects.

This will ensure you understand a topic, not have an impression that you understand. In past, I made a mistake to rush read textbooks till the point I feel I understood the content and ignoring most of the exercises - the exam showed me that I was wrong :)

At the same time, I would not suggest to apply engage mode for every book and chapter - your progress will be slow, and you may lose motivation deep in the middle of some thick textbook, as you may not be able to relate very detailed information there to your current expertise.

Personally, I apply the combination of skimming and engagement.

Re: Ask HN: How do I choose the right resource to learn CS fundamentals?

#45

The more you engage with the content the more benefits you will get, the knowledge will stay longer. By engaging I mean doing exercises, implementing algorithms in code, writing pet projects. This will ensure you understand a topic, not have an impression that you understand. In past, I made a mistake to rush read textbooks till the point I feel I understood the content and ignoring most of the exercises - the exam s…

This advice is so much more important than which course or book you choose.

Don't sweat the choice too much, choose one of the canonical books, and commit to mastering the material by doing, not by (solely) reading.

Re: Ask HN: How do I choose the right resource to learn CS fundamentals?

#46

+ The foundation of computer science is Knuth's The Art of Computer Programming . Everything else is footnotes. Knuth is hard. And easy. And everything in between. You won't understand all of it. But you'll have to be ok with not understanding all of CS anyway. Nobody does. You can spend your time searching for a silver bullet. Or you can just read the manual. Knuth is the manual. + Bach's The Design of the Unix Oper…

Unpopular opinion:

I have _never_ had any real use of TAoCP. I own all volumes and have really tried to make use of them but they feel more like a trivia book than something you can actually use in your work.

Sure, it's cool to own and recommend it but have people actually used it?

To end on a more positive note: I highly recommend "Introduction to Algorithms" by Cormen et al. Not as cool but very useful.

Re: Ask HN: How do I choose the right resource to learn CS fundamentals?

#47
For data structures and algorithms, work through Introduction to Algorithms by CLRS and follow the video series from IIT Bombay, available here: https://www.youtube.com/playlist?list=PL7DC83C6B3312DF1E.

...or use any other book or lecture series. Stop worrying about choosing the "right" resource; just find a resource and start learning.

Re: Ask HN: How do I choose the right resource to learn CS fundamentals?

#48

+ The foundation of computer science is Knuth's The Art of Computer Programming . Everything else is footnotes. Knuth is hard. And easy. And everything in between. You won't understand all of it. But you'll have to be ok with not understanding all of CS anyway. Nobody does. You can spend your time searching for a silver bullet. Or you can just read the manual. Knuth is the manual. + Bach's The Design of the Unix Oper…

TAoCP is a terrible resource for a beginner.

Re: Ask HN: How do I choose the right resource to learn CS fundamentals?

#49

For Algorithms, I know the amount of materials available online can be overwhelming, so here's an alternative: get a copy of "Algorithms, 4th Edition" [1] from Sedgewick and Wayne, and work through it cover to cover, ignoring any other resources. This book has very little in the way of prerequisites, and it covers a lot of fundamental algorithms and a little bit of Math, but it is a lot more accessible and didactic t…

Second the recommendation to read Algorithms over CLRS; it’s significantly nicer in part because it uses actual code with good variable names instead of its own strange psuedocode dialect.

I actually liked their psuedocode. It was always easy to translate to whatever language I was working with (the opposite can be said about TAoCP assembler).

Hence while it may be nice to see the Java code, I personally prefer pseudocode.

Re: Ask HN: How do I choose the right resource to learn CS fundamentals?

#50
I did the first three in this series of online Coursera courses from UC San Diego and I thought they were quite good: https://www.coursera.org/specializations/data-structures-alg...

You end up implementing the algorithms and data structures yourself in your language of choice, which I find is a good way to learn.

Post reply on HN