Live data from Hacker News

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

news.ycombinator.com

51–60 of 93 posts

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

#51

+ 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.

I wouldn't argue against your experience. Or that people don't use Knuth much or at all in their work. Most people don't use textbooks much or at all in their work.

Per the question, the context of my answer is learning CS and in particular self-directed learning. If the question was about resources for work, I'd probably say "StackOverflow" and be done with it.

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

#52

+ 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…

This is a poor suggestion, IMO.

OP is trying to get into CS, so they need something that's clear and approachable. By your own admission, it's possible even for experienced people to be stumped by TAOCP. It's simply too vast and too difficult for a beginner to finish. This fetishizing of difficult things doesn't help anyone, least of all people trying to get into the field.

The failure mode to watch out for here is not OP getting developing a small misconception about something, but that he finds the field too intimidating to continue.

It's far more likely that a beginner has success with the other suggestions from this thread - like Nand2Tetris, which is clear, explains the fundamentals, is accurate and most importantly, fun.

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

#53

+ 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.

Plus, Knuth, despite his accomplishments, is a terrible computer scientist and programmer in some capacities. TeX must be the most odious language not designed as a deliberate joke.

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

#54
post #52

+ 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…

This is a poor suggestion, IMO. OP is trying to get into CS, so they need something that's clear and approachable. By your own admission, it's possible even for experienced people to be stumped by TAOCP. It's simply too vast and too difficult for a beginner to finish. This fetishizing of difficult things doesn't help anyone, least of all people trying to get into the field. The failure mode to watch out for here is n…

Knuth is clear and approachable. It's just not dumbed down. The theory that a beginner should 'finish' requires dumbing down. And then they haven't really finished anything. At it's core, your position infantalizes the OP instead of treating them as a full fledged intellect simply lacking knowledge.

Nand2Tetris is a great resource. There are lots of great resources: Let's build a compiler, SICP, Paradigms of Artificial Intelligence: Case Studies in Common Lisp, Code Complete, Code, etc. and on and on. What to choose is the OP's problem.

Nothing is as robust as Knuth. It's stood up longer than most Hacker News readers have been alive. And is still keeping up...or rather still at the sharp edge. The first edition of Volume I is more than fifty years old and still entirely relevant. Binary trees, queues, and stacks haven't changed. Neither has the math.

What has changed is that teaching computer science has become an industry. It perpetuates itself via gatekeeping. By withholding knowledge. An industry that parcels out knowledge in semesters. But CS is a lifetime field...Knuth started in 1962.

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

#55

+ 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.

> Sure, it's cool to own and recommend it

That's what it exists for. To build the street cred of people who own it and have read it. Notice how no one who has read it comes back with a comparison of TAOCP and CLRS. For example "learning bogosort from Knuth instead of Cormen is better because Knuth gives you xyz insight into it". No, they simply think it's better because it's harder.

A rough comparison is On the Origin of Species, which is a solid foundational text without being too arcane while Philosophiæ Naturalis Principia Mathematica is not. No sane person suggests that to learn the Newton's laws of motion you need to learn Latin and then read Principia (except the people who fetishize difficulty). Just read Resnick and Halliday instead.

By no means am I downplaying Knuth's genius. He is a stalwart without whom our industry would be worse. But TAOCP is not a good foundational text because it's not approachable.

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

#57
post #3

Check out https://www.teachyourselfcs.com

+10 for this. I will elaborate further, hoping this gives you a good starting template. - Programming: Learn two languages: Python and C - Algorithms and Data Structures: Implement each data structure in the two languages above and implement a few algorithms of each type. - Computer Architecture: For the referred excellent book, implement all assignments in any one language. Go head and burn the design on an FPGA, ge…

How would you compare Database Internals to Designing Data Intensive Applications?

[1] https://www.amazon.com/Designing-Data-Intensive-Applications...

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

#58
I always wonder this about other subjects and wish there were better guides listing the topics one needs to know — and how to learn them. Since I know a bit of CS, I’ll try to do my part here.

In college, I found this lecture series to be an excellent supplement to my autonama and formal languages course. I haven’t watched the whole thing, but it should check your “theory of computation” box. The lecturer is fantastic and thorough.

https://www.youtube.com/playlist?list=PL601FC994BDD963E4

The prerequisites for this should be discrete math, but to be honest, depending on how comfortable you are with math in general, you could probably skip it and look things up as needed.

Another person to look into is Scott Young who taught himself the MIT CS curriculum in a year. His book Ultralearning is excellent and contains many tips that would help with self-studying CS. Unless you just want to dive into the content, Ultralearning would actually be my first recommendation before learning CS fundamentals.

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

#59

Earlier quoted context omitted.

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.

I wouldn't argue against your experience. Or that people don't use Knuth much or at all in their work. Most people don't use textbooks much or at all in their work. Per the question, the context of my answer is learning CS and in particular self-directed learning. If the question was about resources for work, I'd probably say "StackOverflow" and be done with it.

I would argue that Knuth is particularly bad for _learning_ CS.

(Based on my experience as CS undergrad and grad student later)

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

#60
If you want to go it alone, I think you're going to have to give up on the idea that there is a "right" set of resources or an optimal path through the curriculum.

I would spend a bounded bit of time (maybe just 10 minutes) every day focusing on the meta question of "how can I make progress given the absolutely massive set of choices I have to make?" and relatedly "am I actually making progress?"

Then I'd just make an arbitrary choice. E.g. pick a topic that interests you, find the top two or three textbooks on the topic, choose one at random and start reading it.

Then keep going back to the meta question. Are you making progress? If not, try another path. If yes, keep going, but remember to ask yourself the meta question tomorrow.

If you do this, you'll get better over time at carving out your own way.

re: going through multiple university books on the same topic. I find it is useful to skim several university books on the same topic. They often have different perspectives, and this is useful for developing intuition. But after doing this I'd just do the exercises from the one I liked the best.

Post reply on HN