Js Algorithms And Data Structures Masterclass

The Missing Computer Science and Coding Interview Bootcamp

Last updated 2022-01-10 | 4.7

- Learn everything you need to ace difficult coding interviews
- Master dozens of popular algorithms
- including 6 sorting algorithms!
- Implement 10+ data structures from scratch

What you'll learn

Learn everything you need to ace difficult coding interviews
Master dozens of popular algorithms
including 6 sorting algorithms!
Implement 10+ data structures from scratch
Improve your problem solving skills and become a stronger developer

* Requirements

* Basic knowledge of JavaScript syntax
* NO experience with data structures or computer science needed!

Description

Updated in November 2018 with brand new section on Dynamic Programming!

This course crams months of computer science and interview prep material into 20 hours of video. The content is based directly on last semester of my in-person coding bootcamps, where my students go on to land 6-figure developer jobs. I cover the exact same computer science content that has helped my students ace interviews at huge companies like Google, Tesla, Amazon, and Facebook. Nothing is watered down for an online audience; this is the real deal :)   We start with the basics and then eventually cover “advanced topics” that similar courses shy away from like Heaps, Graphs, and Dijkstra’s Shortest Path Algorithm

I start by teaching you how to analyze your code’s time and space complexity using Big O notation.  We cover the ins and outs of Recursion.  We learn a 5-step approach to solving any difficult coding problem. We cover common programming patterns. We implement popular searching algorithms. We write 6 different sorting algorithms: Bubble, Selection, Insertion, Quick, Merge, and Radix Sort.   Then, we switch gears and implement our own data structures from scratch, including linked lists, trees, heaps, hash tables, and graphs.  We learn to traverse trees and graphs, and cover Dijkstra's Shortest Path Algorithm.  The course also includes an entire section devoted to Dynamic Programming.

Here's why this course is worth your time:

  • It's interactive -  I give you a chance to try every problem before I show you my solution.

  • Every single problem has a complete solution walkthrough video as well as accompanying solution file.

  • I cover helpful "tips and tricks" to solve common problems, but we also focus on building an approach to ANY problem.

  • It's full of animations and beautiful diagrams!

Are you looking to level-up your developer skills? Sign up today!

Who this course is for:

  • Anyone preparing for programming interviews
  • Anyone interested in improving their problem solving skills
  • Anyone looking to become a better developer!

Course content

30 sections • 340 lectures

Curriculum Walkthrough Preview 07:43

What Order Should You Watch In? Preview 02:52

How I'm Running My Code Preview 03:21

Intro to Big O Preview 07:41

Timing Our Code Preview 10:19

Counting Operations Preview 04:36

Visualizing Time Complexities Preview 04:25

Official Intro to Big O Preview 09:58

Simplifying Big O Expressions Preview 09:32

Big O Time Complexity Quiz

Big O Time Complexity Quiz 2

Space Complexity Preview 06:26

Big O Space Complexity Quiz

Logs and Section Recap Preview 08:46

PREREQUISITES Preview 00:05

Section Introduction Preview 01:42

The BIG O of Objects Preview 05:31

Object Operations Quiz

When are Arrays Slow? Preview 06:25

Big O of Array Methods Preview 05:56

Array Operations Quiz

PREREQUISITES Preview 00:05

Introduction to Problem Solving Preview 07:08

Step 1: Understand The Problem Preview 07:59

Step 2: Concrete Examples Preview 06:19

Step 3: Break It Down Preview 07:44

Step 4: Solve Or Simplify Preview 10:32

Step 5: Look Back and Refactor Preview 16:57

Recap and Interview Strategies Preview 04:12

PREREQUISITES Preview 00:06

Intro to Problem Solving Patterns Preview 02:55

Frequency Counter Pattern Preview 15:11

Frequency Counter: Anagram Challenge Preview 02:33

Frequency Counter - validAnagram

Anagram Challenge Solution Preview 06:18

Multiple Pointers Pattern Preview 09:42

Multiple Pointers: Count Unique Values Challenge Preview 04:29

Multiple Pointers - countUniqueValues

Count Unique Values Solution Preview 06:30

Sliding Window Pattern Preview 13:14

Divide And Conquer Pattern Preview 07:02

IMPORTANT NOTE! Preview 00:14

Frequency Counter - sameFrequency

Frequency Counter / Multiple Pointers - areThereDuplicates

SOLUTIONS PART 1 Preview 00:27

Multiple Pointers - averagePair

Multiple Pointers - isSubsequence

SOLUTIONS PART 2 Preview 00:21

Sliding Window - maxSubarraySum

Sliding Window - minSubArrayLen

Sliding Window - findLongestSubstring

SOLUTIONS PART 3 Preview 00:48

PREREQUISITES Preview 00:05

Story Time: Martin & The Dragon Preview 07:06

Why Use Recursion? Preview 05:53

The Call Stack Preview 07:07

Our First Recursive Function Preview 05:11

Recursion Quiz

Our Second Recursive Function Preview 07:54

Writing Factorial Iteratively Preview 02:19

Writing Factorial Recursively Preview 03:15

Common Recursion Pitfalls Preview 05:06

Helper Method Recursion Preview 06:23

Pure Recursion Preview 07:45

START HERE! Preview 00:12

power

factorial

productOfArray

recursiveRange

fib

SOLUTIONS FOR THIS SECTION Preview 00:15

NOTE ON THIS SECTION Preview 00:11

reverse

isPalindrome

someRecursive

flatten

SOLUTIONS PART 1 Preview 00:16

capitalizeFirst

nestedEvenSum

capitalizeWords

stringifyNumbers

collectStrings

SOLUTIONS PART 2 Preview 00:38

PREREQUISITES Preview 00:05

Intro to Searching Preview 04:04

Intro to Linear Search Preview 04:47

Linear Search Exercise

Linear Search Solution Preview 05:18

Linear Search BIG O Preview 01:55

Intro to Binary Search Preview 05:47

Binary Search PseudoCode Preview 02:40

Binary Search Exercise

Binary Search Solution Preview 16:41

Binary Search BIG O Preview 06:09

Naive String Search Preview 04:38

Naive String Search Implementation Preview 12:29

KNP COMING SOON Preview 00:03

PREREQUISITES Preview 00:05

Introduction to Sorting Algorithms Preview 08:35

Built-In JavaScript Sorting Preview 04:40

Bubble Sort: Overview Preview 07:21

Bubble Sort: Implementation Preview 09:58

Bubble Sort: Optimization Preview 04:22

Bubble Sort: BIG O Complexity Preview 01:28

PREREQUISITES Preview 00:10

Selection Sort: Introduction Preview 06:18

Selection Sort: Implementation Preview 11:14

Selection Sort: Big O Complexity Preview 01:40

PREREQUISITES Preview 00:11

Insertion Sort: Introduction Preview 03:17

Insertion Sort: Implementation Preview 10:42

Insertion Sort: BIG O Complexity Preview 02:24

PREREQUISITES Preview 00:12

Intro to the "Crazier" Sorts Preview 06:05

Merge Sort: Introduction Preview 05:25

Merging Arrays Intro Preview 05:11

Merging Arrays: Implementation Preview 06:55

Writing Merge Sort Part 1 Preview 02:21

Writing Merge Sort Part 2 Preview 12:37

Merge Sort BIG O Complexity Preview 06:22

PREREQUISITES Preview 00:13

Introduction to Quick Sort Preview 09:00

Pivot Helper Introduction Preview 08:06

Pivot Helper Implementation Preview 08:08

Quick Sort Implementation Preview 08:46

Quick Sort Call Stack Walkthrough Preview 04:15

Quick Sort Big O Complexity Preview 04:06

PREREQUISITES Preview 00:13

Radix Sort: Introduction Preview 09:22

Radix Sort: Helper Methods Preview 11:09

Radix Sort: Pseudocode Preview 04:18

Radix Sort: Implementation Preview 10:24

Radix Sort: BIG O Complexity Preview 03:51

Which Data Structure Is The Best? Preview 12:38

ES2015 Class Syntax Overview Preview 05:14

Data Structures: The Class Keyword Preview 06:36

Data Structures: Adding Instance Methods Preview 09:49

Data Structures: Adding Class Methods Preview 07:11

PREREQUISITES Preview 00:06

Intro to Singly Linked Lists Preview 07:46

Starter Code and Push Intro Preview 07:22

Singly Linked List: Push Solution Preview 04:24

Singly Linked List: Pop Intro Preview 06:14

Singly Linked List: Pop Solution Preview 07:35

Singly Linked List: Shift Intro Preview 01:31

Singly Linked List: Shift Solution Preview 03:22

Singly Linked List: Unshift Intro Preview 01:34

Singly Linked List: Unshift Solution Preview 05:58

Singly Linked List: Get Intro Preview 02:32

Singly Linked List: Get Solution Preview 03:32

Singly Linked List: Set Intro Preview 01:26

Singly Linked List: Set Solution Preview 02:10

Singly Linked List: Insert Intro Preview 04:27

Singly Linked List: Insert Solution Preview 07:49

Singly Linked List: Remove Intro Preview 01:56

Singly Linked List: Remove Solution Preview 03:15

Singly Linked List: Reverse Intro Preview 04:46

Singly Linked List: Reverse Solution Preview 08:58

Singly Linked List: BIG O Complexity Preview 05:41

PREREQUISITES Preview 00:07

Doubly Linked Lists Introduction Preview 04:43

Setting Up Our Node Class Preview 03:00

Push Preview 02:10

Push Solution Preview 04:04

Pop Preview 03:20

Pop Solution Preview 06:23

Shift Preview 02:44

Shift Solution Preview 04:12

Unshift Preview 01:36

Unshift Solution Preview 02:19

Get Preview 04:02

Get Solution Preview 07:04

Set Preview 01:18

Set Solution Preview 02:08

Insert Preview 02:50

Insert Solution Preview 06:48

Remove Preview 02:18

Remove Solution Preview 06:28

Comparing Singly and Doubly Linked Lists Preview 04:32

DLL push - Exercise

DLL unshift - Exercise

DLL shift - Exercise

DLL set - Exercise

DLL- remove Exercise

DLL pop - Exercise

DLL get - Exercise

Doubly Linked Lists insert / remove - Exercise

DLL reverse - Exercise

PREREQUISITES Preview 00:12

Intro to Stacks Preview 06:19

Creating a Stack with an Array Preview 07:05

Writing Our Own Stack From Scratch Preview 11:33

BIG O of Stacks Preview 02:14

Intro to Queues Preview 04:14

Creating Queues Using Arrays Preview 03:25

Writing Our Own Queue From Scratch Preview 10:24

BIG O of Queues Preview 02:30

PREREQUISITES Preview 00:13

Introduction to Trees Preview 06:45

Uses For Trees Preview 06:32

Intro to Binary Trees Preview 05:54

POP QUIZ! Preview 01:13

Searching A Binary Search Tree Preview 02:55

Our Tree Classes Preview 02:44

BST: Insert Preview 03:50

BST: Insert Solution Preview 11:53

BST: Find Preview 04:42

BST: Find Solution Preview 05:36

Big O of Binary Search Trees Preview 05:58

PREREQUISITES Preview 00:14

Intro To Tree Traversal Preview 04:50

Breadth First Search Intro Preview 05:51

Breadth First Search Solution Preview 06:20

Depth First PreOrder Intro Preview 05:37

Depth First PreOrder Solution Preview 06:50

Depth First PostOrder Intro Preview 04:02

Depth First PostOrder Solution Preview 02:38

Depth First InOrder Intro Preview 02:07

Depth First InOrder Solution Preview 02:32

When to Use BFS and DFS Preview 07:37

PREREQUISITES Preview 00:15

Intro to Heaps Preview 07:30

Storing Heaps Preview 07:05

Heap: Insert Intro Preview 09:14

Heap: Insert Solution Preview 10:51

Heap: ExtractMax Intro Preview 08:28

Heap: ExtractMax Solution Preview 17:56

Priority Queue Intro Preview 08:59

Priority Queue Pseudocode Preview 03:43

Priority Queue Solution Preview 09:21

BIG O of Binary Heaps Preview 08:54

PREREQUISITES Preview 00:06

Intro to Hash Tables Preview 05:50

More About Hash Tables Preview 04:32

Intro to Hash Functions Preview 06:11

Writing Our First Hash Function Preview 08:27

Improving Our Hash Function Preview 07:10

Handling Collisions Preview 03:59

Hash Table Set and Get Preview 04:02

Hash Table Set Solution Preview 05:14

Hash Table Get Solution Preview 06:43

Hash Table Keys and Values Preview 01:41

Hash Table Keys and Values Solution Preview 08:43

Hash Table Big O Complexity Preview 05:41

PREREQUISITES Preview 00:14

Intro to Graphs Preview 03:50

Uses for Graphs Preview 07:57

Types of Graphs Preview 08:48

Storing Graphs: Adjacency Matrix Preview 03:57

Storing Graphs: Adjacency List Preview 02:29

Adjacency Matrix Vs. List BIG O Preview 05:51

Add Vertex Intro Preview 02:10

Add Vertex Solution Preview 02:54

Add Edge Intro Preview 02:32

Add Edge Solution Preview 02:11

Remove Edge Intro Preview 01:35

Remove Edge Solution Preview 02:41

Remove Vertex Intro Preview 02:35

Remove Vertex Solution Preview 04:34

PREREQUISITES Preview 00:16

Intro to Graph Traversal Preview 08:38

Depth First Graph Traversal Preview 08:30

DFS Recursive Intro Preview 07:27

DFS Recursive Solution Preview 12:45

DFS Iterative Intro Preview 03:37

DFS Iterative Solution Preview 08:44

Breadth First Graph Traversal Preview 02:59

BFS Intro Preview 02:27

BFS Solution Preview 08:09

PREREQUISITES Preview 00:16

Intro to Dijkstra's and Prerequisites Preview 02:41

Who was Dijkstra and what is his Algorithm? Preview 09:00

Writing a Weighted Graph Preview 05:20

Walking through the Algorithm Preview 16:26

Introducing Our Simple Priority Queue Preview 03:48

Dijkstra's Pseudo-Code Preview 04:28

Implementing Dijkstra's Algorithm Preview 21:18

Upgrading the Priority Queue Preview 01:52

Intro to Dynamic Programming Preview 05:03

Overlapping Subproblems Preview 05:59

Optimal Substructure Preview 06:28

Writing A Recursive Solution Preview 06:43

Time Complexity of Our Solution Preview 04:11

The Problem With Our Solution Preview 03:39

Enter Memoization! Preview 09:00

Time Complexity of Memoized Solution Preview 03:27

Tabulation: A Bottom Up Approach Preview 06:59

VERY IMPORTANT NOTE! PLEASE READ! Preview 00:20

SLL - push Exercise

SLL - pop exercise

SLL - get Exercise

SLL - insert Exercise

SLL - Rotate Exercise

SLL - set Exercise

Divide and Conquer - countZeroes

Divide and Conquer - sortedFrequency

Divide and Conquer - findRotatedIndex

Bubble Sort

Selection Sort

SLL - remove Exercise

Insertion Sort

Sorting Exercise - merge helper

Merge Sort

Sorting Exercise - pivot helper

Quick Sort

Radix Sort Helper - getDigit

Radix Sort Helper - digitCount

Radix Sort Helper - mostDigits

Radix Sort

Stacks - push Exercise

Stacks - pop Exercise

Stack with 2 Queues

Queues - enqueue Exercise

Binary Search Tree - insert Exercise

BinarySearchTree - find

Binary Search Tree - DFS Exercise

Binary Search Tree - BFS Exercise

Binary Search Tree - remove Exercise

Binary Search Tree Exercise - Find 2nd largest node

Binary Search Tree Exercise - Check if balanced

BinaryHeap - insert Exercise

BinaryHeap - extractMax Exercise

Graphs Exercise - addVertex

Graphs Exercise - removeEdge

Graphs Exercise - removeVertex

Graphs - DFS Exercise

Graphs Exercise - addEdge

Graphs - BFS Exercise

Graphs - Dijkstra Exercise

Dynamic Programming - Coin Change

Coin Change - Greedy Algorithm

Frequency Counter - constructNote

Frequency Counter - findAllDuplicates

Frequency Counter / Multiple Pointer - findPair

Trie Exercise - addWord

Trie Exercise - removeWord

Trie Exercise - findWord

Trie Exercise - getWords

Trie - autocomplete