Algorithms are the basic construction of the computer programs that you are writing every day. They take language syntax and the machine uses that information to carry out our commands. While "everything is an algorithm!" is basically a true statement, we also have quite a bit of thought and effort put into defining formal algorithms. Understanding these formal algorithms helps you as a developer so that you won't need to re-invent the wheel every time you sit down to solve a problem.

They also come up quite a bit as "white board problems" in programming job interviews, so understanding algorithms is a big win for you as a coder.

This course will review many common algorithms using TypeScript as the language. Even if you don't prefer TypeScript, they will easily translate into JavaScript or practically any other language

4:19
typescript

The FizzBuzz problem is commonly presented as the lowest level of comprehension required to illustrate adequacy in computer programming.

In this lesson you learn about the problem as well as its solution in TypeScript. We will also cover some tricks on approaching the problem and coding interview questions in general.

3:54
typescript

In this lesson we cover all the details of how to sort a list of items using **TypeScript**. There are a few things that will catch beginner developers off guard, such as the `.sort`

method mutating your array, and how the `.sort`

method doesn’t sort numbers how you’d expect. In this lesson we’ll be going over these gotcha’s and how to work around them.

We’ll also present a few tricks to make your sort logic more readable and maintainable using **TypeScript**.

1:33
typescript
**PRO**

We look at the default `Array.prototype.sort`

behavior and discuss how you can do case insensitive string sorting. This isn’t as straightforward as it seems, **Javascript** by default sorts capitalized words before lowercase. In this lesson we’ll learn exactly how to deal with this behavior using **TypeScript**.

3:52
typescript
**PRO**

The anagram test is commonly used to demonstrate how an naive implementation can perform significant order of magnitudes slower than an efficient one. We’ll also briefly go over why each implementation is not as efficient as you could make it.

A word is an anagram of another if you can rearrange its characters to produce the second word. Here we’ll write multiple increasingly more efficient functions that given two strings determines if they are anagrams of each other.

3:35
typescript
**PRO**

A palindrome is a string that reads the same forward and backward, for example, radar, toot, and madam. In this lesson we discuss how to approach the palindrome problem using TypeScript / JavaScript.

We also discuss a more complex algorithmic challenge of writing a function to check if *any permutation* of a given string is a palindrome.

5:49
typescript
**PRO**

Quicksort (also called partition sort and pivot sort) is arguably the most used sorting algorithm. It is the one commonly implemented internally in language runtimes.

We’ll be covering step by step a recursive approach to solving the quick sort algorithm with **TypeScript / Javascript** and why exactly it’s called *quick* sort.

3:43
typescript
**PRO**

Insertion sort is a very intuitive algorithm as humans use this pattern naturally when sorting cards in our hands.

In this lesson, using **TypeScript / Javascript**, we’ll cover how to implement this algorithm, why this algorithm gets its name, and the complexity of our implementation of the insertion algorithm.

3:05
typescript
**PRO**

Binary search is a very fundamental algorithm in Computer Science. It powers BSTs (binary search trees) which form the basis of modern databases and immutable data structures. Binary search works very much the way humans intuitively search for a name in a yellow pages directory (if you have ever seen one) or the dictionary.

In this lesson we learn how to implement a Binary Search Algorithm using **TypeScript / Javascript**, and we describe the problem that it solves.