image
The Ultimate Drawing Course Beginner to Advanced...
$179
$79
image
User Experience Design Essentials - Adobe XD UI UX...
$179
$79
Total:
$659

Description

This course is about
data structures, algorithms and graphs
. We are going to implement the problems in
Python programming
language. I highly recommend typing out these data structures and algorithms several times on your own in order to get a good grasp of it.
So what are you going to learn in this course?
Section 1:
setting up the environment
differences between data structures and abstract data types
Section 2 - Arrays:
what is an array data structure
arrays related interview questions
Section 3 - Linked Lists:
linked list data structure and its implementation
doubly linked lists
linked lists related interview questions
Section 4 - Stacks and Queues:
stacks and queues
stack memory and heap memory
how the stack memory works exactly?
stacks and queues related interview questions
Section 5 - Binary Search Trees:
what are binary search trees
practical applications of binary search trees
problems with binary trees
Section 6 - Balanced Binary Trees (AVL Trees and Red-Black Trees):
why to use balanced binary search trees
AVL trees
red-black trees
Section 7 - Priority Queues and Heaps:
what are priority queues
what are heaps
heapsort algorithm overview
Section 8 - Hashing and Dictionaries:
associative arrays and dictionaries
how to achieve
O(1)
constant running time with hashing
Section 9 - Graph Traversal:
basic graph algorithms
breadth-first
depth-first search
stack memory visualization for DFS
Section 10 - Shortest Path problems (Dijkstra's and Bellman-Ford Algorithms):
shortest path algorithms
Dijkstra's algorithm
Bellman-Ford algorithm
how to detect arbitrage opportunities on the FOREX?
Section 11 - Spanning Trees (Kruskal's and Prim's Approaches):
what are spanning trees
what is the union-find data structure and how to use it
Kruskal's algorithm theory and implementation as well
Prim's algorithm
Section 12 - Substring Search Algorithms
what are substring search algorithms and why are they important in real world softwares
brute-force substring search algorithm
hashing and Rabin-Karp method
Knuth-Morris-Pratt substring search algorithm
Z substring search algorithm (Z algorithm)
implementations in Python
Section 13 - Hamiltonian Cycles (Travelling Salesman Problem)
Hamiltonian cycles in graphs
what is the travelling salesman problem?
how to use backtracking to solve the problem
meta-heuristic approaches to boost algorithms
Section 14 - Sorting Algorithms
sorting algorithms
bubble sort, selection sort and insertion sort
quicksort and merge sort
non-comparison based sorting algorithms
counting sort and radix sort
Section 15 - Algorithms Analysis
how to measure the running time of algorithms
running time analysis with big
O
(ordo), big
Ω
(omega) and big
θ
(theta)

notations
complexity classes
polynomial (P) and non-deterministic polynomial (NP) algorithms
O(1), O(logN), O(N) and several other running time complexities
In the first part of the course we are going to learn about basic
data structures such
as linked lists, stacks, queues, binary search trees, heaps and some advanced ones such as AVL trees and red-black trees.. The second part will be about graph algorithms such as spanning trees, shortest path algorithms and graph traversing. We will try to optimize each data structure as much as possible.
In each chapter I am going to talk about the theoretical background of each algorithm or data structure, then we are going to write the code step by step in Python.
Most of the advanced algorithms relies heavily on these topics so it is definitely worth understanding the basics. These principles can be used in several fields: in investment banking, artificial intelligence or electronic trading algorithms on the stock market. Research institutes use Python as a programming language in the main: there are a lot of library available for the public from machine learning to complex networks.
Thanks for joining the course,
let's get started!
Who this course is for:
Beginner Python developers curious about graphs, algorithms and data structures

What you'll learn

Understand arrays and linked lists

Understand stacks and queues

Understand tree like data structures (binary search trees)

Understand balances trees (AVL trees and red-black trees)

Understand heap data structures

Understand hashing, hash tables and dictionaries

Understand the differences between data structures and abstract data types

Understand graph traversing (BFS and DFS)

Understand shortest path algorithms such as Dijkstra's approach or Bellman-Ford method

Understand minimum spanning trees (Prims's algorithm)

Understand sorting algorithms

Be able to develop your own algorithms

Have a good grasp of algorithmic thinking

Be able to detect and correct inefficient code snippets

Requirements

  • You will need a copy of Adobe XD 2019 or above. A free trial can be downloaded from Adobe.
  • No previous design experience is needed.
  • No previous Adobe XD skills are needed.

Course Content

27 sections • 95 lectures
Expand All Sections
1-Introduction
2
1.1-Introduction
1.2-Complexity theory basics
2-Installation and Environment Setup
2
2.1-Installing Python
2.2-Installing PyCharm
3-### DATA STRUCTURES ###
3
3.1-Why do we need data structures?
3.2-Data structures and abstract data types
3.3-Data Structures and Abstract Data Types Quiz
4-Data Structures - Arrays
7
4.1-What are array data structures?
4.2-What are lists in Python?
4.3-Arrays introduction - operations
4.4-Lists in Python
4.5-Lists in Python - advanced operations
4.6-Lists in Python - list comprehension
4.7-Arrays and Lists Quiz
5-Interview Questions - (Arrays)
8
5.1-Reversing an array in-place exercise
5.2-Reversing an array in-place solution
5.3-Palindrome exercise
5.4-Palindrome problem solution
5.5-Integer reversion exercise
5.6-Integer reversion problem solution
5.7-Anagram problem exercise
5.8-Anagram problem solution
6-Data Structures - Linked Lists
10
6.1-What are linked lists?
6.2-Linked list introduction - operations
6.3-Pros and cons of linked lists
6.4-Linked list implementation I
6.5-Linked list implementation II
6.6-Linked list implementation III
6.7-Revisiting remove operation
6.8-Comparing linked lists and arrays
6.9-Practical (real-world) applications of linked lists
6.10-Linked Lists Quiz
7-Data Structures - Doubly Linked Lists
4
7.1-What are doubly linked lists?
7.2-Doubly linked list implementation
7.3-Running time comparison: linked lists and arrays
7.4-Doubly Linked Lists Quiz
8-Interview Questions (Linked Lists)
4
8.1-Finding the middle node in a linked list exercise
8.2-Finding the middle node in a linked list solution
8.3-Reverse a linked list in-place exercise
8.4-Reverse a linked list in-place solution
9-Data Structures - Stacks
6
9.1-What are stacks?
9.2-Stacks in memory management (stacks and heaps)
9.3-Stack memory visualization
9.4-Stack implementation
9.5-Practical (real-world) applications of stacks
9.6-Stack Quiz
10-Data Structures - Queues
3
10.1-What are queues?
10.2-Queue implementation
10.3-Queues Quiz
11-Interview Questions (Stacks and Queues)
5
11.1-Max in a stack problem overview
11.2-Max in a stack problem solution
11.3-Queue with stack problem
11.4-Queue with stack problem solution
11.5-Queue with stack problem solution - recursion
12-Data Structures - Binary Search Trees
12
12.1-What are binary search trees?
12.2-Binary search trees theory - search, insert
12.3-Binary search trees theory - delete
12.4-Binary search trees theory - in-order traversal
12.5-Pros and cons of binary search trees
12.6-Binary search tree implementation I
12.7-Binary search tree implementation II
12.8-Stack memory visualization - finding max (min) items
12.9-Stack memory visualization - tree traversal
12.10-Binary search tree implementation III - remove operation
12.11-Practical (real-world) applications of trees
12.12-Binary Search Trees Quiz
13-Interview Questions (Binary Search Trees)
2
13.1-Compare binary trees exercise
13.2-Compare binary trees solution
14-Data Structures - AVL Trees
12
14.1-Motivation behind balanced binary search trees
14.2-What are AVL trees?
14.3-AVL trees introduction - height
14.4-AVL trees introduction - rotations
14.5-AVL trees introduction - illustration
14.6-AVL tree implementation I
14.7-AVL tree implementation II
14.8-AVL tree implementation III
14.9-AVL tree implementation IV
14.10-AVL tree implementation V
14.11-Practical (real-world) applications of balanced binary search trees
14.12-AVL Trees Quiz
15-Data Structures - Red-Black Trees
10
15.1-What are red-black trees?
15.2-The logic behind red-black trees
15.3-Red-black trees - recoloring and rotation cases
15.4-Red-black tree illustrations
15.5-Red-black tree implementation I
15.6-Red-black tree implementation II
15.7-Red-black tree implementation III
15.8-Red-black tree implementation IV
15.9-Differences between red-black tree and AVL trees
15.10-Red-Black Trees Quiz
16-Data Structures - Heaps
12
16.1-What are priority queues?
16.2-Heap introduction - basics
16.3-Heap introduction - array representation
16.4-Heap introduction - remove operation
16.5-Using heap data structure to sort (heapsort)
16.6-Heap introduction - operations complexities
16.7-Binomial and Fibonacci heaps
16.8-Heap implementation I
16.9-Heap implementation II
16.10-Heap implementation III
16.11-Heaps in Python
16.12-Heaps Quiz
17-Interview Questions (Heaps)
4
17.1-Checking heap properties exercise
17.2-Checking heap properties solution
17.3-Max heap to min heap exercise
17.4-Max heap to min heap solution
18-Data Structures - Associative Arrays (Dictionaries)
11
18.1-What are associative arrays?
18.2-Hashtable introduction - basics
18.3-Hashtable introduction - collisions
18.4-Hashtable introduction - dynamic resizing
18.5-Linear probing implementation I
18.6-Linear probing implementation II
18.7-Linear probing implementation III
18.8-Dictionaires in Python
18.9-Why to use prime numbers in hashing?
18.10-Practical (real-world) applications of hashing
18.11-Dictionaries Quiz
19-### GRAPH ALGORITHMS ###
4
19.1-Graph theory overview
19.2-Adjacency matrix and adjacency list
19.3-Applications of graphs
19.4-Graph Algorithms Overview Quiz
20-Graph Algorithms - Graph Traversal Algorithms
5
20.1-Breadth-first search introduction
20.2-Breadth-first search implementation
20.3-Applications of breadth-first search
20.4-What are WebCrawlers (core of search engines)?
20.5-WebCrawler basic implementation
21-Depth-First Search
5
21.1-Depth-first search introduction
21.2-Depth-first search implementation
21.3-Applications of depth-first search
21.4-Memory management of graph traversal algorithms
21.5-Graph traversal quiz
22-Interview Questions (Graph Traversal)
5
22.1-Interview question #1 - implement DFS with recursion
22.2-Interview question #1 - solution
22.3-Depth-first search and stack memory visualisation
22.4-Interview question #2 - using BFS to find way out of maze
22.5-Interview question #2 - solution
23-Graph Algorithms - Shortest Paths with Dijkstra's Algorithm
10
23.1-What is the shortest path problem?
23.2-Dijkstra algorithm visualization
23.3-Dijkstra algorithm implementation I - Edge, Node
23.4-Dijkstra algorithm implementation II - algorithm
23.5-Dijkstra algorithm implementation III - testing
23.6-Dijktsra's algorithm with adjacency matrix representation
23.7-Adjacency matrix representation implementation
23.8-Shortest path algorithms applications
23.9-What is the critical path method (CPM)?
23.10-Dijkstra's Algorithm Quiz
24-Graph Algorithms - Shortest Paths with Bellman-Ford Algorithm
7
24.1-What is the Bellman-Ford algorithm?
24.2-Bellman-Ford algorithm visualization
24.3-Bellman-Ford algorithm implementation I - Node, Edge
24.4-Bellman-Ford algorithm implementation II - the algorithm
24.5-Bellman-Ford algorithm implementation III - testing
24.6-Greedy algorithm or dynamic programming approach?
24.7-Bellman-Ford Algorithm Quiz
25-Interview Questions (Shortest Paths)
3
25.1-Interview question #1 - detecting negative cycles on the FOREX
25.2-How to use Bellman-Ford algorithm on the FOREX?
25.3-Interview question #1 - solution
26-Graph Algorithms - Spanning Trees with Kruskal Algorithm
8
26.1-What is the disjoint set data structure?
26.2-Disjoint sets visualization
26.3-Kruskal's algorithm introduction
26.4-Kruskal algorithm implementation I - basic classes
26.5-Kruskal algorithm implementation II - disjoint set
26.6-Kruskal algorithm implementation III - algorithm
26.7-Kruskal algorithm implementation VI - testing
26.8-Kruskal's Algorithm Quiz
27-Graph Algorithms - Spanning Trees with Prims Algorithm
6
27.1-What is the Prim-Jarnik algorithm?
27.2-Prims-Jarnik algorithm implementation I
27.3-Prims-Jarnik algorithm implementation II
27.4-Comparing the spanning tree approaches
27.5-Applications of spanning trees
27.6-Prim's Algorithm Quiz
28-Hamiltonian Cycles - Travelling Salesman Problem
6
28.1-What are Hamiltonian cycles?
28.2-The travelling salesman problem
28.3-Travelling salesman problem implementation
28.4-TSP and stack memory visualization
28.5-Why to use meta-heuristics?
28.6-Hamiltonian Problem Quiz
29-### SUBSTRING SEARCH ALGORITHMS ###
17
29.1-Brute-force search introduction
29.2-Brute-force substring search algorithm exercise
29.3-Brute-force substring search algorithm implementation
29.4-Naive Substring Search Quiz
29.5-Rabin-Karp algorithm introduction
29.6-Rabin-Karp algorithm implementation
29.7-Rabin-Karp Substring Search Quiz
29.8-Knuth-Morris-Pratt algorithm introduction
29.9-Constructing the partial match table - visualization
29.10-Knuth-Morris-Pratt algorithm implementation
29.11-Knuth-Morris-Pratt Algorithm Quiz
29.12-Z algorithm introduction
29.13-Z algorithm illustration
29.14-Z algorithm implementation
29.15-Z Algorithm Quiz
29.16-Substring search algorithms comparison
29.17-Applications of substring search
30-### SORTING ALGORITHMS ###
38
30.1-Sorting introduction
30.2-What is stability in sorting?
30.3-What is adaptive sorting?
30.4-Sorting Algorithms Basics Quiz
30.5-Bogo sort introduction
30.6-Bogo sort implementation
30.7-Bogo Sort Quiz
30.8-Bubble sort introduction
30.9-Bubble sort implementation
30.10-Selection sort introduction
30.11-Selection sort implementation
30.12-Selection Sort Quiz
30.13-Insertion sort introduction
30.14-Insertion sort implementation
30.15-Sorting custom objects with insertion sort
30.16-Solution - sorting custom objects with insertion sort
30.17-Insertion Sort Quiz
30.18-Shell sort introduction
30.19-Shell sort implementation
30.20-Shell Sort Quiz
30.21-Quicksort introduction
30.22-Quicksort introduction - example
30.23-Quicksort implementation
30.24-Hoare's partitioning and Lomuto's partitioning
30.25-What is the worst-case scenario for quicksort?
30.26-QuickSort Quiz
30.27-Merge sort introduction
30.28-Merge sort implementation
30.29-Stack memory and merge sort visualization
30.30-Merge Sort Quiz
30.31-Hybrid algorithms introduction
30.32-Non-comparison based algorithms
30.33-Counting sort introduction
30.34-Counting sort implementation
30.35-Radix sort introduction
30.36-Radix sort implementation
30.37-Measure running time differences
30.38-Non-Comparison Based Sorting Quiz
31-Interview Questions (Sorting)
6
31.1-TimSort algorithm
31.2-Interview question #1 - solution
31.3-Quicksort with iteration
31.4-Interview question #2 - solution
31.5-Selection sort with recursion
31.6-Interview question #3 - solution
32-Other Algorithmic Problems
6
32.1-Dutch national flag problem overview
32.2-Dutch national flag problem theory
32.3-Dutch national flag problem solution
32.4-Trapping rain water problem overview
32.5-Trapping rain water problem theory
32.6-Trapping rain water problem solution
33-### APPENDIX - COMPLEXITY THEORY CRASH COURSE ###
8
33.1-How to measure the running times of algorithms?
33.2-Complexity theory illustration
33.3-Complexity notations - big O (ordo)
33.4-Complexity notations - big Ω (omega)
33.5-Complexity notations - big (θ) theta
33.6-Algorithm running times
33.7-Complexity classes
33.8-Analysis of algorithms - loops
34-Next Steps
1
34.1-Next steps
35-Course Materials (DOWNLOADS)
1
35.1-Download course materials (slides and source code)