Welcome to the Data Structures and Algorithms course! Dive into the essential principles and techniques that form the backbone of computer science and software development. This comprehensive course explores the efficient organization, storage, and manipulation of data using various data structures such as arrays, linked lists, stacks, queues, hash tables, trees, and graphs. You will learn how to implement these structures in your code, optimize their performance, and solve complex computational problems through algorithm design and analysis.

Data Structures and Algorithms

Data Structures and Algorithms

Instructor: BITS Pilani Instructors Group
Access provided by New Apprenticeship
What you'll learn
Implement and manipulate data structures (arrays, linked lists, stacks, queues) for efficient data management in software development.
Apply sorting algorithms (quicksort, mergesort, insertion sort) to optimize data organization and retrieval for solving real-world problems.
Design and analyze graph algorithms (BFS, DFS, shortest paths) to address complex network-related challenges in data management.
Utilize tree structures (binary trees, AVL trees) and hash tables for rapid data access and storage, enhancing computational efficiency.
Details to know

Add to your LinkedIn profile
140 assignments
See how employees at top companies are mastering in-demand skills

There are 10 modules in this course
In this module, you will learn how to measure the efficiency of algorithms at design time. More specifically, you will learn about asymptotic notation to represent the efficiency of algorithms in terms of the time and space utilized by your algorithms. You will also revisit C fundamentals with the help of a few basic programs.
What's included
22 videos5 readings8 assignments1 ungraded lab
22 videos• Total 188 minutes
- Meet Your Instructor: Dr. Jagat Sesh Challa• 2 minutes
- Meet Your Instructor: Dr. Sundaresan Raman• 2 minutes
- Module Introduction: Algorithmic Efficiency and Asymptotic Analysis• 1 minute
- Algorithms and Data Structuring• 9 minutes
- Algorithmic Efficiency: Experimental Measurement• 10 minutes
- Algorithmic Efficiency: Design Time Measurement• 13 minutes
- Counting Primitive Operations• 14 minutes
- Asymptotic Analysis and Big-Oh Notation• 11 minutes
- Relatives of Big-Oh• 5 minutes
- Asymptotic Analysis of Prefix Sum• 9 minutes
- Importance of Asymptotics• 12 minutes
- Basic C Program with Loops• 11 minutes
- Functions and Arrays• 7 minutes
- Structures and Array of Structures• 10 minutes
- Pointers• 9 minutes
- Pass by Value vs. Pass by Reference• 8 minutes
- Dynamic Memory Allocation: 1D Arrays• 9 minutes
- Memory Leak• 5 minutes
- Dynamic Memory Allocation: Array of Structures• 11 minutes
- Basic C Program with File Handling: List of Numbers• 14 minutes
- Basic C Program with File Handling: Tuple Data• 15 minutes
- Module Wrap-Up: Algorithmic Efficiency and Asymptotic Analysis• 1 minute
5 readings• Total 90 minutes
- Course Overview• 10 minutes
- Recommended Reading: Measuring Algorithmic Efficiency• 30 minutes
- Recommended Reading: Asymptotic Analysis and Examples• 30 minutes
- Essential Reading: Collection of Basic C Programs• 10 minutes
- Lab Solutions: C Fundamentals• 10 minutes
8 assignments• Total 45 minutes
- Practice Quiz: Algorithms and Data Structuring• 6 minutes
- Practice Quiz: Algorithmic Efficiency: Experimental Measurement• 6 minutes
- Practice Quiz: Algorithmic Efficiency: Design Time Measurement• 6 minutes
- Practice Quiz: Counting Primitive Operations• 6 minutes
- Practice Quiz: Asymptotic Analysis and Big-Oh Notation• 6 minutes
- Practice Quiz: Relatives of Big-Oh• 3 minutes
- Practice Quiz: Asymptotic Analysis of Prefix Sum• 6 minutes
- Practice Quiz: Importance of Asymptotics• 6 minutes
1 ungraded lab• Total 60 minutes
- Practice Lab: C Fundamentals• 60 minutes
In this module, you will learn about linked lists, stacks, and queues, along with their applications to various domains of computing. You will learn to apply them to construct efficient algorithms for various problems. You will also be able to implement these data structures in C.
What's included
27 videos8 readings17 assignments1 discussion prompt3 ungraded labs
27 videos• Total 190 minutes
- Module Introduction: Data Structuring for Algorithm Efficiency and ADTs• 1 minute
- Data Structuring and Modelling• 8 minutes
- Arrays in Memory• 9 minutes
- Linked Lists • 6 minutes
- Linked Lists: Operations I• 8 minutes
- Linked Lists: Operations II• 5 minutes
- Linked Lists: Implementation—Part I• 10 minutes
- Linked Lists: Implementation—Part II• 8 minutes
- Linked Lists: Implementation—Part III• 16 minutes
- Linked Lists: Implementation—Part IV• 6 minutes
- Linked Lists: Implementation—Part V• 11 minutes
- Circular and Doubly Linked Lists• 4 minutes
- Cycle Detection in Linked Lists• 6 minutes
- Abstract Data Types• 7 minutes
- ADT Stack • 8 minutes
- ADT Stack: Applications• 5 minutes
- Array-Based Stack• 7 minutes
- Array-Based Stack: Implementation—Part I• 8 minutes
- Array-Based Stack: Implementation—Part II• 10 minutes
- Linked-List-Based Stack• 3 minutes
- Linked-List-Based Stack: Implementation—Part I• 7 minutes
- Linked-List-Based Stack: Implementation—Part II• 11 minutes
- Principles of ADTs Summarized • 5 minutes
- ADT Queue and its Applications• 7 minutes
- Array-Based Queue• 7 minutes
- Linked-List-Based Queue• 5 minutes
- Module Wrap-Up: Data Structuring for Algorithm Efficiency and ADTs• 1 minute
8 readings• Total 120 minutes
- Essential Reading: Arrays and Linked Lists • 10 minutes
- Essential Reading: Implementations of Linked Lists• 10 minutes
- Essential Reading: Circular and Doubly Linked Lists and Cycle Detection in Linked Lists• 10 minutes
- Essential Reading: Computing Spans Using ADT Stack• 10 minutes
- Essential Reading: Implementations of Stack• 10 minutes
- Essential Reading: Stacks• 30 minutes
- Essential Reading: Queues• 30 minutes
- Lab Solutions: Data Structuring for Algorithm Efficiency and ADTs• 10 minutes
17 assignments• Total 123 minutes
- Practice Quiz: Data Structuring and Modelling• 6 minutes
- Practice Quiz: Arrays in Memory• 6 minutes
- Practice Quiz: Linked Lists• 6 minutes
- Practice Quiz: Linked Lists: Operations I• 6 minutes
- Practice Quiz: Linked Lists: Operations II• 6 minutes
- Practice Quiz: Circular and Doubly Linked Lists• 6 minutes
- Practice Quiz: Cycle Detection in Linked Lists• 6 minutes
- Practice Quiz: Abstract Data Types• 6 minutes
- Practice Quiz: ADT Stack • 6 minutes
- Practice Quiz: ADT Stack: Applications• 3 minutes
- Practice Quiz: Array-based Stack• 6 minutes
- Practice Quiz: Linked-List-based Stack• 6 minutes
- Practice Quiz: Principles of ADTs Summarized • 6 minutes
- Practice Quiz: ADT Queue and Its Applications• 6 minutes
- Practice Quiz: Array-Based Queue• 6 minutes
- Practice Quiz: Linked-List-Based Queue• 6 minutes
- Test Yourself: Algorithmic Efficiency• 30 minutes
1 discussion prompt• Total 30 minutes
- Data Structuring for Algorithm Efficiency and ADTs• 30 minutes
3 ungraded labs• Total 150 minutes
- Practice Lab: Linked Lists Operations• 30 minutes
- Practice Lab: Stack Operations• 60 minutes
- Practice Lab: Queue Operations• 60 minutes
In this module, you will learn about top-down recursive algorithms, with a specific discussion on insertion sort and merge sort algorithms. Specifically, you will understand the recursive and iterative versions of these sorting algorithms along with their derivations of time and space complexities. You will also implement these algorithms on large tuple data read from files and compare the running time of these algorithms. Additionally, you will learn to implement linear and binary search algorithms over arrays.
What's included
23 videos8 readings18 assignments1 discussion prompt3 ungraded labs
23 videos• Total 153 minutes
- Module Introduction: Sorting and Searching• 1 minute
- Divide and Conquer, and Recursion • 11 minutes
- Recursive arrayMax• 8 minutes
- Recursive arrayMax: Time Complexity• 5 minutes
- Insertion Sort: Recursive Version—Part I• 5 minutes
- Insertion Sort: Recursive Version—Part II• 9 minutes
- Recursive Insertion Sort: Time Complexity—Part I• 7 minutes
- Recursive Insertion Sort: Time Complexity—Part II• 5 minutes
- Implementing Recursive Insertion Sort in C and Its Running Time: Part I• 13 minutes
- Implementing Recursive Insertion Sort in C and Its Running Time: Part II• 7 minutes
- Insertion Sort: Iterative Version• 5 minutes
- Merge Sort: Intuition• 8 minutes
- Merge Operation in Merge Sort: Part I• 6 minutes
- Merge Operation in Merge Sort: Part II• 7 minutes
- Merge Sort: Time Complexity• 7 minutes
- Space Complexities of Merge and Insertion Sort: Part I• 10 minutes
- Space Complexities of Merge and Insertion Sort: Part II• 5 minutes
- Merge vs. Insertion Sort• 5 minutes
- Merge Sort Implementation and Its Running Time• 11 minutes
- Linear Search• 2 minutes
- Binary Search• 9 minutes
- Recursion vs. Iteration• 3 minutes
- Module Wrap-Up: Sorting and Searching• 1 minute
8 readings• Total 140 minutes
- Recommended Reading: Analyzing Recursive Algorithms• 30 minutes
- Essential Reading: Implementation of Recursive Insertion Sort• 10 minutes
- Essential Reading: Time Complexity of Iterative Insertion Sort• 10 minutes
- Recommended Reading: Insertion Sort and Analysis• 30 minutes
- Recommended Reading: Merge Sort• 30 minutes
- Essential Reading: Implementation of Recursive Merge Sort• 10 minutes
- Essential Reading: Linear and Binary Search Algorithms• 10 minutes
- Lab Solutions: Sorting and Searching• 10 minutes
18 assignments• Total 87 minutes
- Practice Quiz: Divide and Conquer, and Recursion• 6 minutes
- Practice Quiz: Recursive arrayMax• 3 minutes
- Practice Quiz: Recursive arrayMax: Time Complexity• 3 minutes
- Practice Quiz: Insertion Sort: Recursive Version—Part I• 3 minutes
- Practice Quiz: Insertion Sort: Recursive Version—Part II• 3 minutes
- Practice Quiz: Recursive Insertion Sort: Time Complexity—Part I• 3 minutes
- Practice Quiz: Recursive Insertion Sort: Time Complexity—Part II• 6 minutes
- Practice Quiz: Insertion Sort: Iterative Version• 6 minutes
- Practice Quiz: Merge Sort: Intuition• 6 minutes
- Practice Quiz: Merge Operation in Merge Sort: Part I• 3 minutes
- Practice Quiz: Merge Operation in Merge Sort: Part II• 3 minutes
- Practice Quiz: Merge Sort: Time Complexity• 6 minutes
- Practice Quiz: Space Complexities of Merge and Insertion Sort: Part I• 6 minutes
- Practice Quiz: Space Complexities of Merge and Insertion Sort: Part II• 6 minutes
- Practice Quiz: Merge vs. Insertion Sort• 6 minutes
- Practice Quiz: Linear Search• 6 minutes
- Practice Quiz: Binary Search• 6 minutes
- Practice Quiz: Recursion vs. Iteration• 6 minutes
1 discussion prompt• Total 30 minutes
- Sorting and Searching• 30 minutes
3 ungraded labs• Total 180 minutes
- Practice Lab: Iterative Insertion Sort and its Running Time• 60 minutes
- Practice Lab: Insertion Sort vs. Merge Sort: Running Time• 60 minutes
- Practice Lab: Linear Search vs. Binary Search (Iterative) - Running Time• 60 minutes
In this module, you will learn about the quick sort algorithm, implement it and analyze its time complexity. You will additionally study a summary of comparison-based sorting algorithms, along with their lower bound time complexity. You will also learn non-comparison-based sorting algorithms, such as bucket sort and radix sort, along with their complexity analysis and implementation.
What's included
14 videos5 readings12 assignments1 programming assignment1 discussion prompt2 ungraded labs
14 videos• Total 82 minutes
- Module Introduction: More Sorting• 1 minute
- Quick Sort: Intuition• 9 minutes
- Quick Sort: Algorithm• 8 minutes
- Quick Sort: Time Complexity—Part I• 4 minutes
- Quick Sort: Time Complexity—Part II• 6 minutes
- Pivot Selection Techniques • 5 minutes
- Quick Sort Implementation• 12 minutes
- Sorting Smaller Lists• 6 minutes
- Comparing Comparison-Based Sorting Algorithms• 6 minutes
- Lower Bound on Comparison-Based Sorting• 6 minutes
- Bucket Sort• 7 minutes
- Stability of Sorting• 4 minutes
- Radix Sort• 6 minutes
- Module Wrap-Up: More Sorting• 1 minute
5 readings• Total 110 minutes
- Recommended Reading: Quick Sort• 30 minutes
- Essential Reading: Implementation of Quick Sort• 10 minutes
- Recommended Reading: Analysis of Comparison-Based Sorting Algorithms• 30 minutes
- Recommended Reading: Other Sorting Algorithms• 30 minutes
- Lab Solutions: Sorting• 10 minutes
12 assignments• Total 93 minutes
- Practice Quiz: Quick Sort: Intuition• 6 minutes
- Practice Quiz: Quick Sort: Algorithm• 6 minutes
- Practice Quiz: Quick Sort: Time Complexity—Part I• 6 minutes
- Practice Quiz: Quick Sort: Time Complexity—Part II• 3 minutes
- Practice Quiz: Pivot Selection Techniques• 6 minutes
- Practice Quiz: Sorting Smaller Lists• 6 minutes
- Practice Quiz: Comparing Comparison-Based Sorting Algorithms• 6 minutes
- Practice Quiz: Lower Bound on Comparison-Based Sorting• 6 minutes
- Practice Quiz: Bucket Sort• 6 minutes
- Practice Quiz: Stability of Sorting• 6 minutes
- Practice Quiz: Radix Sort• 6 minutes
- Test Yourself: Sorting and Searching• 30 minutes
1 programming assignment• Total 60 minutes
- Lab: Sorting• 60 minutes
1 discussion prompt• Total 30 minutes
- More Sorting• 30 minutes
2 ungraded labs• Total 120 minutes
- Practice Lab: Comparing Running Times of Comparison-Based Sorting Algorithms• 60 minutes
- Practice Lab: Bucket and Radix Sort on Numerical Data• 60 minutes
In this module, you will learn about dictionary ADT s, hash tables, and binary trees. You will understand various hashing schemes, such as linear chaining and open addressing, and analyze their performance for large data. You will also gain insights into binary trees, tree traversals, and their implementations.
What's included
16 videos6 readings14 assignments1 discussion prompt2 ungraded labs
16 videos• Total 108 minutes
- Module Introduction: Dictionaries, Hash Tables, and Binary Trees• 1 minute
- Dictionary ADT• 5 minutes
- A Dictionary Case• 10 minutes
- Hash Tables with Linear Chaining• 7 minutes
- Analysis of Hashing with Linear Chaining• 6 minutes
- Hash Functions: Hash-Code Maps• 6 minutes
- Hash Functions: Compression Maps• 5 minutes
- Open Addressing with Linear Probing• 14 minutes
- Double Hashing• 9 minutes
- Trees: Definitions and Examples• 6 minutes
- Binary Tree with Examples• 5 minutes
- Types and Properties of Binary Trees• 8 minutes
- Tree ADT• 8 minutes
- Tree Traversals• 11 minutes
- Building Binary Trees from Tree Traversals• 7 minutes
- Module Wrap-Up: Dictionaries, Hash Tables, and Binary Trees• 1 minute
6 readings• Total 140 minutes
- Recommended Reading: Dictionary ADT• 30 minutes
- Recommended Reading: Hash Tables and Analysis• 30 minutes
- Recommended Reading: Open Addressing• 30 minutes
- Essential Reading: Binary Tree Implementation• 10 minutes
- Recommended Reading: Trees and Tree Traversals• 30 minutes
- Lab Solutions: Dictionaries, Hash Tables, and Binary Trees• 10 minutes
14 assignments• Total 78 minutes
- Practice Quiz: Dictionary ADT• 6 minutes
- Practice Quiz: A Dictionary Case• 6 minutes
- Practice Quiz: Hash Tables with Linear Chaining• 6 minutes
- Practice Quiz: Analysis of Hashing with Linear Chaining• 6 minutes
- Practice Quiz: Hash Functions: Hash-Code Maps• 6 minutes
- Practice Quiz: Hash Functions: Compression Maps• 3 minutes
- Practice Quiz: Open Addressing with Linear Probing• 6 minutes
- Practice Quiz: Double Hashing• 6 minutes
- Practice Quiz: Trees: Definitions and Examples• 6 minutes
- Practice Quiz: Binary Tree with Examples• 6 minutes
- Practice Quiz: Types and Properties of Binary Trees• 6 minutes
- Practice Quiz: Tree ADT• 3 minutes
- Practice Quiz: Tree Traversals• 6 minutes
- Practice Quiz: Building Binary Trees from Tree Traversals• 6 minutes
1 discussion prompt• Total 30 minutes
- Dictionaries, Hash Tables, and Binary Trees• 30 minutes
2 ungraded labs• Total 120 minutes
- Practice Lab: Hashing Large Files: Line Chaining and Probing• 60 minutes
- Practice Lab: Tree Traversals• 60 minutes
In this module, you will learn to use binary search trees and AVL trees as dictionaries. You will learn to implement them and store large tuple data. You would also be able to compare the search performance of both the trees averaged over large datasets. Additionally, you would be able to derive the best and worst-case complexities of search, insert, and delete in binary search trees (BST s) and AVL trees.
What's included
22 videos5 readings18 assignments1 discussion prompt1 ungraded lab
22 videos• Total 124 minutes
- Module Introduction: Binary Search Trees and AVL Trees• 1 minute
- Binary Search Trees: Intuition and Search• 9 minutes
- Min, Max, Successor and Predecessor in BSTs• 5 minutes
- BST Insertion• 5 minutes
- BST Deletion• 5 minutes
- BST Sort• 5 minutes
- BST: Summary of Time Complexities• 4 minutes
- BST Implementation: Part I• 12 minutes
- BST Implementation: Part II• 6 minutes
- BST Implementation: Part III• 13 minutes
- AVL Trees: Motivation, Intuition, and Examples• 8 minutes
- AVL Tree: Structure• 4 minutes
- AVL Tree: Insertion—Part I• 8 minutes
- AVL Tree: Insertion—Part II• 6 minutes
- AVL Tree: Insertion—Part III• 9 minutes
- AVL Tree: Insertion—Part IV• 5 minutes
- AVL Tree: Deletion—Part I• 4 minutes
- AVL Tree: Deletion—Part II• 4 minutes
- AVL Tree: Deletion—Part III• 5 minutes
- Time Complexities of AVL Tree• 3 minutes
- Benefits of AVL Tree: Summary• 3 minutes
- Module Wrap-Up: Binary Search Trees and AVL Trees• 1 minute
5 readings• Total 90 minutes
- Recommended Reading: Binary Search Trees• 30 minutes
- Essential Reading: Implementation of BST• 10 minutes
- Lab Solution: Binary Search Trees• 10 minutes
- Recommended Reading: AVL Trees• 30 minutes
- Essential Reading: Implementation of AVL Trees• 10 minutes
18 assignments• Total 105 minutes
- Practice Quiz: Binary Search Trees: Intuition and Search• 6 minutes
- Practice Quiz: Min, Max, Successor and Predecessor in BSTs• 6 minutes
- Practice Quiz: BST Insertion• 6 minutes
- Practice Quiz: BST Deletion• 6 minutes
- Practice Quiz: BST Sort• 3 minutes
- Practice Quiz: BST: Summary of Time Complexities• 6 minutes
- Practice Quiz: AVL Trees: Motivation, Intuition, and Examples• 6 minutes
- Practice Quiz: AVL Tree: Structure• 6 minutes
- Practice Quiz: AVL Tree: Insertion—Part I• 3 minutes
- Practice Quiz: AVL Tree: Insertion—Part II• 3 minutes
- Practice Quiz: AVL Tree: Insertion—Part III• 3 minutes
- Practice Quiz: AVL Tree: Insertion—Part IV• 3 minutes
- Practice Quiz: AVL Tree: Deletion—Part I• 3 minutes
- Practice Quiz: AVL Tree: Deletion—Part II• 3 minutes
- Practice Quiz: AVL Tree: Deletion—Part III• 3 minutes
- Practice Quiz: Time Complexities of AVL Tree• 6 minutes
- Practice Quiz: Benefits of AVL Tree: Summary• 3 minutes
- Test Yourself: Dictionaries, Hash Tables, and Binary Trees• 30 minutes
1 discussion prompt• Total 30 minutes
- Binary Search Trees and AVL Trees• 30 minutes
1 ungraded lab• Total 60 minutes
- Practice Lab: BST Delete and BST Sort • 60 minutes
In this module, you will learn about priority queues abstract data type (ADT ) and various kinds of tries. You will also learn to implement heaps for priority queues and use them to find efficient tries for file compression. Additionally, you will learn about tries, compressed tries, and suffix trees, along with their applications to various domains of computer science.
What's included
20 videos6 readings15 assignments1 programming assignment1 discussion prompt2 ungraded labs
20 videos• Total 131 minutes
- Module Introduction: Priority Queues and Tries• 1 minute
- Priority Queues: Motivation• 7 minutes
- Heap as a Priority Queue• 7 minutes
- Implementing a Heap• 5 minutes
- Insertion in a Heap• 5 minutes
- Delete Min, Heapify in a Heap• 6 minutes
- Building Heap and Time Complexity of Heap Operations• 5 minutes
- Heap Sort• 2 minutes
- Implementing Heaps: Part I• 21 minutes
- Implementing Heaps: Part II• 11 minutes
- Implementing Heaps: Part III• 4 minutes
- Standard Tries • 7 minutes
- Compressed Tries• 8 minutes
- Applications of Tries• 6 minutes
- Suffix Trees• 8 minutes
- Suffix Trees Applications• 6 minutes
- File Compression with an Encoding Trie• 8 minutes
- Optimal Compression with Huffman Encoding Trie• 9 minutes
- Using Priority Queues to Implement Huffman Encoding Tries• 4 minutes
- Module Wrap-Up: Priority Queues and Tries • 1 minute
6 readings• Total 140 minutes
- Recommended Reading: Priority Queues and Heaps• 30 minutes
- Recommended Reading: More on Heaps• 30 minutes
- Essential Reading: Implementation of Heaps• 10 minutes
- Recommended Reading: Tries and Suffix Trees• 30 minutes
- Recommended Reading: Huffman Encoding Tries• 30 minutes
- Lab Solutions: Priority Queues and Tries• 10 minutes
15 assignments• Total 66 minutes
- Practice Quiz: Priority Queues: Motivation• 6 minutes
- Practice Quiz: Heap as a Priority Queue• 6 minutes
- Practice Quiz: Implementing a Heap• 3 minutes
- Practice Quiz: Insertion in a Heap• 6 minutes
- Practice Quiz: Delete Min, Heapify in a Heap• 3 minutes
- Practice Quiz: Building Heap and Time Complexity of Heap Operations• 3 minutes
- Practice Quiz: Heap Sort• 6 minutes
- Practice Quiz: Standard Tries • 6 minutes
- Practice Quiz: Compressed Tries• 6 minutes
- Practice Quiz: Applications of Tries• 6 minutes
- Practice Quiz: Suffix Tries• 3 minutes
- Practice Quiz: Suffix Tries Applications• 3 minutes
- Practice Quiz: File Compression with an Encoding Trie• 3 minutes
- Practice Quiz: Optimal Compression with Huffman Encoding Trie• 3 minutes
- Practice Quiz: Using Priority Queues to Implement Huffman Encoding Tries• 3 minutes
1 programming assignment• Total 60 minutes
- Graded Lab: Priority Queues and Tries• 60 minutes
1 discussion prompt• Total 30 minutes
- Priority Queues and Tries • 30 minutes
2 ungraded labs• Total 120 minutes
- Practice Lab: Heap Operations and Applications• 60 minutes
- Practice Lab: Huffman Encoding Trie with a Priority Queue• 60 minutes
In this module, you will learn the fundamentals of graphs, the data structures used to represent them, and the breadth-first graph traversal algorithm. You will learn to use the breadth-first graph traversal to solve a few computational problems related to graphs, such as checking for bipartite graphs and counting the connected components. You will also be able to implement breadth-first traversal efficiently using the appropriate data structure.
What's included
17 videos4 readings14 assignments1 discussion prompt1 ungraded lab
17 videos• Total 140 minutes
- Module Introduction: Graphs and Graph Traversals• 1 minute
- Graphs and Applications• 8 minutes
- Graph Terminologies: Part I• 4 minutes
- Graph Terminologies: Part II• 8 minutes
- Graph ADT• 9 minutes
- Data Structures for Graph, Edge List• 8 minutes
- Adjacency List and Adjacency Matrix• 10 minutes
- Comparing Graph Representations• 10 minutes
- Breadth-First Search: Intuition with an Example• 8 minutes
- BFS Algorithm and Running Time• 12 minutes
- BFS Tree• 10 minutes
- BFS Applications: Connected Components• 7 minutes
- Checking for a Bipartite Graph: Part I• 8 minutes
- Checking for a Bipartite Graph: Part II• 9 minutes
- BFS Implementation Using Adjacency List: Part I• 16 minutes
- BFS Implementation using Adjacency List: Part II• 11 minutes
- Module Wrap-Up: Graphs and Graph Traversals• 1 minute
4 readings• Total 80 minutes
- Recommended Reading: Graph ADT and Representations• 30 minutes
- Recommended Reading: Breadth-First Search• 30 minutes
- Essential Reading: BFS Implementation Using an Adjacency List• 10 minutes
- Lab Solution: Graphs and Graph Traversals• 10 minutes
14 assignments• Total 96 minutes
- Practice Quiz: Graphs and Applications• 3 minutes
- Practice Quiz: Graph Terminologies: Part I• 6 minutes
- Practice Quiz: Graph Terminologies: Part II• 6 minutes
- Practice Quiz: Graph ADT• 6 minutes
- Practice Quiz: Data Structures for Graph, Edge List• 3 minutes
- Practice Quiz: Adjacency List and Adjacency Matrix• 6 minutes
- Practice Quiz: Comparing Graph Representations• 3 minutes
- Practice Quiz: Breadth-First Search: Intuition with an Example• 6 minutes
- Practice Quiz: BFS Algorithm and Running Time• 6 minutes
- Practice Quiz: BFS Tree• 6 minutes
- Practice Quiz: BFS Applications: Connected Components• 6 minutes
- Practice Quiz: Checking for a Bipartite Graph: Part I• 6 minutes
- Practice Quiz: Checking for a Bipartite Graph: Part II• 3 minutes
- Test Yourself: Priority Queues, Tries, Graphs and Graph Traversals• 30 minutes
1 discussion prompt• Total 30 minutes
- Graphs and Graph Traversals• 30 minutes
1 ungraded lab• Total 60 minutes
- Practice Lab: BFS Implementation Using Adjacency Matrix• 60 minutes
In this module, you will learn about depth-first traversal in graphs and its applications to graph-related problems. You will learn to analyze its complexity and implement it efficiently. You will understand the minimum spanning trees (MST) problem in weighted graphs and study Kruskal’s algorithm that computes MST from a weighted graph. You will additionally learn to optimize the time complexity of Kruskal’s algorithm using the union-find data structure and implement it.
What's included
19 videos6 readings15 assignments1 discussion prompt1 ungraded lab
19 videos• Total 131 minutes
- Module Introduction: Depth-First Search and MST in Weighted Graphs• 1 minute
- Depth First Search: Intuition and Applications• 8 minutes
- DFS Examples and Predecessor Subgraph• 5 minutes
- DFS Algorithm and Complexity• 6 minutes
- Biconnectivity• 11 minutes
- DFS in a Directed Graph• 10 minutes
- Detecting Cycles in a Directed Graph• 4 minutes
- Topological Ordering• 3 minutes
- Strongly Connected Components in a Directed Graph• 7 minutes
- Iterative DFS Implementation Using Adjacency List• 19 minutes
- Recursive DFS Implementation Using Adjacency List• 15 minutes
- Minimum Spanning Tree: Intuition and Applications• 4 minutes
- Minimum Spanning Tree: Properties• 11 minutes
- Kruskal’s MST Algorithm: Illustration• 6 minutes
- Kruskal’s MST Algorithm: Pseudo-Code• 3 minutes
- Kruskal’s MST Algorithm: Time Complexity• 5 minutes
- Union-Find Data Structure• 9 minutes
- Improved Time Complexity of Kruskal’s Algorithm• 4 minutes
- Module Wrap-Up: Depth-First Search and MST in Weighted Graphs• 1 minute
6 readings• Total 140 minutes
- Recommended Reading: Depth First Search and Its Applications• 30 minutes
- Recommended Reading: Depth First Search in a Directed Graph and Its Applications• 30 minutes
- Essential Reading: DFS Implementation using Adjacency List• 10 minutes
- Lab Solutions: DFS Implementation using Adjacency Matrix• 10 minutes
- Recommended Reading 3: Kruskal’s MST Algorithm • 30 minutes
- Recommended Reading: Disjoint-Set Data Structure• 30 minutes
15 assignments• Total 81 minutes
- Practice Quiz: Depth First Search: Intuition and Applications• 6 minutes
- Practice Quiz: DFS Examples and Predecessor Subgraph• 6 minutes
- Practice Quiz: DFS Algorithm and Complexity• 6 minutes
- Practice Quiz: Biconnectivity• 3 minutes
- Practice Quiz: DFS in a Directed Graph• 6 minutes
- Practice Quiz: Detecting Cycles in a Directed Graph• 6 minutes
- Practice Quiz: Topological Ordering• 6 minutes
- Practice Quiz: Strongly Connected Components in a Directed Graph• 6 minutes
- Practice Quiz: Minimum Spanning Tree: Intuition and Applications• 3 minutes
- Practice Quiz: Minimum Spanning Tree: Properties• 3 minutes
- Practice Quiz: Kruskal’s MST Algorithm: Illustration• 6 minutes
- Practice Quiz: Kruskal’s MST Algorithm: Pseudocode• 6 minutes
- Practice Quiz: Kruskal’s MST Algorithm: Time Complexity• 6 minutes
- Practice Quiz: Union-Find Data Structure• 6 minutes
- Practice Quiz: Improved Time Complexity of Kruskal’s Algorithm• 6 minutes
1 discussion prompt• Total 30 minutes
- Depth-First Search and MST in Weighted Graphs• 30 minutes
1 ungraded lab• Total 60 minutes
- Practice Lab: DFS Implementation using Adjacency Matrix• 60 minutes
In this module, you will learn about Prim’s algorithm for computing the minimum spanning tree in a weighted graph. Additionally, you will also learn about Dijkstra’s algorithm to compute “single-source shortest paths.” You will also learn about the Bellman-Ford algorithm to compute “single-source shortest paths” in graphs with negative edge weights. You will also be able to implement these algorithms and analyze their time complexities.
What's included
14 videos6 readings9 assignments1 ungraded lab
14 videos• Total 108 minutes
- Module Introduction: Prim’s MST Algorithm and Single Source Shortest Paths• 1 minute
- Prim’s MST Algorithm: Illustration• 9 minutes
- Prim’s MST Algorithm: Pseudo-Code and Time Complexity• 7 minutes
- Shortest Paths in a Weighted Graph: Intuition and Properties • 10 minutes
- Single Source Shortest Paths: Brute Force Approach• 6 minutes
- Dijkstra’s SSSP Algorithm: Intuition and Illustration• 13 minutes
- Dijkstra’s SSSP Algorithm: Pseudo-Code and Complexity• 5 minutes
- Implementing Dijkstra’s SSSP Algorithm: Part I• 12 minutes
- Implementing Dijkstra’s SSSP Algorithm: Part II• 7 minutes
- Implementing Dijkstra’s SSSP Algorithm: Part III• 16 minutes
- Implementing Dijkstra’s SSSP Algorithm: Part IV• 8 minutes
- Limitations of Dijkstra’s SSSP Algorithm• 9 minutes
- Bellman-Ford's SSSP Algorithm• 5 minutes
- Module Wrap-Up: Prim’s MST Algorithm and Single Source Shortest Paths• 1 minute
6 readings• Total 120 minutes
- Recommended Reading: Prim’s MST Algorithm• 30 minutes
- Recommended Reading: Dijkstra’s SSSP Algorithm• 30 minutes
- Essential Reading: Implementation of Dijkstra’s Algorithm• 10 minutes
- Lab Solution: Implementation of Prim’s MST Algorithm• 10 minutes
- Recommended Reading: Bellman-Ford SSSP Algorithm• 30 minutes
- Course Summary Slides • 10 minutes
9 assignments• Total 78 minutes
- Practice Quiz: Prim’s MST Algorithm: Illustration• 6 minutes
- Practice Quiz: Prim’s MST Algorithm: Pseudo-Code and Time Complexity• 6 minutes
- Practice Quiz: Shortest Paths in a Weighted Graph: Intuition and Properties • 6 minutes
- Single Source Shortest Paths: Brute Force Approach• 6 minutes
- Practice Quiz: Dijkstra’s SSSP Algorithm: Intuition and Illustration• 6 minutes
- Practice Quiz: Dijkstra’s SSSP Algorithm: Pseudo-Code and Complexity• 6 minutes
- Practice Quiz: Limitations of Dijkstra’s SSSP Algorithm• 6 minutes
- Practice Quiz: Bellman-Ford's SSSP Algorithm• 6 minutes
- Test Yourself: Depth-First Search, MST in Weighted Graphs and Single-Source Shortest Paths• 30 minutes
1 ungraded lab• Total 60 minutes
- Practice Lab: Implementation of Prim’s MST Algorithm• 60 minutes
Instructor

Offered by

Offered by

Birla Institute of Technology & Science, Pilani (BITS Pilani) is one of only ten private universities in India to be recognised as an Institute of Eminence by the Ministry of Human Resource Development, Government of India. It has been consistently ranked high by both governmental and private ranking agencies for its innovative processes and capabilities that have enabled it to impart quality education and emerge as the best private science and engineering institute in India. BITS Pilani has four international campuses in Pilani, Goa, Hyderabad, and Dubai, and has been offering bachelor's, master’s, and certificate programmes for over 58 years, helping to launch the careers for over 1,00,000 professionals.
Why people choose Coursera for their career

Felipe M.

Jennifer J.

Larry W.

Chaitanya A.
Explore more from Computer Science

Course
UUniversity of California San Diego
Course

