Algorithms and Data Structures in Python
4.2 (2,474 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
14,653 students enrolled

Algorithms and Data Structures in Python

A guide to implement the most up to date algorithms from scratch: arrays, linked lists, graph algorithms and sorting
4.2 (2,474 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
14,653 students enrolled
Created by Holczer Balazs
Last updated 8/2020
English
English [Auto], Polish [Auto]
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 14.5 hours on-demand video
  • 21 articles
  • 4 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Have a good grasp of algorithmic thinking
  • Be able to develop your own algorithms
  • Be able to detect and correct inefficient code snippets
Requirements
  • Python basics
  • Some theoretical background ( big O notation )
Description

This course is about data structures and algorithms. We are going to implement the problems in Python. I highly recommend typing out these data structures and algorithms several times on your own in order to get a good grasp of it.

Section 1:

  • setting up the environment

  • data structures and abstract data types

Section 2:

  • what is an array data structure

  • arrays related interview questions

  • linked list data structure and its implementation

Section 3:

  • stacks and queues

  • related interview questions

Section 4:

  • what are binary search trees

  • practical applications of binary search trees

Section 5:

  • problems with binary trees

  • balanced trees: AVL trees and red-black trees

Section 6:

  • what are heaps

  • heapsort algorithm

Section 7:

  • associative arrays and dictionaries

  • how to achieve O(1) constant running time with hashing

  • ternary search trees as associative arrays

Section 8:

  • basic graph algorithms

  • breadth-first and depth-first search

Section 9:

  • shortest path algorithms

  • Dijkstra's algroithm

  • Bellman-Ford algorithm

Section 10:

  • what are spanning trees

  • Kruskal algorithm

Section 11:

  • sorting algorithms

  • bubble sort, selection sort and insertion sort

  • quicksort and merge sort

  • non-comparison based sorting algorithms

  • counting sort and radix sort

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:
  • This course is suited for anyone who has some basic knowledge in Python
Course content
Expand all 160 lectures 14:32:28
+ Installation and Environment Setup
2 lectures 00:44
Installing Python and PyCharm on Windows
00:23
Installing Python and PyCharm on Mac
00:20
+ Data Structures - Linked LIsts
9 lectures 56:45
Linked list introduction - operations
09:32
Linked list theory - doubly linked list
01:40
Linked list introduction - linked lists versus arrays
06:36
Linked list implementation II
04:20
Linked list implementation III
08:27
Doubly linked list introduction
05:59
Practical (real-world) applications of linked lists
05:17
Lists Quiz
3 questions
+ Data Structures - Stacks & Queues
7 lectures 44:14
Stack introduction
04:00
Stacks in memory management ( stacks, heaps )
07:23
Stacks and recursive method calls
07:02
Stack implementation
08:41
Queue introduction
05:12
Queue implementation
08:36
Practical (real-world) applications of stacks
03:20
Stack & Queue Quiz
3 questions
+ Data Structures - Binary Search Trees
10 lectures 01:03:01
Binary search trees theory - basics
10:23
Binary search trees theory - search, insert
04:25
Binary search trees theory - delete
06:08
Binary search trees theory - in-order traversal
04:25
Binary search trees theory - running times
02:10
Binary search tree implementation I
07:56
Binary Search Tree implementation II
10:29
Binary Search Tree implementation III
13:52
Practical (real-world) applications of trees
03:06
Binary Search Trees Quiz
5 questions
Download updated BST source code
00:07
+ Data Structures - Balanced Binary Trees (AVL Trees)
11 lectures 01:08:21
AVL trees introduction - motivation
04:13
AVL trees introduction - basics
05:21
AVL trees introduction - height
08:44
AVL trees introduction - rotations cases
10:17
AVL trees introduction - illustration
10:50
AVL trees introduction - applications
03:38
AVL tree implementation I
07:06
AVL tree implementation II
07:02
AVL tree implementation III
07:51
AVL tree implementation IV
03:12
Download updated AVL tree source code
00:07
+ Data Structures - Balanced Binary Trees (Red-Black Trees)
13 lectures 01:03:09
Red-black trees introduction - basics
10:38
The logic behind red-black trees
04:15
Red-black trees rotations- cases I
05:10
Red-black trees rotations- cases II
04:25
Red-black trees rotations- cases III
03:17
Red-black trees rotations- cases IV
02:46
Red-black trees introduction - example I
04:47
Red-black trees introduction - example II
04:19
Red-black tree versus AVL tree
03:25
Red-black tree implementation I
07:49
Red-black tree implementation II
08:56
Red-black tree implementation III
03:20
Red black tree source code
00:02
Balanced Trees Quiz
3 questions
+ Data Structures - Heaps
11 lectures 01:03:59
Priority queues introduction
08:13
Heap introduction - basics
08:14
Heap introduction - array representation
09:17
Heap introduction - remove operation
04:43
Heap introduction - heapsort
05:13
Heap introduction - operations complexities
05:05
Other types of heaps: binomial and Fibonacci heap
02:59
Heap implementation I
07:47
Heap implementation II
06:15
Heap implementation III
02:18
Heaps in Python
03:55
Heaps Quiz
3 questions