Course Information
Course Overview
A guide to implement data structures, graph algorithms and sorting algorithms from scratch with interview questions!
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!
Course Content
- 35 section(s)
- 209 lecture(s)
- Section 1 Introduction
- Section 2 Installation and Environment Setup
- Section 3 ### DATA STRUCTURES ###
- Section 4 Data Structures - Arrays
- Section 5 Interview Questions - (Arrays)
- Section 6 Data Structures - Linked Lists
- Section 7 Data Structures - Doubly Linked Lists
- Section 8 Interview Questions (Linked Lists)
- Section 9 Data Structures - Stacks
- Section 10 Data Structures - Queues
- Section 11 Interview Questions (Stacks and Queues)
- Section 12 Data Structures - Binary Search Trees
- Section 13 Interview Questions (Binary Search Trees)
- Section 14 Data Structures - AVL Trees
- Section 15 Data Structures - Red-Black Trees
- Section 16 Data Structures - Heaps
- Section 17 Interview Questions (Heaps)
- Section 18 Data Structures - Associative Arrays (Dictionaries)
- Section 19 ### GRAPH ALGORITHMS ###
- Section 20 Graph Algorithms - Graph Traversal Algorithms
- Section 21 Depth-First Search
- Section 22 Interview Questions (Graph Traversal)
- Section 23 Graph Algorithms - Shortest Paths with Dijkstra's Algorithm
- Section 24 Graph Algorithms - Shortest Paths with Bellman-Ford Algorithm
- Section 25 Interview Questions (Shortest Paths)
- Section 26 Graph Algorithms - Spanning Trees with Kruskal Algorithm
- Section 27 Graph Algorithms - Spanning Trees with Prims Algorithm
- Section 28 Hamiltonian Cycles - Travelling Salesman Problem
- Section 29 ### SUBSTRING SEARCH ALGORITHMS ###
- Section 30 ### SORTING ALGORITHMS ###
- Section 31 Interview Questions (Sorting)
- Section 32 Other Algorithmic Problems
- Section 33 ### APPENDIX - COMPLEXITY THEORY CRASH COURSE ###
- Section 34 Next Steps
- Section 35 Course Materials (DOWNLOADS)
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
Skills covered in this course
Reviews
-
MMendes Romeo
Good so far
-
DDaniel Isepciuc
I like the level of details and the multiple examples presented when describing the data structures. For running the examples, you need to know a bit of python and not assume you will learn it in this course.
-
SStsee yeah
Everything is well explained. Although I hoped there could be more practice questions
-
VVinod Naik
Time Complexity explained in detail, All Data Structures and Algos are covered and given very good indepth explenation. Thanks