Section 1 : Introduction

Lecture 1 Curriculum Walkthrough 00:07:43 Duration
Lecture 2 INTRODUCTION TO BRAINMEASURES PROCTOR SYSTEM
Lecture 3 How I'm Running My Code 00:03:21 Duration

Section 2 : Big O Notation

Lecture 1 Intro to Big O 00:07:42 Duration
Lecture 2 Timing Our Code 00:10:19 Duration
Lecture 3 Counting Operations 00:04:36 Duration
Lecture 4 Visualizing Time Complexities 00:04:25 Duration
Lecture 5 Official Intro to Big O 00:09:58 Duration
Lecture 6 Simplifying Big O Expressions 00:09:32 Duration
Lecture 7 Space Complexity 00:06:27 Duration
Lecture 8 Logs and Section Recap 00:08:46 Duration

Section 3 : Analyzing Performance of Arrays and Objects

Lecture 1 PREREQUISITES
Lecture 2 Section Introduction 00:01:43 Duration
Lecture 3 The BIG O of Objects 00:05:32 Duration
Lecture 4 When are Arrays Slow 00:06:25 Duration
Lecture 5 Big O of Array Methods 00:05:56 Duration

Section 4 : Problem Solving Approach

Lecture 1 PREREQUISITES
Lecture 2 Introduction to Problem Solving 00:07:08 Duration
Lecture 3 Step 1 Understand The Problem 00:07:59 Duration
Lecture 4 Step 2 Concrete Examples 00:06:19 Duration
Lecture 5 Step 3 Break It Down 00:07:45 Duration
Lecture 6 Step 4 Solve Or Simplify 00:10:33 Duration
Lecture 7 Step 5 Look Back and Refactor 00:16:57 Duration
Lecture 8 Recap and Interview Strategies 00:04:12 Duration

Section 5 : Problem Solving Patterns

Lecture 1 PREREQUISITES
Lecture 2 Intro to Problem Solving Patterns 00:02:56 Duration
Lecture 3 Frequency Counter Pattern 00:15:11 Duration
Lecture 4 Frequency Counter Anagram Challenge 00:02:34 Duration
Lecture 5 Anagram Challenge Solution 00:06:18 Duration
Lecture 6 Multiple Pointers Pattern 00:09:43 Duration
Lecture 7 Multiple Pointers Count Unique Values Challenge 00:04:30 Duration
Lecture 8 Count Unique Values Solution 00:06:31 Duration
Lecture 9 Sliding Window Pattern 00:13:14 Duration
Lecture 10 Divide And Conquer Pattern 00:07:02 Duration

Section 6 : 100% OPTIONAL Challenges

Lecture 1 IMPORTANT NOTE!
Lecture 2 SOLUTIONS PART 1
Lecture 3 SOLUTIONS PART 2
Lecture 4 SOLUTIONS PART 3

Section 7 : Recursion

Lecture 1 PREREQUISITES
Lecture 2 Story Time Martin & The Dragon 00:07:07 Duration
Lecture 3 Why Use Recursion 00:05:53 Duration
Lecture 4 The Call Stack 00:07:08 Duration
Lecture 5 Our First Recursive Function 00:05:12 Duration
Lecture 6 Our Second Recursive Function 00:07:54 Duration
Lecture 7 Writing Factorial Iteratively 00:02:19 Duration
Lecture 8 Writing Factorial Recursively 00:03:16 Duration
Lecture 9 Common Recursion Pitfalls 00:05:07 Duration
Lecture 10 Helper Method Recursion 00:06:23 Duration
Lecture 11 Pure Recursion 00:07:45 Duration

Section 8 : Recursion Problem Set

Lecture 1 START HERE!
Lecture 2 SOLUTIONS FOR THIS SECTION

Section 9 : Bonus CHALLENGING Recursion Problems

Lecture 1 NOTE ON THIS SECTION
Lecture 2 SOLUTIONS PART 1
Lecture 3 SOLUTIONS PART 2

Section 10 : Searching Algorithms

Lecture 1 PREREQUISITES
Lecture 2 Intro to Searching 00:04:04 Duration
Lecture 3 Intro to Linear Search 00:04:47 Duration
Lecture 4 Linear Search Solution 00:05:19 Duration
Lecture 5 Linear Search BIG O
Lecture 6 Intro to Binary Search 00:05:48 Duration
Lecture 7 Binary Search PseudoCode 00:02:40 Duration
Lecture 8 Binary Search Solution 00:16:41 Duration
Lecture 9 Binary Search BIG O 00:06:09 Duration
Lecture 10 Naive String Search 00:04:38 Duration
Lecture 11 Naive String Search Implementation 00:12:30 Duration
Lecture 12 KNP COMING SOON

Section 11 : Bubble Sort

Lecture 1 PREREQUISITES
Lecture 2 Introduction to Sorting Algorithms 00:08:36 Duration
Lecture 3 Built-In JavaScript Sorting 00:04:40 Duration
Lecture 4 Bubble Sort Overview 00:07:21 Duration
Lecture 5 Bubble Sort Implementation 00:09:58 Duration
Lecture 6 Bubble Sort Optimization 00:04:22 Duration
Lecture 7 Bubble Sort BIG O Complexity 00:01:28 Duration

Section 12 : Selection Sort

Lecture 1 PREREQUISITES
Lecture 2 Selection Sort Introduction 00:06:19 Duration
Lecture 3 Selection Sort Implementation 00:11:14 Duration
Lecture 4 Selection Sort Big O Complexity 00:01:40 Duration

Section 13 : Insertion Sort

Lecture 1 PREREQUISITES
Lecture 2 Insertion Sort Introduction 00:03:17 Duration
Lecture 3 Insertion Sort Implementation 00:10:43 Duration
Lecture 4 Insertion Sort BIG O Complexity 00:02:25 Duration

Section 14 : Comparing Bubble, Selection, and Insertion Sort

Lecture 1 Comparing Bubble, Selection, and Insertion Sort 00:05:34 Duration

Section 15 : Merge Sort

Lecture 1 PREREQUISITES
Lecture 2 Intro to the Crazier Sorts 00:06:06 Duration
Lecture 3 Merge Sort Introduction 00:05:26 Duration
Lecture 4 Merging Arrays Intro 00:05:11 Duration
Lecture 5 Merging Arrays Implementation 00:06:55 Duration
Lecture 6 Writing Merge Sort Part 1 00:02:21 Duration
Lecture 7 Writing Merge Sort Part 2 00:12:37 Duration
Lecture 8 Merge Sort BIG O Complexity 00:06:22 Duration

Section 16 : Quick Sort

Lecture 1 PREREQUISITES
Lecture 2 Introduction to Quick Sort 00:09:01 Duration
Lecture 3 Pivot Helper Introduction 00:08:06 Duration
Lecture 4 Pivot Helper Implementation 00:08:08 Duration
Lecture 5 Quick Sort Implementation 00:08:46 Duration
Lecture 6 Quick Sort Call Stack Walkthrough 00:04:16 Duration
Lecture 7 Quick Sort Big O Complexity 00:04:06 Duration

Section 17 : Radix Sort

Lecture 1 PREREQUISITES
Lecture 2 Radix Sort Introduction 00:09:23 Duration
Lecture 3 Radix Sort Helper Methods
Lecture 4 Radix Sort Pseudocode 00:04:18 Duration
Lecture 5 Radix Sort Implementation 00:10:25 Duration
Lecture 6 Radix Sort BIG O Complexity 00:03:51 Duration

Section 18 : Data Structures Introduction

Lecture 1 Which Data Structure Is The Best 00:12:39 Duration
Lecture 2 ES2015 Class Syntax Overview 00:05:15 Duration
Lecture 3 Data Structures The Class Keyword 00:06:37 Duration
Lecture 4 Data Structures Adding Instance Methods 00:09:50 Duration
Lecture 5 Data Structures Adding Class Methods 00:07:12 Duration

Section 19 : Singly Linked Lists

Lecture 1 PREREQUISITES
Lecture 2 Intro to Singly Linked Lists 00:07:47 Duration
Lecture 3 Starter Code and Push Intro 00:07:22 Duration
Lecture 4 Singly Linked List Push Solution 00:04:25 Duration
Lecture 5 Singly Linked List Pop Intro 00:06:14 Duration
Lecture 6 Singly Linked List Pop Solution 00:07:35 Duration
Lecture 7 Singly Linked List Shift Intro 00:01:31 Duration
Lecture 8 Singly Linked List Shift Solution 00:03:22 Duration
Lecture 9 Singly Linked List Unshift Intro 00:01:35 Duration
Lecture 10 Singly Linked List Unshift Solution 00:05:58 Duration
Lecture 11 Singly Linked List Get Intro 00:02:32 Duration
Lecture 12 Singly Linked List Get Solution 00:03:32 Duration
Lecture 13 Singly Linked List Set Intro 00:01:26 Duration
Lecture 14 Singly Linked List Set Solution 00:02:11 Duration
Lecture 15 Singly Linked List Insert Intro 00:04:27 Duration
Lecture 16 Singly Linked List Insert Solution
Lecture 17 Singly Linked List Remove Intro 00:01:56 Duration
Lecture 18 Singly Linked List Remove Solution 00:03:15 Duration
Lecture 19 Singly Linked List Reverse Intro 00:04:46 Duration
Lecture 20 Singly Linked List Reverse Solution 00:08:59 Duration
Lecture 21 Singly Linked List BIG O Complexity 00:05:41 Duration

Section 20 : Doubly Linked Lists

Lecture 1 PREREQUISITES
Lecture 2 Doubly Linked Lists Introduction 00:04:44 Duration
Lecture 3 Setting Up Our Node Class 00:03:00 Duration
Lecture 4 Push 00:02:11 Duration
Lecture 5 Push Solution 00:04:05 Duration
Lecture 6 Pop 00:03:20 Duration
Lecture 7 Pop Solution 00:06:24 Duration
Lecture 8 Shift 00:02:45 Duration
Lecture 9 Shift Solution 00:04:12 Duration
Lecture 10 Unshift 00:01:36 Duration
Lecture 11 Unshift Solution 00:02:19 Duration
Lecture 12 Get 00:04:02 Duration
Lecture 13 Get Solution 00:07:05 Duration
Lecture 14 Set 00:01:18 Duration
Lecture 15 Set Solution 00:02:08 Duration
Lecture 16 Insert 00:02:50 Duration
Lecture 17 Insert Solution 00:06:48 Duration
Lecture 18 Remove 00:02:19 Duration
Lecture 19 Remove Solution 00:06:28 Duration
Lecture 20 Comparing Singly and Doubly Linked Lists 00:04:32 Duration

Section 21 : Stacks + Queues

Lecture 1 PREREQUISITES
Lecture 2 Intro to Stacks 00:06:19 Duration
Lecture 3 Creating a Stack with an Array 00:07:05 Duration
Lecture 4 Writing Our Own Stack From Scratch 00:11:33 Duration
Lecture 5 BIG O of Stacks 00:02:15 Duration
Lecture 6 Intro to Queues 00:04:15 Duration
Lecture 7 Creating Queues Using Arrays 00:03:25 Duration
Lecture 8 Writing Our Own Queue From Scratch 00:10:24 Duration
Lecture 9 BIG O of Queues

Section 22 : Binary Search Trees

Lecture 1 PREREQUISITES
Lecture 2 Introduction to Trees 00:06:46 Duration
Lecture 3 Uses For Trees 00:06:32 Duration
Lecture 4 Intro to Binary Trees 00:05:54 Duration
Lecture 5 POP QUIZ! 00:01:14 Duration
Lecture 6 Searching A Binary Search Tree 00:02:55 Duration
Lecture 7 Our Tree Classes 00:02:45 Duration
Lecture 8 BST Insert 00:03:51 Duration
Lecture 9 BST Insert Solution 00:11:53 Duration
Lecture 10 BST Find 00:04:42 Duration
Lecture 11 BST Find Solution 00:05:36 Duration
Lecture 12 Big O of Binary Search Trees 00:05:59 Duration

Section 23 : Tree Traversal

Lecture 1 PREREQUISITES
Lecture 2 Intro To Tree Traversal 00:04:50 Duration
Lecture 3 Breadth First Search Intro 00:05:52 Duration
Lecture 4 Breadth First Search Solution 00:06:21 Duration
Lecture 5 Depth First PreOrder Intro 00:05:38 Duration
Lecture 6 Depth First PreOrder Solution 00:06:50 Duration
Lecture 7 Depth First PostOrder Intro 00:04:02 Duration
Lecture 8 Depth First PostOrder Solution 00:02:39 Duration
Lecture 9 Depth First InOrder Intro 00:02:08 Duration
Lecture 10 Depth First InOrder Solution 00:02:33 Duration
Lecture 11 When to Use BFS and DFS 00:07:37 Duration

Section 24 : Binary Heaps

Lecture 1 PREREQUISITES
Lecture 2 Intro to Heaps 00:07:31 Duration
Lecture 3 Storing Heaps 00:07:06 Duration
Lecture 4 Heap Insert Intro 00:09:15 Duration
Lecture 5 Heap Insert Solution 00:10:52 Duration
Lecture 6 Heap ExtractMax Intro 00:08:28 Duration
Lecture 7 Heap ExtractMax Solution 00:17:56 Duration
Lecture 8 Priority Queue Intro
Lecture 9 Priority Queue Pseudocode 00:03:43 Duration
Lecture 10 Priority Queue Solution 00:09:21 Duration
Lecture 11 BIG O of Binary Heaps 00:08:54 Duration

Section 25 : Hash Tables

Lecture 1 PREREQUISITES
Lecture 2 Intro to Hash Tables 00:05:50 Duration
Lecture 3 More About Hash Tables 00:04:32 Duration
Lecture 4 Intro to Hash Functions 00:06:11 Duration
Lecture 5 Writing Our First Hash Function 00:08:27 Duration
Lecture 6 Improving Our Hash Function 00:07:10 Duration
Lecture 7 Handling Collisions 00:04:00 Duration
Lecture 8 Hash Table Set and Get 00:04:03 Duration
Lecture 9 Hash Table Set Solution 00:05:15 Duration
Lecture 10 Hash Table Get Solution 00:06:43 Duration
Lecture 11 Hash Table Keys and Values 00:01:42 Duration
Lecture 12 Hash Table Keys and Values Solution 00:08:44 Duration
Lecture 13 Hash Table Big O Complexity 00:05:41 Duration

Section 26 : Graphs

Lecture 1 PREREQUISITES
Lecture 2 Intro to Graphs 00:03:50 Duration
Lecture 3 Uses for Graphs 00:07:58 Duration
Lecture 4 Types of Graphs 00:08:49 Duration
Lecture 5 Storing Graphs Adjacency Matrix 00:03:57 Duration
Lecture 6 Storing Graphs Adjacency List 00:02:29 Duration
Lecture 7 Adjacency Matrix Vs 00:05:51 Duration
Lecture 8 Add Vertex Intro 00:02:10 Duration
Lecture 9 Add Vertex Solution 00:02:54 Duration
Lecture 10 Add Edge Intro 00:02:33 Duration
Lecture 11 Add Edge Solution 00:02:11 Duration
Lecture 12 Remove Edge Intro 00:01:36 Duration
Lecture 13 Remove Edge Solution 00:02:42 Duration
Lecture 14 Remove Vertex Intro 00:02:36 Duration
Lecture 15 Remove Vertex Solution 00:04:34 Duration

Section 27 : Graph Traversal

Lecture 1 PREREQUISITES
Lecture 2 Intro to Graph Traversal 00:08:38 Duration
Lecture 3 Depth First Graph Traversal 00:08:31 Duration
Lecture 4 DFS Recursive Intro 00:07:28 Duration
Lecture 5 DFS Recursive Solution 00:12:45 Duration
Lecture 6 DFS Iterative Intro 00:03:38 Duration
Lecture 7 DFS Iterative Solution 00:08:44 Duration
Lecture 8 Breadth First Graph Traversal 00:03:00 Duration
Lecture 9 BFS Intro 00:02:27 Duration
Lecture 10 BFS Solution 00:08:09 Duration

Section 28 : Dijkstra's Algorithm!

Lecture 1 PREREQUISITES
Lecture 2 Intro to Dijkstra's and Prerequisites 00:02:42 Duration
Lecture 3 Who was Dijkstra and what is his Algorithm 00:09:00 Duration
Lecture 4 Writing a Weighted Graph 00:05:20 Duration
Lecture 5 Walking through the Algorithm 00:16:27 Duration
Lecture 6 Introducing Our Simple Priority Queue 00:03:48 Duration
Lecture 7 Dijkstra's Pseudo-Code 00:04:29 Duration
Lecture 8 Implementing Dijkstra's Algorithm 00:21:19 Duration
Lecture 9 Upgrading the Priority Queue 00:01:53 Duration

Section 29 : Dynamic Programming

Lecture 1 Intro to Dynamic Programming 00:05:03 Duration
Lecture 2 Overlapping Subproblems 00:06:00 Duration
Lecture 3 Optimal Substructure 00:06:28 Duration
Lecture 4 Writing A Recursive Solution 00:06:43 Duration
Lecture 5 Time Complexity of Our Solution 00:04:12 Duration
Lecture 6 The Problem With Our Solution 00:03:39 Duration
Lecture 7 Enter Memoization! 00:09:01 Duration
Lecture 8 Time Complexity of Memoized Solution 00:03:27 Duration
Lecture 9 Tabulation A Bottom Up Approach 00:06:59 Duration