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

Master data structures, graph algorithms, and sorting techniques in Python through hands-on coding and interview questions in this comprehensive course.

  • Overview
  • Curriculum
  • Instructor
  • Review

Brief Summary

This course dives into data structures and algorithms, teaching you how to implement them from scratch in Python. You'll explore various structures like arrays, linked lists, and trees, while mastering graph algorithms, sorting techniques, and solving real-world problems.

Key Points

  • Introduction to data structures and algorithms.
  • Implementation in Python.
  • Understanding arrays, linked lists, stacks, and queues.
  • Binary trees, AVL trees, and red-black trees.
  • Graph algorithms, sorting algorithms, and their applications.

Learning Outcomes

  • Implement key data structures and algorithms in Python.
  • Understand the differences between various types of data structures.
  • Solve interview questions related to stacks, queues, and trees.
  • Analyze the efficiency of algorithms using Big O notation.
  • Apply learned concepts in practical scenarios like investment banking or AI.

About This Course

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!

  • Understand arrays and linked lists

  • Understand stacks and queues

  • Understand tree like data structures (binary search trees)

Course Curriculum

2 Lectures

1 Lectures

1 Lectures

1 Lectures

Instructor

Profile photo of Holczer Balazs
Holczer Balazs

My name is Balazs Holczer. I am from Budapest, Hungary. I am qualified as a physicist. At the moment I am working as a simulation engineer at a multinational company. I have been interested in algorithms and data structures and its implementations especially in Java since university. Later on I got acquainted with machine learning techniques, artificial intelligence, numerical methods...

Review
4.9 course rating
4K ratings
ui-avatar of 유지상
유지상
5.0
8 months ago

I can clearly understand and visualize the instructor's point. The lectures are concise and not that difficult to understand, and a lot of details.

  • Helpful
  • Not helpful
ui-avatar of Sanskar Mishra
Sanskar M.
4.0
1 year ago

the way hge teach actually make me understand.
in this chapter i gain a knowledge about what the linked datastructure are actually how it have more edge over the array data structure.
it also help in implementing complex datastructure and abstract datastructure as well like stack and queue.

  • Helpful
  • Not helpful
ui-avatar of James Franklin Smith
James F. S.
5.0
1 year ago

I am a new Computer Science student and i wanted to get a head start on this subject.

  • Helpful
  • Not helpful
ui-avatar of Pradeep Singh
Pradeep S.
4.0
1 year ago

The course is good and the coding exercises are interactive. Tempo of the lecturer can be slightly slow while explaining things.

  • Helpful
  • Not helpful
ui-avatar of Uchechukwu
Uchechukwu
3.0
1 year ago

Good

  • Helpful
  • Not helpful
ui-avatar of Divyesh
Divyesh
5.0
1 year ago

The lecturer explained things well, I especially appreciate that this course focuses more on fundamental understanding rather than just coding

  • Helpful
  • Not helpful
ui-avatar of Anonymized User
Anonymized U.
5.0
1 year ago

Best of all times!

  • Helpful
  • Not helpful
ui-avatar of Adi Teitel
Adi T.
5.0
1 year ago

Excellent course! Very well explained

  • Helpful
  • Not helpful
ui-avatar of İbrahim Doğa Sarı
İbrahim D. S.
5.0
2 years ago

This is a very good beginning for the course. I learn a lot.

  • Helpful
  • Not helpful
ui-avatar of Jay Pedersen
Jay P.
5.0
2 years ago

The instructor Balazs Holzcer has created an algorithm course that is tremendously ambitious -- and DELIVERS on all of it. A tremendous number of non-trivial algorithms covered related to graphs, balanced trees, sorting, substring searching. I especially appreciate the graph algorithms -- you don't get this quality of coverage of a large number of graph algorithms very often. Bravo!

Bottom line -- the visualizations of the algorithms are the core strength of this course and all the algorithm courses that Balazs teaches. The other co-strength is the quality of the python code that is given in the course. I have had little to no problems with the code. This is a huge plus, and is sadly somewhat rare to find.

The 3rd strong point is the powerpoint slides are also delivered.

Thank you Balazs! This course is a gold mine!

  • Helpful
  • Not helpful
Leave A Reply

Your email address will not be published. Required fields are marked *

Ratings

Courses You May Like

Lorem ipsum dolor sit amet elit
Show More Courses