# Algorithms and Data Structures in Javascript (2020)

This course is designed to help you understand sorting algorithms and data structures. In my experience most people focus on the programming language, but people often forget about algorithms.

Algorithms are definitely more important than a programming language, you can learn a programming language in about week, but the problem-solving ability is much harder to learn. But the benefits are worth it.

When you get to interview mostly they care about your problem-solving abilities, algorithms and data structures.

To get your dream job, you need to know how to solve whatever problem they have. In this course, you will learn how to do that.

Also, I believe that nobody has time for long and boring lectures, so in this class, I try to explain the important things in a fast and engaging way, so I won't bore you to death.

We start off with Sorting algorithms:

- Selection Sort

- Bubble Sort

First there is the explenation lecture where you learn the idea behind an algorithm, then there is the implementation lecture, where we implement the algorithm in Javascript.

Then I show you how Recursion works, once again I try to explain what recursion means, then we implement some recursion algorithms and we use debugger to see how computer evaluates recursive functions.

Then we move on to recursive Sorting Algorithms

- Merge sort

- Quick sort

These algorithms are most commonly used. With each algorithm I explain the idea, then we implement the algorithm.

Once you learn sorting algorithms, we move on to Time Complexity:

- What is time Complexity

- Big O notation

I explain what is time complexity and why we need it, also, I will show you how to compare sorting algorithms, so that we can see which one is the "best".

In this section you also find an article with a lot of problems, where you can train your problem solving skills.

After that we take a look at Data Structures, I choose In my opinion the best dat structures for you to learn the important concepts.

We start of with Tree Data Structures:

- Binary Search Tree

- AVL tree

You learn how these works and also how to implement them.

Then we take a look at Linked List, Stack, Tries and Hash Tables. Once again we implement all of these in Javascript.

I believe that learning and understanding these concepts will help you solve problems more efficiently.