Transcript from the "Introduction" Lesson
>> All right. We are now gonna start this class. I'm pretty excited about doing this class. I had been preparing this for the last couple months. This was my favorite class I did in school. I still remember this very, very vividly. When I first did computer science, I really actually kind of hated the experience of it the first class of computer science just learning how to program Java.
[00:00:22] Maybe it was just Java that I hated. I don't know what happened but it was really boring it was really mechanical. I thought it was so mechanical that I'd rather do mechanical engineering I did a year of Mechanical Engineering after that. And realize the only thing I hate more in the introduction to computer science are integrals.
[00:00:37] And so, that made me change back to doing computer science. And when I did, I went to the second class, Ray Babcock was teaching it and we went over linked list. And I still remember like looking at the screen just blown away. And I was like, this is awesome.
[00:00:52] I love this and this is the coolest thing ever. And so, at that point I just couldn't get it out of my head. I was so excited and so I've always really appreciated specifically this topic it just is such a cool, cool topic. And so, I'm pretty excited to be here I'm pretty excited to be able to teach this.
[00:01:08] And so, I hope everybody is also very excited. The last course you'll ever need that does seem a bit much, right? Well, it is hopefully the last algorithms course you'll ever need. But there is definitely an expectation that you will have to go out and still continue to understand and learn these things and actually apply what you learn.
[00:01:24] Cuz anything you do, what happens to it, it atrophies super, super quick. You're gonna lose it all in the next six months if you don't think about it, if you don't do it. One of the benefits of going to school is that you have the same stuff over the course of three years.
[00:01:37] So, it takes a lot longer for that to atrophy if you have to keep on going back to it. Just like I still have silly doom cheat code stuck in my head from 20 years ago cuz I entered it in so many times. All right, these are the algorithms I did run into.
[00:01:53] So, over the course of my either interviewing career or professional career, I have also tried to hand select the ones that I've used at least once in a professional setting. One that I've had to build or had to understand the difference of why use one or the other.
[00:02:07] I think that it's really, really good to try to be as practical as possible. Cuz I think a lot of times you'll learn about algorithms like Merkle trees, and you'll be like, wow, this is incredible. But then, you're never gonna be the person writing a new crypto coin coming out.
[00:02:21] So, you're probably never gonna be able to even use any of these sweet hashing algorithms, right? So, it's just like there's a point where algorithms become unusable for the average professional. But I think there's a huge amount of algorithms that are super useful to the average professional. Even though they think they will never run into them, you use them all the time, like nonstop.
[00:02:38] All right. So, why should you care about them? A lot of times you hear the phrase, it's kind of old-fashioned to interview with algorithms, right? That's kind of like the twitter momentum. All right, now is that if you do white boarding interview, the company's stupid whatever twitter says.
[00:02:54] I do bad twitter impersonations or you don't actually use any of them on the job. Well, the reality is that, sure, maybe algorithms aren't the best way to interview. And sure, maybe you don't use a lot of them on the job constantly. But the reality is that, there is a secret handshake to get into a very good paying job.
[00:03:11] Learn the handshake, right? Why fight the system when it's just available and it's free online to go learn. And you get an opportunity right now to learn. So, I always thought that was kind of like a strange argument. So, here we go. So, here's the big question I want to ask you.
[00:03:26] Is that in the array? What's used here? For those that I assume everybody here is familiar with TypeScript, I chose TypeScript intentionally. Because I want the broadest audience possible. Is that an array, would everyone say that's an array?
>> All right, great. What if I told you that's not an array?
[00:03:45] Would you be shocked? Hopefully you'd be shocked because you're like, wow, my life's lie. Also extremely old meme. Yes, I get it's a very old meme and guests your life may or may not have been alive. Remember arrays are the simplest data structure, you should be able to know, if you're looking at an array or not, right?
[00:04:00] They're the most fundamental basics or basic data structure. Well, let's find out. Next, we'll also cover time and space complexity. There's not gonna be any proofs, I will do what's called solving of an equation nothing really, really large. But we're gonna try to keep it really simple because for the most part in the professional world you don't do a lot of time-space break down, you really only do it during an interview.
[00:04:24] And you don't even do best average and worst case, you just do worst case. Like what's the running time? Well, actually, if you give this input you don't even do that you're just like it's this. And why TypeScript? I chose it because it's the most beginner friendly language, even though it's actually kinda bad for data structures and algorithms.
[00:05:16] I programmed in TypeScript and didn't go, Graham over there saw this and in Rust and I build the same application at the same time. And all three languages help you learn a different language. Who am? I am the CEO of the Startup, please try harder. I do a YouTube channel I'm almost at 100,000 subs, that means I get a little plaque which means I get to lick the plaque very excited about that.
[00:05:37] I stream a lot of live coding, that's a lot of fun. And I poop post on the internet, That's for you production team. And there you go, that's a great one, no one can actually mention it. Anyway, so I hope you guys are ready to get started. I intentionally tried to make this introduction as short as possible because the main contents or the topic we're covering is fairly large and I want you to get the most out of this.
[00:06:02] So, there we go. And one last note, when I was at university I did this two day courses approximately the second semester class a little bit of the fourth semester class. And my second semester class math three times a week for one hour, it's expected for 15 weeks.
[00:06:17] You're expected to do three hours of study for every one hour or four hours of study for every one hour of class time. Plus a one hour lab once a week, which is five hours of preparing. So, that's equivalent of 225 hours over the course of 15 weeks.
[00:06:31] And we're gonna try to do all that in 16 hours, plus lunch breaks, plus bathroom breaks, plus all that. So, again, it's gonna take some of your effort outside of this to really understand a lot of these things. Here you go. Here are two books that I have bought.
[00:06:47] Minimum I have these two books I bought at least four copies of them combined. So, I may or may not have lost them over the years. The first one is extremely academic. This Introduction to algorithms it's very very academic it's gonna go over proofs. But it is by far the most complete book I've read on algorithms.
[00:07:05] Anyone who's in the chat who is mildly familiar with algorithms or went to some sort of school will probably could guess the book, guess what's on the cover the tree book. The second one is I named it this way cuz I thought it was funny for programmers who don't know data structures and we'd like to do other things as well too.
[00:07:20] So, that one is at the zoo and reference for those who don't know. But that one right there is more of a very simple one. This course will cover about maybe 75% of the book and then it kind of it deviates in various areas. But that one's a much more beginner friendly one.
[00:07:36] The proofs are much smaller, if there is really any proofs to it. The topics are a lot lighter, they don't cover nearly as much in trees. Do a little bit of graphs, right? So, it's a much nicer beginner friendly algorithms book.