Course Highlights
  • 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
Curriculum

2 Topics
Introduction
Complexity theory basics

2 Topics
Installing Python
Installing PyCharm

3 Topics
Why do we need data structures?
Data structures and abstract data types
Data Structures and Abstract Data Types Quiz

7 Topics
What are array data structures?
What are lists in Python?
Arrays introduction - operations
Lists in Python
Lists in Python - advanced operations
Lists in Python - list comprehension
Arrays and Lists Quiz

8 Topics
Reversing an array in-place exercise
Reversing an array in-place solution
Palindrome exercise
Palindrome problem solution
Integer reversion exercise
Integer reversion problem solution
Anagram problem exercise
Anagram problem solution

10 Topics
What are linked lists?
Linked list introduction - operations
Pros and cons of linked lists
Linked list implementation I
Linked list implementation II
Linked list implementation III
Revisiting remove operation
Comparing linked lists and arrays
Practical (real-world) applications of linked lists
Linked Lists Quiz

4 Topics
What are doubly linked lists?
Doubly linked list implementation
Running time comparison: linked lists and arrays
Doubly Linked Lists Quiz

4 Topics
Finding the middle node in a linked list exercise
Finding the middle node in a linked list solution
Reverse a linked list in-place exercise
Reverse a linked list in-place solution

6 Topics
What are stacks?
Stacks in memory management (stacks and heaps)
Stack memory visualization
Stack implementation
Practical (real-world) applications of stacks
Stack Quiz

3 Topics
What are queues?
Queue implementation
Queues Quiz

5 Topics
Max in a stack problem overview
Max in a stack problem solution
Queue with stack problem
Queue with stack problem solution
Queue with stack problem solution - recursion

12 Topics
What are binary search trees?
Binary search trees theory - search insert
Binary search trees theory - delete
Binary search trees theory - in-order traversal
Pros and cons of binary search trees
Binary search tree implementation I
Binary search tree implementation II
Stack memory visualization - finding max (min) items
Stack memory visualization - tree traversal
Binary search tree implementation III - remove operation
Practical (real-world) applications of trees
Binary Search Trees Quiz

2 Topics
Compare binary trees exercise
Compare binary trees solution

12 Topics
Motivation behind balanced binary search trees
What are AVL trees?
AVL trees introduction - height
AVL trees introduction - rotations
AVL trees introduction - illustration
AVL tree implementation I
AVL tree implementation II
AVL tree implementation III
AVL tree implementation IV
AVL tree implementation V
Practical (real-world) applications of balanced binary search trees
AVL Trees Quiz

10 Topics
What are red-black trees?
The logic behind red-black trees
Red-black trees - recoloring and rotation cases
Red-black tree illustrations
Red-black tree implementation I
Red-black tree implementation II
Red-black tree implementation III
Red-black tree implementation IV
Differences between red-black tree and AVL trees
Red-Black Trees Quiz

12 Topics
What are priority queues?
Heap introduction - basics
Heap introduction - array representation
Heap introduction - remove operation
Using heap data structure to sort (heapsort)
Heap introduction - operations complexities
Binomial and Fibonacci heaps
Heap implementation I
Heap implementation II
Heap implementation III
Heaps in Python
Heaps Quiz

4 Topics
Checking heap properties exercise
Checking heap properties solution
Max heap to min heap exercise
Max heap to min heap solution

11 Topics
What are associative arrays?
Hashtable introduction - basics
Hashtable introduction - collisions
Hashtable introduction - dynamic resizing
Linear probing implementation I
Linear probing implementation II
Linear probing implementation III
Dictionaires in Python
Why to use prime numbers in hashing?
Practical (real-world) applications of hashing
Dictionaries Quiz

4 Topics
Graph theory overview
Adjacency matrix and adjacency list
Applications of graphs
Graph Algorithms Overview Quiz

5 Topics
Breadth-first search introduction
Breadth-first search implementation
Applications of breadth-first search
What are WebCrawlers (core of search engines)?
WebCrawler basic implementation

5 Topics
Depth-first search introduction
Depth-first search implementation
Applications of depth-first search
Memory management of graph traversal algorithms
Graph traversal quiz

5 Topics
Interview question #1 - implement DFS with recursion
Interview question #1 - solution
Depth-first search and stack memory visualisation
Interview question #2 - using BFS to find way out of maze
Interview question #2 - solution

10 Topics
What is the shortest path problem?
Dijkstra algorithm visualization
Dijkstra algorithm implementation I - Edge Node
Dijkstra algorithm implementation II - algorithm
Dijkstra algorithm implementation III - testing
Dijktsra's algorithm with adjacency matrix representation
Adjacency matrix representation implementation
Shortest path algorithms applications
What is the critical path method (CPM)?
Dijkstra's Algorithm Quiz

7 Topics
What is the Bellman-Ford algorithm?
Bellman-Ford algorithm visualization
Bellman-Ford algorithm implementation I - Node Edge
Bellman-Ford algorithm implementation II - the algorithm
Bellman-Ford algorithm implementation III - testing
Greedy algorithm or dynamic programming approach?
Bellman-Ford Algorithm Quiz

3 Topics
Interview question #1 - detecting negative cycles on the FOREX
How to use Bellman-Ford algorithm on the FOREX?
Interview question #1 - solution

8 Topics
What is the disjoint set data structure?
Disjoint sets visualization
Kruskal's algorithm introduction
Kruskal algorithm implementation I - basic classes
Kruskal algorithm implementation II - disjoint set
Kruskal algorithm implementation III - algorithm
Kruskal algorithm implementation VI - testing
Kruskal's Algorithm Quiz

6 Topics
What is the Prim-Jarnik algorithm?
Prims-Jarnik algorithm implementation I
Prims-Jarnik algorithm implementation II
Comparing the spanning tree approaches
Applications of spanning trees
Prim's Algorithm Quiz

6 Topics
What are Hamiltonian cycles?
The travelling salesman problem
Travelling salesman problem implementation
TSP and stack memory visualization
Why to use meta-heuristics?
Hamiltonian Problem Quiz

17 Topics
Brute-force search introduction
Brute-force substring search algorithm exercise
Brute-force substring search algorithm implementation
Naive Substring Search Quiz
Rabin-Karp algorithm introduction
Rabin-Karp algorithm implementation
Rabin-Karp Substring Search Quiz
Knuth-Morris-Pratt algorithm introduction
Constructing the partial match table - visualization
Knuth-Morris-Pratt algorithm implementation
Knuth-Morris-Pratt Algorithm Quiz
Z algorithm introduction
Z algorithm illustration
Z algorithm implementation
Z Algorithm Quiz
Substring search algorithms comparison
Applications of substring search

38 Topics
Sorting introduction
What is stability in sorting?
What is adaptive sorting?
Sorting Algorithms Basics Quiz
Bogo sort introduction
Bogo sort implementation
Bogo Sort Quiz
Bubble sort introduction
Bubble sort implementation
Selection sort introduction
Selection sort implementation
Selection Sort Quiz
Insertion sort introduction
Insertion sort implementation
Sorting custom objects with insertion sort
Solution - sorting custom objects with insertion sort
Insertion Sort Quiz
Shell sort introduction
Shell sort implementation
Shell Sort Quiz
Quicksort introduction
Quicksort introduction - example
Quicksort implementation
Hoare's partitioning and Lomuto's partitioning
What is the worst-case scenario for quicksort?
QuickSort Quiz
Merge sort introduction
Merge sort implementation
Stack memory and merge sort visualization
Merge Sort Quiz
Hybrid algorithms introduction
Non-comparison based algorithms
Counting sort introduction
Counting sort implementation
Radix sort introduction
Radix sort implementation
Measure running time differences
Non-Comparison Based Sorting Quiz

6 Topics
TimSort algorithm
Interview question #1 - solution
Quicksort with iteration
Interview question #2 - solution
Selection sort with recursion
Interview question #3 - solution

6 Topics
Dutch national flag problem overview
Dutch national flag problem theory
Dutch national flag problem solution
Trapping rain water problem overview
Trapping rain water problem theory
Trapping rain water problem solution

8 Topics
How to measure the running times of algorithms?
Complexity theory illustration
Complexity notations - big O (ordo)
Complexity notations - big Ω (omega)
Complexity notations - big (θ) theta
Algorithm running times
Complexity classes
Analysis of algorithms - loops

1 Topic
Next steps

1 Topic
Download course materials (slides and source code)

  Write a Review

Algorithms and Data Structures in Python (INTERVIEW Q&A)

Go to Paid Course