Live data from Hacker News

Advanced Data Structures (2017)

courses.csail.mit.edu

61–70 of 89 posts

Re: Advanced Data Structures (2017)

#62
post #45
post #43

Earlier quoted context omitted.

> If you had told highschool me something like that would happen, I never would have believed it :) I find it interesting that a common story of people who did big things is that nobody would have predicted they'd end up doing the things they did. Reminds me of my own reflections on things that I have done that I never would have expected I'd be doing. As well as this recent article by the creator of Entrepreneur mag…

Someone needs to apply Bayes theorem to determine if not believing in oneself is truly a prerequisite to achieving greatness.

I don't think it's about not believing in oneself. I actually think the opposite is a requisite -- that you must believe in yourself, even if you don't know where you're heading. Or even if you know where you're heading, and it's not the path that you had originally charted. You can't see 20 moves ahead, but you know a good next move.

Re: Advanced Data Structures (2017)

#63

As a busy self-learner, when is it time to learn data structures in depth? I feel like there are always 10 other technologies I need to know more urgently (eg, more bash, Linux, testing frameworks, deep learning, c++ libraries, linear algebra, common security mistakes/attacks, OpenGL, etc)

> As a busy self-learner, when is it time to learn data structures in depth?

From a practical perspective... The best sign is if you're spending a lot of time trying to wrangle performance or scalability and most of the bottleneck is inside the standard data structures.

E.g. if you're spending too much time or memory doing dictionary lookups, then it may be worth looking into Bloom filters. But if dictionary lookups are a trivial component of your overall performance, then there are no real gains to be had from replacing with a fancier data structure.

There's a follow-up point I'd like to make too. Skill with data structures is more about knowing the right questions to ask, rather than memorizing an encyclopedic list of a whole bunch of exotic structures. When you understand the major tradeoffs and design considerations underlying data structure design, then it's usually easy to find a solution in the literature even if you were completely unaware of it prior.

Effectively that means something like being able to translate between business requirements and academic language. "Oh, I need something that works on directed graphs, handles cycles, logarithmic in space, linear in average case time, resistant to adversaries, respects cache locality during lookup, and behaves deterministically."

The best way to get learn this stuff is to read a bunch of famous papers in data structure. Again, the point isn't to memorize a zoo. It's to get comfortable with the already well-developed framework that previous researchers have used. It's very unlikely that your business problem is truly unique at a theoretical level, so most likely someone before you has already figured out the tradeoffs and considerations that you are facing.

Re: Advanced Data Structures (2017)

#64
post #33

Earlier quoted context omitted.

It depends if you're learning for pleasure or for your career. ;) When I bust out my algorithms/data structures books, I find myself engrossed much like I imagine people get with a good novel. So many times I say to myself, "Whoah! That's so cool!" because of how elegantly/efficiently a problem can be solved that I had never even considered. My favorite so far is Skiena's "The Algorithm Design Manual". I especially l…

How does one read a algorithm or data structure book like an novel? most books require busting out keyboard or pen and paper and solving one thing or another. Just genuinely curious because I love reading technical books but I can never finish them from page to page.

This book has "war stories," where he describes the problem he was faced with and his different approaches before finding his awesome solution, so that's probably what gives me that feeling. But additionally, maybe I'm a freak.

Re: Advanced Data Structures (2017)

#65

As a busy self-learner, when is it time to learn data structures in depth? I feel like there are always 10 other technologies I need to know more urgently (eg, more bash, Linux, testing frameworks, deep learning, c++ libraries, linear algebra, common security mistakes/attacks, OpenGL, etc)

What do we mean by in-depth? Basic knowledge is pretty fundamental. Beyond that, I'd say assume you know them, and when you're stuck because you actually don't then go learn only as much about them to get you unstuck.

Re: Advanced Data Structures (2017)

#66
post #59

Hey! I’m a coauthor with this guy :^). Incredibly fascinating (and extremely smart) dude. His interest in origami is what drew me to MIT in the first place, since I was interested in it as well from a young age. A few years ago I took his class on the computability/complexity theory of folding, and we ended up solving an open problem in the field and published a paper out of it [0]. If you had told highschool me some…

Hi there. What would you suggest to a person who loves these kind of stuff (data structures and algorithms) but finds it hard to develop the underlying intuitions for coming up with these data-structure and algorithm? I personally just hammer down on deliberate practice to recognise patterns and underlying concepts to solve as many problems as I can on my own. I was wondering apart from general DS and Algo what topic…

Really, to quote the old "How do I get to Carnegie Hall?" it's "practice practice practice" - it's doing this stuff often enough so that the correct data structure becomes obvious is how you get good at this game

Re: Advanced Data Structures (2017)

#69
post #21

Earlier quoted context omitted.

Given the bulk of the things you've listed here, which seem to serve very practical purposes, maybe never. I wouldn't call data structures a "technology" so much as I would label them as a theoretical underpinning to much of computer science. If your goal is to learn practical technologies (which is a good goal!) you don't really _need_ to learn data structures deeply -- they're just not a skill you need in day-to-da…

> "they're just not a skill you need in day-to-day software life (for most people)." I mostly disagree. You won't need to implement them, but a working knowledge of the basics is the basis of any performance analysis and can make a huge difference in system performance in day to day programming. At some point all the small inefficiencies also add up. I would go so far as to say that data structures and basic algorith…

I think we should remember that the vast majority of computer developers and engineers will not, and probably never, work on stuff that requires deep understanding of things like data structures and algorithms, even those with advanced degrees. Most are just, how to put this, IT janitors.

To use your mechanic and mechanical engineer analogy: They're not even mechanics, they simply change the oil and light bulbs from time to time, along with cleaning the interior.

Not saying that it's not useful - you'd get a much better understanding of things...but this obsession with learning everything under the sun just to be "ready" for the job is overkill

Re: Advanced Data Structures (2017)

#70

As a busy self-learner, when is it time to learn data structures in depth? I feel like there are always 10 other technologies I need to know more urgently (eg, more bash, Linux, testing frameworks, deep learning, c++ libraries, linear algebra, common security mistakes/attacks, OpenGL, etc)

> As a busy self-learner, when is it time to learn data structures in depth? From a practical perspective... The best sign is if you're spending a lot of time trying to wrangle performance or scalability and most of the bottleneck is inside the standard data structures. E.g. if you're spending too much time or memory doing dictionary lookups, then it may be worth looking into Bloom filters. But if dictionary lookups…

> "Effectively that means something like being able to translate between business requirements and academic language. "Oh, I need something that works on directed graphs, handles cycles, logarithmic in space, linear in average case time, resistant to adversaries, respects cache locality during lookup, and behaves deterministically."

Excellent comment! I'd love to see a catalog of data structures that documented those characteristics; do you know of a good resource like that?

Post reply on HN