Section 1 : Introduction

Lecture 1 INTRODUCTION TO BRAINMEASURES PROCTOR SYSTEM
Lecture 2 About Certification

Section 2 : Data Structures Overview

Lecture 1 Why to use data structures 00:04:46 Duration
Lecture 2 Data structures and abstract data types 00:03:30 Duration

Section 3 : Installation and Environment Setup

Lecture 1 Installing Python and PyCharm on Windows
Lecture 2 Installing Python and PyCharm on Mac

Section 4 : Data Structures - Arrays

Lecture 1 What are array data structures 00:06:52 Duration
Lecture 2 Arrays introduction - operations 00:06:54 Duration
Lecture 3 Arrays in Python 00:08:01 Duration
Lecture 4 What are real arrays in Python 00:03:52 Duration

Section 5 : Interview Questions (Arrays)

Lecture 1 Reversing an array in-place overview
Lecture 2 Reversing an array in-place solution 00:04:39 Duration
Lecture 3 Palindrome problem overview
Lecture 4 Palindrome problem solution 00:06:29 Duration
Lecture 5 Integer reversion problem overview
Lecture 6 Integer reversion problem solution 00:09:57 Duration
Lecture 7 Anagram problem overview
Lecture 8 Anagram problem solution 00:05:38 Duration
Lecture 9 Duplicates in an array problem overview
Lecture 10 Duplicates in an array problem solution 00:10:34 Duration

Section 6 : Data Structures - Linked Lists

Lecture 1 What are linked lists 00:04:50 Duration
Lecture 2 Linked list introduction - operations 00:11:00 Duration
Lecture 3 Linked list implementation I 00:07:43 Duration
Lecture 4 Linked list implementation II 00:04:17 Duration
Lecture 5 Linked list implementation III 00:08:25 Duration
Lecture 6 Comparing linked lists and arrays 00:06:24 Duration
Lecture 7 Practical (real-world) applications of linked lists

Section 7 : Data Structures - Doubly Linked Lists

Lecture 1 What are doubly linked lists 00:06:55 Duration
Lecture 2 Doubly linked list implementation 00:08:08 Duration
Lecture 3 Running time comparison linked lists and arrays 00:03:54 Duration

Section 8 : Interview Questions (Linked Lists)

Lecture 1 Finding the middle node in a linked list overview
Lecture 2 Finding the middle node in a linked list solution 00:05:26 Duration
Lecture 3 Reverse a linked list in-place overview
Lecture 4 Reverse a linked list in-place solution 00:06:52 Duration

Section 9 : Data Structures - Stacks

Lecture 1 What are stacks 00:04:32 Duration
Lecture 2 Stacks in memory management (stacks and heaps ) 00:03:41 Duration
Lecture 3 Stack memory visualization 00:06:15 Duration
Lecture 4 Stack implementation 00:08:39 Duration
Lecture 5 Practical (real-world) applications of stacks 00:03:20 Duration

Section 10 : Data Structures - Queues

Lecture 1 What are queues 00:04:11 Duration
Lecture 2 Queue implementation 00:08:34 Duration

Section 11 : Interview Questions (Stacks and Queues)

Lecture 1 Max in a stack problem overview
Lecture 2 Max in a stack problem solution 00:07:05 Duration
Lecture 3 Queue with stack problem
Lecture 4 Queue with stack problem solution 00:06:04 Duration
Lecture 5 Queue with stack problem solution - recursion 00:03:46 Duration

Section 12 : Data Structures - Binary Search Trees

Lecture 1 What are binary search trees 00:14:33 Duration
Lecture 2 Binary search trees theory - search, insert 00:07:52 Duration
Lecture 3 Binary search trees theory - delete 00:06:12 Duration
Lecture 4 Binary search trees theory - in-order traversal 00:05:28 Duration
Lecture 5 Binary search trees theory - running times 00:04:31 Duration
Lecture 6 Binary search tree implementation I 00:07:54 Duration
Lecture 7 Binary Search Tree implementation II 00:10:26 Duration
Lecture 8 Stack memory visualization - finding max (min) items 00:04:37 Duration
Lecture 9 Stack memory visualization - tree traversal 00:05:55 Duration
Lecture 10 Binary Search Tree implementation III 00:13:50 Duration
Lecture 11 Practical (real-world) applications of trees

Section 13 : Interview Questions (Binary Search Trees)

Lecture 1 Compare binary trees overview
Lecture 2 Compare binary trees solution 00:04:25 Duration

Section 14 : Data Structures - AVL Trees

Lecture 1 Motivation behind balanced binary search trees 00:03:23 Duration
Lecture 2 What are AVL trees 00:06:43 Duration
Lecture 3 AVL trees introduction - height 00:12:35 Duration
Lecture 4 AVL trees introduction - rotations 00:09:03 Duration
Lecture 5 AVL trees introduction - illustration 00:05:14 Duration
Lecture 6 AVL tree implementation I 00:09:47 Duration
Lecture 7 AVL tree implementation II 00:08:16 Duration
Lecture 8 AVL tree implementation III
Lecture 9 AVL tree implementation IV 00:07:48 Duration
Lecture 10 AVL tree implementation V 00:02:21 Duration
Lecture 11 Practical (real-world) applications of balanced binary search trees 00:03:37 Duration

Section 15 : Data Structures - Red-Black Trees

Lecture 1 What are red-black trees 00:10:45 Duration
Lecture 2 The logic behind red-black trees 00:05:22 Duration
Lecture 3 Red-black trees - recoloring and rotation cases 00:09:22 Duration
Lecture 4 Red-black tree illustrations 00:07:33 Duration
Lecture 5 Red-black tree implementation I 00:06:51 Duration
Lecture 6 Red-black tree implementation II 00:05:34 Duration
Lecture 7 Red-black tree implementation III 00:09:57 Duration
Lecture 8 Red-black tree implementation IV 00:02:10 Duration
Lecture 9 Differences between red-black tree and AVL trees 00:02:43 Duration

Section 16 : Data Structures - Heaps

Lecture 1 What are priority queues 00:04:29 Duration
Lecture 2 Heap introduction - basics 00:10:11 Duration
Lecture 3 Heap introduction - array representation 00:09:33 Duration
Lecture 4 Heap introduction - remove operation 00:07:08 Duration
Lecture 5 Using heap data structure to sort (heapsort) 00:06:21 Duration
Lecture 6 Heap introduction - operations complexities 00:05:05 Duration
Lecture 7 Binomial and Fibonacci heaps 00:04:15 Duration
Lecture 8 Heap implementation I 00:05:09 Duration
Lecture 9 Heap implementation II 00:10:15 Duration
Lecture 10 Heap implementation III 00:04:27 Duration
Lecture 11 Heaps in Python 00:03:54 Duration

Section 17 : Interview Questions (Heaps)

Lecture 1 Interview question #1 - checking heap properties
Lecture 2 Interview question #1 - solution 00:06:44 Duration
Lecture 3 Interview question #2 - max heap to a min heap
Lecture 4 Interview question #2 - solution 00:06:54 Duration

Section 18 : Data Structures - Associative Arrays (Dictionaries)

Lecture 1 What are associative arrays 00:05:46 Duration
Lecture 2 Hashtable introduction - basics 00:11:20 Duration
Lecture 3 Hashtable introduction - collisions 00:11:16 Duration
Lecture 4 Hashtable introduction - dynamic resizing 00:07:05 Duration
Lecture 5 Linear probing implementation I 00:06:00 Duration
Lecture 6 Linear probing implementation II 00:06:24 Duration
Lecture 7 Linear probing implementation III 00:02:12 Duration
Lecture 8 Dictionaires in Python 00:03:38 Duration
Lecture 9 Practical (real-world) applications of hashing 00:06:31 Duration

Section 19 : Graph Algorithms Overview

Lecture 1 Graph theory overview 00:03:46 Duration
Lecture 2 Adjacency matrix and adjacency list 00:06:08 Duration
Lecture 3 Applications of graphs 00:04:02 Duration

Section 20 : Graph Algorithms - Graph Traversal Algorithms

Lecture 1 Breadth-first search introduction 00:09:29 Duration
Lecture 2 Breadth-first search implementation 00:07:57 Duration
Lecture 3 What are WebCrawlers (core of search engines) 00:05:47 Duration
Lecture 4 WebCrawler basic implementation 00:09:40 Duration
Lecture 5 Depth-first search introduction 00:10:20 Duration
Lecture 6 Depth-first search implementation 00:05:55 Duration
Lecture 7 Depth-first search implementation II
Lecture 8 Memory management BFS vs DFS 00:05:23 Duration

Section 21 : Interview Questions (Graph Traversal)

Lecture 1 Interview question #1 - implement DFS with recursion
Lecture 2 Interview question #1 - solution 00:02:52 Duration
Lecture 3 Depth-first search and stack memory visualisation 00:06:02 Duration
Lecture 4 Interview question #2 - using BFS to find way out of maze
Lecture 5 Interview question #2 - solution 00:16:15 Duration

Section 22 : Graph Algorithms - Shortest Paths with Dijkstra's Algorithm

Lecture 1 What is the shortest path problem 00:04:44 Duration
Lecture 2 Dijkstra algorithm visualization 00:11:00 Duration
Lecture 3 Dijkstra algorithm implementation I - Edge, Node 00:10:30 Duration
Lecture 4 Dijkstra algorithm implementation II - algorithm 00:13:54 Duration
Lecture 5 Dijkstra algorithm implementation III - testing 00:03:52 Duration
Lecture 6 Dijktsra's algorithm with adjacency matrix representation 00:12:08 Duration
Lecture 7 Adjacency matrix representation implementation 00:12:43 Duration
Lecture 8 Shortest path algorithms applications 00:05:05 Duration
Lecture 9 What is the critical path method (CPM) 00:04:08 Duration

Section 23 : Graph Algorithms - Shortest Paths with Bellman-Ford Algorithm

Lecture 1 What is the Bellman-Ford algorithm 00:13:37 Duration
Lecture 2 Bellman-Ford algorithm visualization 00:05:17 Duration
Lecture 3 Bellman-Ford algorithm implementation I - Node, Edge 00:01:36 Duration
Lecture 4 Bellman-Ford algorithm implementation II - the algorithm 00:07:43 Duration
Lecture 5 Bellman-Ford algorithm implementation III - testing 00:03:18 Duration
Lecture 6 Greedy algorithm or dynamic programming approach 00:05:43 Duration

Section 24 : Interview Questions (Shortest Paths)

Lecture 1 Interview question #1 - detecting negative cycles on the FOREX
Lecture 2 How to use Bellman-Ford algorithm on the FOREX 00:06:25 Duration
Lecture 3 Interview question #1 - solution

Section 25 : Graph Algorithms - Spanning Trees with Kruskal Algorithm

Lecture 1 What is the disjoint set data structure 00:14:11 Duration
Lecture 2 Disjoint sets visualization 00:05:50 Duration
Lecture 3 Kruskal's algorithm introduction 00:10:05 Duration
Lecture 4 Kruskal algorithm implementation I - basic classes 00:06:22 Duration
Lecture 5 Kruskal algorithm implementation II - disjoint set 00:13:00 Duration
Lecture 6 Kruskal algorithm implementation III - algorithm 00:05:12 Duration
Lecture 7 Kruskal algorithm implementation VI - testing 00:03:22 Duration

Section 26 : Graph Algorithms - Spanning Trees with Prims Algorithm

Lecture 1 What is the Prim-Jarnik algorithm 00:09:34 Duration
Lecture 2 Prims-Jarnik algorithm implementation I 00:10:23 Duration
Lecture 3 Prims-Jarnik algorithm implementation II 00:03:11 Duration
Lecture 4 Applications of spanning trees 00:06:03 Duration

Section 27 : Basic Sorting Algorithms

Lecture 1 Sorting introduction 00:07:34 Duration
Lecture 2 Visualizing sorting algorithms with Algorhyme
Lecture 3 What is stability in sorting 00:06:06 Duration
Lecture 4 What is adaptive sorting 00:03:10 Duration
Lecture 5 Bogo sort introduction 00:03:11 Duration
Lecture 6 Bogo sort implementation 00:07:50 Duration
Lecture 7 Bubble sort introduction 00:05:24 Duration
Lecture 8 Bubble sort implementation 00:05:29 Duration
Lecture 9 Selection sort introduction 00:05:14 Duration
Lecture 10 Selection sort implementation 00:05:27 Duration
Lecture 11 Insertion sort introduction 00:08:32 Duration
Lecture 12 Insertion sort implementation 00:05:21 Duration
Lecture 13 Exercise - sorting custom objects with insertion sort
Lecture 14 Solution - sorting custom objects with insertion sort
Lecture 15 Shell sort introduction 00:06:15 Duration
Lecture 16 Shell sort implementation 00:06:24 Duration
Lecture 17 Quicksort introduction 00:12:11 Duration
Lecture 18 Quicksort introduction - example 00:07:41 Duration
Lecture 19 Quicksort implementation 00:11:33 Duration
Lecture 20 Hoare's partitioning and Lomuto's partitioning
Lecture 21 What is the worst-case scenario for quicksort 00:07:18 Duration
Lecture 22 Merge sort introduction
Lecture 23 Merge sort implementation 00:08:20 Duration
Lecture 24 Stack memory and merge sort visualization 00:07:46 Duration
Lecture 25 Hybrid algorithms introduction 00:06:06 Duration
Lecture 26 Non-comparison based algorithms 00:02:11 Duration
Lecture 27 Counting sort introduction 00:10:14 Duration
Lecture 28 Measure running time differences
Lecture 29 Counting sort implementation 00:09:46 Duration
Lecture 30 Radix sort introduction 00:13:00 Duration
Lecture 31 Radix sort implementation 00:13:34 Duration

Section 28 : Interview Questions (Sorting)

Lecture 1 Interview question #1 - implementing TimSort algorithm
Lecture 2 Interview question #1 - solution
Lecture 3 Interview question #2 - implement quicksort with iteration
Lecture 4 Interview question #2 - solution
Lecture 5 Interview question #3 - implementing selection sort with recursion
Lecture 6 Interview question #3 - solution

Section 29 : Next Steps

Lecture 1 About Proctor Testing

Section 30 : Course Materials (DOWNLOADS)

Lecture 1 Download course materials (slides and source code)