
Learn how data structures organize data for fast access and updates, and explore abstract data types that define interfaces without revealing implementation details.
Explore static and dynamic arrays, their memory layout, indexing, and common operations; learn how dynamic arrays resize and why access is constant time while insertion and deletion may be linear.
Explore a doubly linked list implementation in Java, detailing head and tail management, node pointers, and core operations: add, remove, peek, clear, index queries, and iteration.
Explains what a stack is, its push and pop operations, and its LIFO behavior. Shows real-world uses and a preview of implementation, time complexity, and source code.
Explore queues as a linear data structure with front and back, enqueuing and dequeuing, and real-world uses like web servers and graph search, with constant-time peek.
Explore priority queues, their uses, and how heaps enable efficient implementations. Learn about binary heaps, sinking and swimming, poll and add operations, and their complexity implications.
Explore the union find data structure, its find and union operations, and path compression, illustrated with magnets, and see its role in minimum spanning trees, grid percolation, and connectivity.
Explore the union and find operations in the union-find (disjoint set) data structure, including mapping objects to integers, maintaining a parent array, and merging components by root nodes.
Explore preorder, inorder, and postorder traversals of binary trees and binary search trees, and implement level order traversal using a queue for breadth-first search.
Explore the binary search tree source code in Java, covering insertion, removal, contains checks, height, and interactive traversals (preorder, inorder, postorder) with iterators for easy to advanced data structures course.
Explore hash tables and separate chaining as a collision resolution method, using linked lists to store colliding entries, with lookups, insertions, and rehashing explained.
Explore open addressing for hash tables and how probing sequences resolve collisions. Learn about load factor alpha, table size, and probing methods like linear, quadratic, and double hashing.
Data structures are amongst the most fundamental ingredients in the recipe for creating efficient algorithms and good software design. Knowledge of how to create and design good data structures is an essential skill required in becoming an exemplary programmer. This course will teach you how to master the fundamental ideas surrounding data structures.
Learn and master the most common data structures in this comprehensive course:
Static and dynamic arrays
Singly and doubly linked lists
Stacks
Queues
Heaps/Priority Queues
Binary Trees/Binary Search Trees
Union find/Disjoint Set
Hash tables
Fenwick trees
AVL trees
Binary Indexed trees
Sparse tables
Course contents
This course provides you with high quality animated videos explaining a multitude of data structures and how they are represented visually. You will learn how to code various data structures together with simple to follow step-by-step instructions. Every data structure presented will be accompanied by some working source code (in Java) to solidify your understanding of that particular data structure. I will also be posting various coding exercises and multiple choice questions to ensure that you get some hands on experience.