(oriental music) - I'm Brian Holt, I've been a web developer for, professionally for about five to six years now.
Previously I was at Reddit up until about 18 months ago. Recently located to San Francisco from Salt Lake City, everyone here in Minnesota here knows that like, what it means to be cold, so I eventually escaped that and got to San Francisco. But yeah, now working at Netflix, super fun, I work on the non-member experience, which is like, every time you like log in to Netflix or manage your account, I do all that stuff. Or I'm on a team of people that does that stuff I should say.
If you haven't already, please open this link. The other disclaimer is I'm a little congested, so if I sound that way it's because I am. So yes, please open this, it's just gonna take you to this webpage, you can also just open that URL, this just seemed a little bit easier to type up there. Cool, and this is meant to be an interactive workshop, so those of you who have questions, please ask them as you have them, just raise your hand and I'll tell you to shut up or to ask me the question, one of the two. And then for those of you that eventually watch this later, feel free to ask me on Twitter, send me an email, all that kind of stuff, I'm always available to answer questions.
Cool, well let's get going, get rid of that. Okay, so four semesters of computer science. It's kind of an ambitious title, and hopefully most of your bullshit detectors are going off and saying like, you can't do four semesters in six hours. Well first of all, we're not gonna do four semesters and the other thing is we aren't going to do six hours, it'll probably be longer than that. So lies on both accounts, but hopefully we can still get something useful for you.
Why I wrote this workshop. I wrote it because I'm super frustrated, I mean I originally wrote it cause I'm frustrated with the interview process for becoming an engineer. They ask you a lot of these stupid like super algorithmic questions that for the most part don't really apply to most of your day to day work. I mean we ask some of them at Netflix because it actually does apply to some of the stuff at Netflix, like traversing a graph is super important at Netflix. But for example, what I did at Reddit, a lot of the stuff had absolutely zero to do with what I was doing, and yet that was one of the questions they asked me in the interview process.
So, all that to say, this class is to help you prepare for those kind of, terrible interviews. Beyond that, I think these are useful concepts to know because computer science is a science of trade offs. That's obviously an oversimplification but I also think that generally holds true that should I have more readable code, should it go faster, should it take less memory? Well the answer to that question is, it totally depends on what you're doing, right? I'm gonna say, 90% of the time, 95% of the time it should be the most readable code.
One of my personal code heroes, who's taught here multiple times, Kyle Simpson, said that code is more for the person that has to maintain it than it is for the computer. Right, it's more communication for the person that comes after you, whether that's you yourself later or someone else. And so I think, always on err on the side of more readable code. And then today we're going to talk about how to not write readable code, right, cause algorithms get to be kind of crazy. So, all that to say is, this is useful to help you kind of make trade offs in your head.
When you start going through writing really complicated things, things that need to go faster, that sort of thing. So, again, this is a bit of disservice to professors out there that do actually teach real computer science courses. This is not actually four semesters, but that is, before I dropped out of college, so I should have that disclaimer as well, is that I did drop out of college. But I got enough computer science to be able to teach this course, so don't worry. These are the things I learned in my first four semesters of computer science, so that's where the title comes from as well.
It's just one of those things that it's long, it's kind of dry, it's a textbook right, but just read it. I swear if it you read it just once it's gonna serve you your entire career, it's gonna make you a better developer, you just have to pay the tax and do it once. I've read it a couple of times, not recently so I probably should do it again. But it's gonna basically, for a frontend developer today, that's gonna be way more knowledge than you're actually even gonna need, but it's gonna be super helpful.
But this is a good place to start, this is gonna show you that the mental gymnastics of algorithms I think it's fun, it's fun to reason through these, they're puzzles right. I'm asking you to rearrange numbers in interesting ways and it's kind of like, you know, some sort of really bad crossword puzzle or something like that.
Note: This course was created by Frontend Masters. It was originally released on 07/12/2016. We're pleased to host this training in our library.
- Big O
- Sort: Bubble, insertion, and merge,
- Median values
- Set, map, stack, and queue
- Array lists and linked lists
- Binary search tree
- AVL tree
- Single rotation and double rotation
- Hash table
- Functional programming
- Map, reduce, and filter