Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Coursera

Data Structures and Algorithms

Birla Institute Of Technology And Science–Pilani (BITS–Pilani) via Coursera

Overview

Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it
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. Master key concepts including sorting algorithms like quicksort, mergesort, and insertion sort, graph algorithms including BFS and DFS for traversals, and shortest path calculations. Understand the intricacies of tree structures such as binary trees and AVL trees, and harness the power of hash tables for fast data access and storage. The course emphasizes real-world applications, memory management, and performance optimization, equipping you with problem-solving skills crucial for data science, software development, and IT roles. Designed for individuals who are new to data structures or those looking to enhance their computational skills, this course provides a robust foundation for advanced topics in computer science. By the end of this course, you will develop critical thinking, algorithmic problem-solving abilities, and a deeper understanding of data management, enabling you to translate complex computational problems into efficient algorithmic solutions.

Syllabus

  • Algorithmic Efficiency and Asymptotic Analysis
    • 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.
  • Data Structuring for Algorithm Efficiency and ADTs
    • 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.
  • Sorting and Searching
    • 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.
  • More Sorting
    • 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.
  • Dictionaries, Hash Tables, and Binary Trees
    • 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.
  • Binary Search Trees and AVL Trees
    • 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.
  • Priority Queues and Tries
    • 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.
  • Graphs and Graph Traversals
    • 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.
  • Depth-First Search and MST in Weighted Graphs
    • 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.
  • Prim’s MST Algorithm and Single-Source Shortest Paths
    • 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.

Taught by

BITS Pilani Instructors Group

Tags

Reviews

Start your review of Data Structures and Algorithms

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.