We may earn an affiliate commission when you visit our partners.
Course image
Holczer Balazs

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.

Read more

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.

Enroll now

What's inside

Learning objectives

  • 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
  • Show more
  • Show less

Syllabus

Introduction
Complexity theory basics
Installation and Environment Setup
Installing Python
Read more
Installing PyCharm
### DATA STRUCTURES ###
Why do we need data structures?
Data structures and abstract data types
Data Structures and Abstract Data Types Quiz
Data Structures - Arrays
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
Interview Questions - (Arrays)
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
Data Structures - Linked Lists
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
Data Structures - Doubly Linked Lists
What are doubly linked lists?
Doubly linked list implementation
Running time comparison: linked lists and arrays
Doubly Linked Lists Quiz
Interview Questions (Linked Lists)
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
Data Structures - Stacks
What are stacks?
Stacks in memory management (stacks and heaps)
Stack memory visualization
Stack implementation
Practical (real-world) applications of stacks
Stack Quiz
Data Structures - Queues
What are queues?
Queue implementation
Queues Quiz
Interview Questions (Stacks and Queues)
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
Data Structures - Binary Search Trees
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
Interview Questions (Binary Search Trees)
Compare binary trees exercise
Compare binary trees solution
Data Structures - AVL Trees
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
Data Structures - Red-Black Trees
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

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Covers core fundamentals of data structures and algorithms, essential building blocks for software engineering
Emphasizes hands-on coding in Python, widely used in industry and research
In-depth exploration of binary search trees, AVL trees, and red-black trees, critical for optimizing data storage and retrieval
Introduces graph traversal algorithms, graph search techniques, and their applications in real-world scenarios
Covers sorting algorithms, a fundamental skill in computer science and software development
Suitable for beginners and intermediate learners with some programming experience

Save this course

Save Algorithms and Data Structures in Python (INTERVIEW Q&A) to your list so you can find it easily later:
Save

Reviews summary

Great course for interview prep

Learners say this course is a great resource for preparing for coding interviews. It provides clear explanations, a good balance of theory and practice, and engaging quizzes. Students find the content to be well-structured and not too difficult.
Engaging quizzes.
"It also has quizzes"
Good course for interview prep.
"Very clear, meaningful explanation."
"Not hard, not easy."
"Nicely structured: theory-practice-examples."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Algorithms and Data Structures in Python (INTERVIEW Q&A) with these activities:
Review Python fundamentals
Refresh and strengthen basic Python skills to ensure a solid foundation for the course.
Browse courses on Python
Show steps
  • Review basic syntax, data types, and control flow.
  • Complete coding exercises or practice problems.
  • Familiarize yourself with Python libraries related to the course.
Introduction to Algorithms
Gain a deeper understanding of fundamental algorithms and their applications by reviewing a classic textbook.
Show steps
  • Read the selected chapters relevant to course topics.
  • Solve practice problems and exercises.
  • Discuss concepts and findings with peers or the instructor.
Seek guidance from experienced programmers
Connect with experienced individuals who can provide valuable insights, support, and guidance throughout your learning journey.
Browse courses on Mentorship
Show steps
  • Identify potential mentors through online platforms, local meetups, or personal networks.
  • Reach out to mentors with a clear request.
  • 定期交流,讨论相关主题,并寻求反馈。
Five other activities
Expand to see all activities and additional details
Show all eight activities
Complete practice problems on arrays
Strengthen understanding of fundamental array operations and data structure concepts.
Browse courses on Arrays
Show steps
  • Identify an online platform or textbook with practice problems.
  • Solve at least 25 practice problems.
  • Review solutions and identify areas for improvement.
Explore graph algorithms using NetworkX
Enhance understanding of graph algorithms and their practical applications through guided tutorials and hands-on exercises.
Browse courses on Graph Algorithms
Show steps
  • 熟悉NetworkX库的基本功能.
  • Implement graph traversal algorithms (BFS/DFS).
  • Analyze and visualize the results of graph algorithms.
Create and traverse binary search trees
Develop proficiency in implementing and manipulating binary search trees for efficient searching and retrieval.
Browse courses on Binary Search Trees
Show steps
  • Implement a binary search tree in Python.
  • Insert, search, and delete elements from the tree.
  • Analyze the performance of the tree for different input data sets.
Build a simple Python program using data structures
Apply data structure concepts to a practical project, solidifying understanding and fostering problem-solving skills.
Browse courses on Data Structures
Show steps
  • Identify a small project idea that involves data structures.
  • Design the data structures and algorithms to be used.
  • Implement the program in Python and test its functionality.
Design and implement a priority queue
Gain hands-on experience in building and utilizing priority queues, a critical data structure for real-world applications.
Browse courses on Priority Queues
Show steps
  • Understand the concept of priority queues and their applications.
  • Implement a priority queue using a heap data structure.
  • Test the priority queue with various input data and analyze its performance.

Career center

Learners who complete Algorithms and Data Structures in Python (INTERVIEW Q&A) will develop knowledge and skills that may be useful to these careers:
Algorithmic Trader
Algorithmic traders design, implement, and monitor computer programs that execute a series of trading orders based on predetermined rules or algorithms. The goal of using these algorithms is to trade stocks, bonds, or other financial instruments in an automated and profitable way. This course can be particularly helpful for algorithmic traders interested in improving their understanding of data structures and algorithms, as these concepts are essential for developing effective trading strategies. The course also covers graph algorithms, which can be useful for analyzing market trends and identifying trading opportunities.
Data Engineer
Data engineers design, build, and maintain the infrastructure that stores and processes data. They work with data analysts and other stakeholders to ensure that data is accessible and usable for analysis.
Data Scientist
Data scientists use a variety of techniques to extract insights from data. They work with data engineers and other stakeholders to develop machine learning models and other predictive analytics solutions.
Data Analyst
Data analysts collect, clean, and analyze data to help businesses make informed decisions. They use a variety of statistical and programming techniques to identify trends and patterns in data.
Quantitative Analyst
Quantitative analysts use mathematical and statistical models to analyze financial data and make investment decisions. They work with portfolio managers and other stakeholders to develop trading strategies and manage risk.
Investment Analyst
Investment analysts evaluate the financial performance of companies and make recommendations about whether to buy, sell, or hold their stocks. They use a variety of financial models and analytical techniques to assess a company's financial health and prospects.
Research Analyst
Research analysts conduct research on companies and industries to provide insights to investors. They use a variety of financial and economic models to analyze company performance and make recommendations about whether to buy, sell, or hold stocks.
Statistician
Statisticians collect, analyze, and interpret data to help businesses make informed decisions. They use a variety of statistical techniques to identify trends and patterns in data.
Software Developer
Software developers design, build, and maintain software applications. They work with a variety of programming languages and technologies to create software that meets the needs of users.
Technical Analyst
Technical analysts use charts and other technical indicators to analyze market trends and identify trading opportunities. They work with portfolio managers and other stakeholders to develop trading strategies and manage risk.
Teacher
Teachers plan and deliver instruction to students in a variety of settings. They use a variety of teaching methods and materials to help students learn.
Database Administrator
Database administrators design, build, and maintain databases. They work with a variety of database technologies to ensure that data is stored and accessed efficiently.
Computer Scientist
Computer scientists research and develop new computer technologies and applications. They work with a variety of programming languages and technologies to create new and innovative software solutions.
Web Developer
Web developers design and develop websites. They work with a variety of programming languages and technologies to create websites that are user-friendly and meet the needs of users.
Data Architect
Data architects design and build the infrastructure that stores and processes data. They work with data engineers and other stakeholders to ensure that data is accessible and usable for analysis.

Reading list

We've selected 13 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Algorithms and Data Structures in Python (INTERVIEW Q&A).
Classic textbook on algorithms and data structures. It widely used textbook at academic institutions for advanced undergraduate and graduate algorithms courses.
Comprehensive introduction to algorithms, data structures, and their applications. It widely used textbook and reference at academic institutions for introductory computer science courses.
Classic introduction to algorithms and data structures. It is written in a clear and concise style, and it provides a good overview of the most important algorithms and data structures.
Comprehensive introduction to algorithms and data structures for massive datasets. It covers a wide range of topics, including data mining, machine learning, and social network analysis.
Comprehensive introduction to data structures and algorithms in Java. It widely used textbook at academic institutions for introductory programming and data structures courses.
Comprehensive introduction to data structures and algorithms in C++. It widely used textbook at academic institutions for introductory programming and data structures courses.
Comprehensive introduction to data structures and algorithms in Python. It widely used textbook at academic institutions for introductory programming and data structures courses.
Comprehensive introduction to data structures and algorithms in C. It widely used textbook at academic institutions for introductory programming and data structures courses.
Comprehensive introduction to data structures and algorithms in C++. It widely used textbook at academic institutions for introductory programming and data structures courses.
Comprehensive introduction to algorithms and data structures in Haskell. It valuable reference for Haskell programmers who want to learn more about data structures and algorithms.
Comprehensive introduction to data structures and algorithms in Java. It widely used textbook at academic institutions for introductory programming and data structures courses.
Practical guide to data structures and algorithms in JavaScript. It provides a good overview of the most important algorithms, and it includes many examples and exercises.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Algorithms and Data Structures in Python (INTERVIEW Q&A).
Algorithms Data Structures in Java #1 (+INTERVIEW...
Most relevant
Algorithms Data Structures in Java #2 (+INTERVIEW...
Most relevant
Data Structures Fundamentals
Most relevant
Ordered Data Structures
Most relevant
Trees and Graphs: Basics
Most relevant
50 Days of DSA PYTHON Dynamic Programming, Question...
Most relevant
Java Data Structures and Algorithms Masterclass
Most relevant
Data Structures and Algorithm Design Part I | 数据结构与算法设计(上)
Most relevant
Advanced Algorithms (Graph Algorithms) in Java
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser