
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
How to get the most out of this course
Learn to set up your coding environment using the course’s built-in Python exercises and run tests to verify solutions. Tips cover enabling Python and Code Runner for a clean workflow.
Explore how big O compares code by time and space complexity using operation counts. Prepare for coding interviews with practical examples of measuring performance and memory usage.
Explore the first big O, o(n), by implementing a print items function with a for loop that runs n times and prints i, illustrating linear time complexity.
Drop non-dominant terms to simplify big O, showing that O(n^2 + n) reduces to O(n^2) as n grows large by dominance analysis.
Demonstrate how binary search achieves O(log n) by halving a sorted list, and compare it with O(1), O(n), O(n^2), and O(n log n).
Learn how two input parameters affect time complexity, showing that with a and b you get O(a) plus O(b) and O(a × b) for nested loops.
Explore how pointers reference memory addresses in Python, showing integers are immutable while dictionaries are mutable, and how assignments share or separate memory addresses, with garbage collection and linked lists.
Master linked lists and big O performance, covering append, remove, add to front, middle insertions, removals, and lookup by value or index.
Create a linked list constructor using a dedicated node class to build nodes, initialize head and tail, and set the length. Use this pattern for append, prepend, and insert.
Traverse a linked list with a custom print list method, using a temp pointer from head to print each node’s value until the end.
Learn how to pop the last item from a linked list, handling empty and one node edge cases, updating tail, and returning the popped node.
Learn to pop the first node from a linked list by updating head, handling edge cases for zero, one, or multiple nodes, and returning the removed node.
Implement a get method for a linked list by index in Python. Validate the index, return None for invalid values, then move a temp pointer from head to the node.
Explore detecting a loop in linked lists using slow and fast pointers, distinguishing looping from non looping lists, and interpreting true or false outcomes in LeetCode style exercises.
Learn to convert a binary linked list to decimal by iteratively doubling the accumulated value and adding the current node’s bit, leveraging binary patterns from right to left.
Partition a linked list around a pivot using dummy nodes, collect nodes less than the pivot in one list and the rest in another, preserve relative order and connect lists.
Demonstrate how to reverse the nodes of a linked list between two indices using previous, current, a to_move variable, and a dummy node when the range includes the head.
Learn to swap pairs in a linked list using a dummy node and manipulating pointers to handle odd node counts.
Learn to implement a doubly linked list append method: handle empty list, link new node with previous tail, update tail, and return boolean, demonstrated by building 1 and 2.
Implement the pop method for a doubly linked list by moving tail to previous and breaking node connections. Handle edge cases for empty and single-item lists.
Implement a remove method for a doubly linked list that validates the index, uses get to locate the node, unlinks neighbors, updates length, and returns the removed node.
explains partition list with a doubly linked list, part of LeetCode challenges for doubly linked lists, and notes an edge case when the second list is empty requiring specific code.
Learn to implement a stack constructor using linked list nodes, track top and bottom and height, and print the stack with a print stack method.
Implement the stack pop method to remove and return the top node, update the top pointer to the next node, handle empty stacks, detach the popped node, and decrement length.
Welcome to Data Structures & Algorithms in Python
This course makes learning to code fun and makes hard concepts easy to understand.
How did I do this? By using animations!
Animating the Data Structures & Algorithms makes everything more visually engaging and allows students to learn more material - in less time - with higher retention (a pretty good combination).
I will use these visuals to guide you, step-by-step, through the entire course.
The course also includes dozens-and-dozens of Coding Exercises. So you can immediately put everything into practice as soon as you learn it (a very important step).
All of this will help you to feel more confident and prepared when you walk into a coding interview.
I have made several Free Sample Videos available for the course so you can see the difference the animations make.
Also, I am very active on the Q&A, so I will be with you every_step_of _the_way.
_____________________________
What you will get in this course…
Over 100 hand-crafted animated HD videos to illustrate the Data Structures & Algorithms.
Here are the topics we will cover:
Technical
Big O notation
Data Structures
Lists
Linked Lists
Doubly Linked Lists
Stacks & Queues
Binary Trees
Hash Tables
Heaps
Graphs
Heaps
Algorithms
Dynamic Programming
Sorting
Bubble Sort
Selection Sort
Insertion Sort
Merge Sort
Quick Sort
Searching
Breadth First Search
Depth First Search
Don't just take my word for it though, check out what existing students have to say about my courses:
5-Star Review:
"In order to describe this course accurately, we need the definition of the word Beautiful. beau·ti·ful: adjective 1.- pleasing the senses or mind aesthetically. 2.- of a very high standard; excellent." - Josue Hernandez Amezcua
5-Star Review:
"The best course on DSA on Udemy" - Enlai Li
5-Star Review:
"One of the best courses on DSA. The animations do make a huge impact. All the points are explained in detail. The only problem is that I can't give it more than a 5-star rating." - Nikita Sarkar
5-Star Review:
"Amazing Course. My words cannot describe how much animations helped me to understand the concepts. 100% Recommended." - Simarjeet Singh
5-Star Review:
Being a visual learner this is BY FAR the BEST course ever. The way the instructor presents this topic makes it so easy to understand." - Eduardo SN
5-Star Review:
"The animations were really helpful for an easy understanding, but the best thing about this course for me is that it will not waste your time! It is perfectly optimized, covers the important topics that I wanted, and at the same time perfectly clear. Thank you so much." - Fatemeh Moghaddam
5-Star Review:
"This course is very well done! ... the animations in each video take the explanation and understanding of the material to a new level." - Luis Felipe Posada
5-Star Review:
"This course has seriously been amazing. The animations have worked wonders for my understanding and I have made significant progress from the beginning of the course until now." - Dakota Fabro
5-Star Review:
"I can follow as a beginner, amazing." - Sabrina Fung
5-Star Review:
"This is the best course I have ever seen" - Luong Viet Tri
REMEMBER… I'm so confident that you'll love this course that we're offering a FULL money-back guarantee for 30 days! So it's a complete no-brainer, sign up today with ZERO risk and EVERYTHING to gain.
So what are you waiting for? Click the "Buy now" button and join the best Python Data Structures & Algorithms course on Udemy.
I look forward to seeing you in the course.
Now let's get started! :-)