# A Practical Guide to Algorithms with JavaScript Introducing Practical Guide to Algorithms

Transcript from the "Introducing Practical Guide to Algorithms" Lesson

[00:00:00]

>> Bianca Gandolfo: My name is Bianca. What should you know about me? I'm a JavaScript developer. I work as a consultant, so I go into most of the enterprise companies and help them with their JavaScript. They also work on open source. Part of our company, we have an open source framework called KJS.

[00:00:16] So I do work on that as well. Today, we're going to talk about algorithms. Like Mark said, this is part of a four class series on data structures and algorithms. So this is the sort of foundational knowledge and as we move along the series we're going to build on these topics.

[00:00:40] So we're gonna talk about the algorithms, only today, no data structures today, aside from maybe an object or an array. And then next time, we're gonna go over some common interview data structures and algorithms. And then we're gonna apply this stuff, so this would be a pre-req to the following course.

[00:00:57] And we'll apply these algorithms to some common data structures, to some common interview questions and then the next part. Part three and four is all trees and graph theory. So as web developers, that's so, so important. So we're just two days doing all of that. Traversing, sorting, balancing, all of that.

[00:01:18] So that's sort of the higher level progression of this course. So,

>> Bianca Gandolfo: Today is algorithms. So, what is an algorithm? Why should you care? So algorithm is just the steps that you take to solve a problem. Why should you care? You're an engineer. It's your job to solve problems.

[00:01:38] When we learn about algorithms, we're learning different techniques to solve problems in a certain way, we're identifying patterns. And we're applying algorithms to those patterns, to get a result, to improve the speed of our programs.

>> Bianca Gandolfo: Okay.

>> Bianca Gandolfo: So what are we gonna cover today? We're gonna cover a lot.

[00:02:06] So we're going to discuss really informally how to generally estimate an algorithm. We're not gonna go into mathematical proofs or anything like that. But we're going to talk about little things that you can spot to start to reason about the time complexity of an algorithm. Then we're gonna talk about a couple techniques for optimization, which are fun.

[00:02:28] We're gonna get really comfortable with recursion. How are people feeling about recursion, right now? Feeling good? Okay, cool. Well, you're gonna be like man, I think most of this course is like recursive algorithms. And going through recursion in a bunch of different ways. So if you're feeling like this, you'll probably be like this at the end.

[00:02:50] If you're feeling like this, you'll probably be here. So that's fun and something, you know, it's like such an abstract thing, it's hard for a lot of people. So I like to focus on that. Cuz that's the foundation of a lot of algorithms, and then we have, of course, the data structures as well.

[00:03:08] So we're gonna do a couple sorting, a couple searching, I'm not gonna go through the exhaustive list of every sorting and searching algorithm, because, you know. Snooze, but we'll go through a couple and focus on the implementation of them rather than the theoretical aspects of sorting and searching.

[00:03:27] If I have time in a future course, I might go into that, but we'll see. I don't think it's the most important thing to understand like what are the trade-offs between bubble sort and insertion sort because at the end of the day, when you get into your interview, you seem to know one.

[00:03:43] You know what I mean so, sure. We're gonna talk about also the Divide and Conquer technique and Dynamic Programming. You might see these and think okay, recursion. You're right, recursion, more recursion. Same with sorting and searching, recursion. And then we're gonna talk about the Greedy technique and my opinions about the Greedy technique, and how you should apply the Greedy technique to interviews.

[00:04:13] And then we'll also talk about brute force as well. Recursive brute force. Any questions about all of this? Cool, so it is a lot. There are corresponding exercises for each of these topics. Probably not gonna be able to finish them in class today just because I wanna get through a lot.

[00:04:33] But you should have a solid attempt for most of them. And then we can be in touch after class if you need help with anything, and online folks, too. You can always tweet at me or email me.

>> Bianca Gandolfo: Your exercise solutions, if you want feedback or you're stuck or whatever, happy to do that.