Data Structures are an essential topic for developers. All kinds of software and programs we write heavily rely on data and data structures in one way or another. Having a good understanding of data structures is going to be helpful in building robust applications.
Data Structures are an essential topic for developers. All kinds of software and programs we write heavily rely on data and data structures in one way or another. Having a good understanding of data structures is going to be helpful in building robust applications.
In this free illustrated course, you will learn everything you need to know about Data Structures. We will start with the introduction to the data structures, understanding what they are, why we need them, what are the most common data structures and why picking the right data structure is important. With that out of the way, we will learn about the common data structures i.e. Arrays, Linked Lists, Stacks, Queues, Hash Tables, Trees, Heaps, and Graphs. For each of these data structures, we will first learn what the data structure is about, we will look behind the scenes to understand how it works, we will understand the common operations which can be performed on the given data structure, common use cases, and the complexity of different operations on that data structure.
This course also comes with an extra video to give you an introduction to algorithms, algorithmic complexities, common algorithmic complexities, and a comparison between each.
Data structures are the in-memory representation of data. In this first video of the series, we will be looking at the introduction to data structures to understand:
What are Data Structures?
What are the different types of Data Structures?
Why do we need Data Structures?
What are some common Data Structures?
An array is a collection of items where items are stored consecutively. This video will discuss everything you need to know about the array data structure. We start with the introduction to the array data structure, then we discuss how they work in memory. We learn the limitations and see an example of arrays in languages such as C++; after that, we see how the languages such as JavaScript, PHP, or Ruby implement the arrays to go around the limitations of fixed size and single type array values, and then finally we learn about the different operations you can perform on arrays along with the algorithmic complexity. After watching this video, you can answer the following questions:
What are arrays?
How do the arrays work?
What are some of the limitations of arrays?
How can languages such as JavaScript have dynamically sized arrays and mixed-type values?
What are some of the operations you can perform on an array?
What is the algorithmic complexity of those operations?
Linked List is a linear collection of elements where each element points to the next element in the list. In this video, we learn everything about linked lists. We will be learning about what the linked lists are, how they work, what different operations you can perform on the linked list data structure, different types of linked lists, the difference between linked lists and arrays, algorithmic complexity of different linked list operations, and the implementation of Linked List in JavaScript. After watching this video, you will be able to answer the following questions:
What is Linked List?
How do the Linked Lists work?
What are the types of Linked Lists?
What are the operations you can perform on Linked List?
What is the difference between Linked List and Array?
What are Linked Lists good at?
What are Linked Lists not good at?
Stack is a linear collection of items where items are inserted and removed in a particular order. Stack is also called a LIFO Data Structure because it follows the "Last In First Out" principle, i.e., the item that is inserted in the last is the one that is taken out first. In this video, we look at the stack, how it is implemented, the different operations you can perform on a stack, and some real-world usages of Stack. After watching this video, you will be able to answer the following questions:
What is Stack Data Structure?
What is LIFO principle?
What are different operations you can perform on a Stack?
What are some usage examples of Stack?
How to implement stack in JavaScript?
Queue is a linear collection of items where items are inserted and removed in a particular order. The queue is also called a FIFO Data Structure because it follows the "First In, First Out" principle, i.e., the item that is inserted in the first is the one that is taken out first. In this video, we look at the queue, how it is implemented, what different operations you can perform on a queue, and the implementation of Queue in JavaScript. After watching this video, you will be able to answer the following questions:
What is Queue Data Structure?
What is FIFO principle?
What are different operations you can perform on a Queue?
How to implement stack in Queue?
Hash Table, Map, HashMap, Dictionary, or Associative are all the names of the same data structure. It is one of the most commonly used data structures. This video will cover everything you need to know about hash tables. After watching this video, you will be able to answer the following questions:
What is a hash table?
How does the hash table work?
How to implement hash table in JavaScript.
Performance of a hash table.
What is a hashing function?
How to handle collisions in hash tables?
What is separate chaining?
So far in this course, we have looked at arrays, linked lists, stacks, queues, and hash tables, all of which were linear data structures. In this illustrated explanation, we learn about the hierarchical data structure of trees. We cover the basics of trees, some real-world usage of tree data structure, different types of trees, different operations you can perform on the tree data structure and their complexity, and how to traverse a tree. After watching this video, you will be able to answer the following questions:
What is a hierarchical data structure?
What is a tree data structure?
What are nodes, edges, leaf nodes, root nodes, parent nodes, and grandparent nodes in trees?
How to calculate tree height?
How to calculate the node height?
What are the different types of tree data structures?
What is the difference between a binary tree and a binary search tree?
What are the properties of a binary search tree?
How do we search for elements in a tree?
How to insert elements in a tree?
What is the complexity of search and insert operations in trees?
What's the difference between Balanced and Unbalanced Trees?
How to traverse a tree?
Difference between pre-order, in-order, and post-order tree traversal.
Heap is a tree-based data structure that follows the properties of a complete binary tree and is either a Min Heap or a Max Heap. In this video, we will be covering the different types of Binary Tree, the difference between a Full Binary Tree and a Complete Binary Tree, what the heap data structure is, the difference between Min Heap and Max Heap, and different operations you can perform on a heap, algorithmic complexity of heap operations and uses of heap data structure.
A graph is a set of vertices connected through edges. In this video, we learn everything you need to know about Graph Data Structure. After watching this video, you will be able to answer the following questions:
What is graph data structure?
What is the difference between directed and undirected graphs?
What is a path in a graph data structure?
What is a closed path in a graph data structure?
What is a simple path in a graph data structure?
What is a loop in graph data structure?
What is the degree of a node?
How to calculate the degree of a node in the directed graph?
How to calculate the degree of a node in an undirected graph?
What is a cycle graph?
What is a connected graph?
What is a disconnected graph?
What is a complete graph?
What is a weighted graph?
What is a simple graph?
How to represent a graph using an adjacency matrix?
How to represent a graph using an adjacency list?
What are the use cases of graph data structure?
Given below is the list of points you should keep in mind while picking up the programmatic representation of a graph:
Adjacency Matrix:
Removal of an edge can be done in a constant time.
Addition of an edge can be done in a constant time.
Edges can be queried in constant time O(1)
Removal of vertex has quadratic complexity O(n²)
Addition of vertex has quadratic complexity O(n²)
Space complexity is quadratic O(n²)
Adjacency List:
Space complexity is linear O(n)
Adding a vertex takes constant time O(1)
Adding an edge takes constant time O(1)
Removing a vertex takes linear time O(n)
Removing an edge takes linear time O(n)
Querying is linear O(n)
In this video, we look at the algorithmic complexity or asymptotic notation, learn to measure it for any algorithm, and look at some of the common algorithmic complexities. After watching this video, you will be able to answer the following questions:
What is an Algorithm?
What is Algorithmic Complexity?
What are Time Complexity and Space Complexity?
How to measure Time Complexity?
How to measure Space Complexity?
What are Big O, Big Omega, and Big Theta notations?
Why are we most interested in Big O notation over the others?
What is Linear complexity?
What is Quadratic complexity?
What is Constant Complexity?
What is Exponential Complexity?
What is Logarithmic Complexity?
What is the complexity that you should aim for?
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.
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.