
Explore the Big O concept, analyze time and space complexity, and prep for coding interviews with worst-case and constant space scenarios using practical Python examples.
Explore arrays as contiguous data blocks with random access via indices, using Python’s append for resizing and practicing reverse traversal with an even number replacement example.
Learn how a singly linked list uses nodes with next pointers, starting at the head, to traverse, search values, and perform insertions and deletions.
Learn to navigate linked lists with next and previous pointers and apply fast and slow pointers to detect cycles in a list, with hands-on problem solving.
Explore stacks, a last in, first out structure, and master push, pop, and peek operations, including handling empty or full stacks and implementing them with Python lists or linked lists.
Pop elements from a stack into a temporary stack while checking for the target number, then restore the original stack by pushing back from the temporary stack.
Explore queues as a linear, first-in, first-out data structure with end-appends and front-removals, using a dequeue library or two stacks to implement efficient enqueue and dequeue operations.
Explore hash maps by examining key–value pairs, a hash function mapping keys to buckets and handling collisions for fast lookups. See how Python dictionaries model maps and support key searches.
Explore binary trees, understand height and depth, and the maximum number of nodes per height. Practice preorder and inorder traversals with recursive pseudocode and root–left–right patterns.
Compare top-down and bottom-up approaches to compute a binary tree's height, using recursive left-right evaluation and max-height logic.
Explore binary search trees: their node ordering, handling duplicates, and balanced versus unbalanced trees; learn efficient search, insertion, and deletion with logarithmic height and practical validity checks.
Explore heap structures, distinguishing max-heap and min-heap where the root holds the largest or smallest value, and learn to implement them efficiently using a heap library in Python.
Explore heaps as complete binary trees stored in arrays, with max-heap and min-heap behavior; learn inserting by bubbling up, deleting by swapping with the last and heapifying down.
Explore graphs, including undirected and directed forms, with adjacency matrix and adjacency list representations, and learn DFS, memory representations, and search techniques.
Explore graph traversal with depth-first search and breadth-first search in Python. Learn to manage visited nodes and neighbors, and use backtracking or queue-based traversal to uncover connected structures.
This course will start from the very basics of algorithms and data structures and cover all the advanced data structures. We will discuss all the concepts that you need to learn and dive deeper into popular coding questions. You do not need any pre-requisite knowledge in data structures before taking this course. So, if you are a newbie or an advanced programmer looking to refresh your knowledge, this is the course for you. Moreover, it is in Python and the solutions to all the coding problems are given in Python, which makes it more interesting and gives you the opportunity to learn Python as well.
The highlight will be the coding problems that will be explained as well as given as exercise in this course. You will learn the following concepts in this course:
1. Big O
2. Arrays
o Basics
o Traverse an array in reverse
o Traverse from both ends
3. Linked List
o Implementation
o Add and delete nodes
4. Stack
o Implementation
5. Queues
o Implementation
6. Hash Maps
o Implementation
o Hash Functions
7. Binary Trees
o Traversal
o Top to Bottom
o Bottom to Top
8. Binary Search Tree
o Implementation
9. Heap
o Implementation
10. Graphs
o Basics
o DFS
o BFS
11. Tries
o Implementation
The following algorithms will be included in these topics:
- Searching
- Sorting
- Recursion
- Tree Traversal
- Breadth First Search
- Depth First Search
- Dynamic Programming