Transcript from the "Wrapping Up" Lesson
>> I could do a Q and A. Also use Vim. And if you don't understand this course and it's too hard, remember I have a first one that's for free forever. Free forever algorithms course on frontendmasters.com. Aljean, so I'm reading the chat now.
>> Is there any specific reason you use three hash functions?
>> No, I just did Grab a set of hash functions.
>> Over sufficient over a sufficiently large period of time wouldn't we always say things are available or shouldn't there be a strategy to clear the bloom filter?
>> So that would be where you a, if you have a sufficiently large amount of data like a megabyte of ones, is a million ones, and so depending on how many index points you get per item, it should be pretty sparse for a while, it obviously at some point.
[00:00:43] I mean, again, these are like more practical questions which is how long do you keep something running before you reset it, is the reset worth it? Meaning that you don't go and check things up. So you got to play with that because if you're actually using when you're using it to try to speed up a system practically, which means that there is no right answer, it depends on the problem and how much memory.
[00:01:04] I hope at the end of this you never wanna look at algorithms again. We just went way hard and you're just like, that's it, and you just never wanna do it again. That's why the other one's the one you need because you want that for interviewing, this one's the one you want to stop wanting ever again.
>> Could you briefly describe the difference between dynamic programming and recursion?
>> Yeah, recursion uses a stack and calls itself and you may solve the same sub-problem multiple times, as we saw with Fibonacci, over and over and over again.
>> Are there any drawbacks to dynamic program?
>> It's hard, it's really hard.
[00:01:42] Like really good dynamic programming problems are hard until you understand it, then it's simple. And so if you actually had like if you really did a dynamic programming problem for your job, for somebody to look at it, they'd be like, what the hell am I even looking at?
[00:01:55] This makes no sense. And so until they understand it, you completely don't understand it. Recursion tends to be really elegant, right? You can look at it and just totally understand everything that's happening, and so it's nice. Skill issues, dynamic programming is the epitome of skill issues.
>> Do you think that there's like a particular area of math study, combinatorics, something like that that would lend to understanding dynamic programming problems better?
>> I don't know, I don't know if that's true. At one point that was pretty good at the old combinatorics. I can't remember any of that stuff at this point, the permutation. I could use to do the 5C4 and be able to tell you all that stuff, now I can't remember any of that stuff, it's been too long since discrete math.
[00:02:39] But that never helped me. I never personally got help from it, discrete math didn't do a lot for me.
>> Got you.
>> I think one of the problems is I also took discrete math before I took a data structure course. And so I solving all these theoretical problems that I never actually seen before, and then all of a sudden it was really hard to relate that.
[00:02:59] And then when I did the data structures course, I looked back on the on the discrete math I was like, that makes perfect sense why you do that? And then it was like really valuable but that's like such a value in the past problem.
>> Where do you work?
>> I work at Netflix, by the way. Okay, I'm almost at my ten-year anniversary, okay, and Netflix. At some point I'm not gonna work at Netflix, I won't be able to say that anymore and it'll be a sad day. By the way, just casual flex, not a big deal, whatever.
>> What language do you think lends itself well to implementing these kinds of things?
>> Any language but Rust. Rust is a horrible language to implement data structures in, it's just awful, it's just awful. It's just the worst thing in the universe, don't do Rust and data structures, okay?
[00:03:47] You'll get stuck on a linked list and then you'll quit. C is great because C gives you the actual picture, but you can also use things like, you can use TypeScript, you can use Go. Go kind of sucks cuz Go doesn't have a really strong generics and methods, and so it's just like it's not as good for this.
[00:04:03] C, TypeScript, those are really easy ones to do.
>> I did your previous one in C Sharp.
>> Okay, C Sharp would be a good one, Java, great one to do these things in, they're very concrete and simple. OCaml, I don't know OCaml good enough to know if OCaml is great for this kind of stuff.
[00:04:20] I assume it is because it has a really strong type system, and it's garbage collected, which means you can do all the things that Rust can't easily. All right, so there you go, that is the entirety of the course, that's what I wanted to go through. I really wanted to emphasize the fun stuff at the beginning, the trees, the graphs, and really kinda dive a little bit into some analysis.
[00:04:38] Hopefully, you like the Prim's algorithm analysis where we actually broke it down and went several levels down. I really liked union find path compression, that's a pretty useful algorithm just to know because there are times where you want to be able to shortcut something but you don't wanna always be able to do it.
[00:04:52] B-trees, super, super-duper useful. You could imagine you have you can have, there's just situations, I've ran into these range to binary trees where I want to have a binary tree that has ranges to be able to find quick values out and spend super useful to use concepts like it or M -Way trees.
[00:05:07] So hopefully everyone learned something. Does everyone feel pretty good? Do you feel like you've gotten smarter, faster, stronger? All right, fantastic. Well, the name,
>> Right there, is the Prime Jam. All right, thank you, appreciate that.